diff options
author | 2018-06-14 06:48:35 +1000 | |
---|---|---|
committer | 2018-06-15 02:38:07 -0500 | |
commit | a93864d93977b99bda6c348a09b90a3d7ef8db3a (patch) | |
tree | 30d488812c67cb68adce979d2b642756e9281a37 /fs/cifs/misc.c | |
parent | smb3: note that smb3.11 posix extensions mount option is experimental (diff) | |
download | linux-a93864d93977b99bda6c348a09b90a3d7ef8db3a.tar.gz linux-a93864d93977b99bda6c348a09b90a3d7ef8db3a.tar.bz2 linux-a93864d93977b99bda6c348a09b90a3d7ef8db3a.zip |
cifs: add lease tracking to the cached root fid
Use a read lease for the cached root fid so that we can detect
when the content of the directory changes (via a break) at which time
we close the handle. On next access to the root the handle will be reopened
and cached again.
Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Diffstat (limited to 'fs/cifs/misc.c')
-rw-r--r-- | fs/cifs/misc.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c index af29ade195c0..bb40f3c050f6 100644 --- a/fs/cifs/misc.c +++ b/fs/cifs/misc.c @@ -117,8 +117,9 @@ tconInfoAlloc(void) INIT_LIST_HEAD(&ret_buf->openFileList); INIT_LIST_HEAD(&ret_buf->tcon_list); spin_lock_init(&ret_buf->open_file_lock); - mutex_init(&ret_buf->prfid_mutex); - ret_buf->prfid = kzalloc(sizeof(struct cifs_fid), GFP_KERNEL); + mutex_init(&ret_buf->crfid.fid_mutex); + ret_buf->crfid.fid = kzalloc(sizeof(struct cifs_fid), + GFP_KERNEL); #ifdef CONFIG_CIFS_STATS spin_lock_init(&ret_buf->stat_lock); #endif @@ -136,7 +137,7 @@ tconInfoFree(struct cifs_tcon *buf_to_free) atomic_dec(&tconInfoAllocCount); kfree(buf_to_free->nativeFileSystem); kzfree(buf_to_free->password); - kfree(buf_to_free->prfid); + kfree(buf_to_free->crfid.fid); kfree(buf_to_free); } |