Commit 3fc74c65 authored by Namjae Jeon's avatar Namjae Jeon Committed by Steve French
Browse files

ksmbd: send lease break notification on FILE_RENAME_INFORMATION



Send lease break notification on FILE_RENAME_INFORMATION request.
This patch fix smb2.lease.v2_epoch2 test failure.

Signed-off-by: default avatarNamjae Jeon <linkinjeon@kernel.org>
Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
parent d592a915
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -541,14 +541,12 @@ static struct oplock_info *same_client_has_lease(struct ksmbd_inode *ci,
				continue;
			}

			if (lctx->req_state != lease->state)
				lease->epoch++;

			/* upgrading lease */
			if ((atomic_read(&ci->op_count) +
			     atomic_read(&ci->sop_count)) == 1) {
				if (lease->state != SMB2_LEASE_NONE_LE &&
				    lease->state == (lctx->req_state & lease->state)) {
					lease->epoch++;
					lease->state |= lctx->req_state;
					if (lctx->req_state &
						SMB2_LEASE_WRITE_CACHING_LE)
@@ -559,14 +557,18 @@ static struct oplock_info *same_client_has_lease(struct ksmbd_inode *ci,
				    atomic_read(&ci->sop_count)) > 1) {
				if (lctx->req_state ==
				    (SMB2_LEASE_READ_CACHING_LE |
				     SMB2_LEASE_HANDLE_CACHING_LE))
				     SMB2_LEASE_HANDLE_CACHING_LE)) {
					lease->epoch++;
					lease->state = lctx->req_state;
				}
			}

			if (lctx->req_state && lease->state ==
			    SMB2_LEASE_NONE_LE)
			    SMB2_LEASE_NONE_LE) {
				lease->epoch++;
				lease_none_upgrade(opinfo, lctx->req_state);
			}
		}
		read_lock(&ci->m_lock);
	}
	read_unlock(&ci->m_lock);
+1 −0
Original line number Diff line number Diff line
@@ -5569,6 +5569,7 @@ static int smb2_rename(struct ksmbd_work *work,
	if (!file_info->ReplaceIfExists)
		flags = RENAME_NOREPLACE;

	smb_break_all_levII_oplock(work, fp, 0);
	rc = ksmbd_vfs_rename(work, &fp->filp->f_path, new_name, flags);
out:
	kfree(new_name);