diff options
author | Pavel Shilovsky <pshilov@microsoft.com> | 2019-12-10 11:44:52 -0800 |
---|---|---|
committer | Steve French <stfrench@microsoft.com> | 2019-12-13 00:49:57 -0600 |
commit | d9191319358da13ee6a332fb9bf745f2181a612a (patch) | |
tree | 4ab99f916e843ee00f63d7b2c32b062bdef55499 /fs/cifs/cifsglob.h | |
parent | e0fc5b1153b81571d6ff80902a54c3eb13319b33 (diff) | |
download | lwn-d9191319358da13ee6a332fb9bf745f2181a612a.tar.gz lwn-d9191319358da13ee6a332fb9bf745f2181a612a.zip |
CIFS: Close cached root handle only if it has a lease
SMB2_tdis() checks if a root handle is valid in order to decide
whether it needs to close the handle or not. However if another
thread has reference for the handle, it may end up with putting
the reference twice. The extra reference that we want to put
during the tree disconnect is the reference that has a directory
lease. So, track the fact that we have a directory lease and
close the handle only in that case.
Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Diffstat (limited to 'fs/cifs/cifsglob.h')
-rw-r--r-- | fs/cifs/cifsglob.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h index fd0262ce5ad5..ce9bac756c2a 100644 --- a/fs/cifs/cifsglob.h +++ b/fs/cifs/cifsglob.h @@ -1061,7 +1061,7 @@ cap_unix(struct cifs_ses *ses) struct cached_fid { bool is_valid:1; /* Do we have a useable root fid */ bool file_all_info_is_valid:1; - + bool has_lease:1; struct kref refcount; struct cifs_fid *fid; struct mutex fid_mutex; |