summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBharath SM <bharathsm@microsoft.com>2023-07-07 15:29:01 +0000
committerSteve French <stfrench@microsoft.com>2023-07-10 10:37:12 -0500
commitdf9d70c18616760c6504b97fec66b6379c172dbb (patch)
tree0867ab2615b27abbea5ec35a6fc90a9a4deb68b8
parent06c2afb862f9da8dc5efa4b6076a0e48c3fbaaa5 (diff)
downloadlinux-stable-df9d70c18616760c6504b97fec66b6379c172dbb.tar.gz
linux-stable-df9d70c18616760c6504b97fec66b6379c172dbb.tar.bz2
linux-stable-df9d70c18616760c6504b97fec66b6379c172dbb.zip
cifs: if deferred close is disabled then close files immediately
If defer close timeout value is set to 0, then there is no need to include files in the deferred close list and utilize the delayed worker for closing. Instead, we can close them immediately. Signed-off-by: Bharath SM <bharathsm@microsoft.com> Reviewed-by: Shyam Prasad N <sprasad@microsoft.com> Cc: stable@vger.kernel.org Signed-off-by: Steve French <stfrench@microsoft.com>
-rw-r--r--fs/smb/client/file.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/smb/client/file.c b/fs/smb/client/file.c
index 879bc8e6555c..fc5acc95cd13 100644
--- a/fs/smb/client/file.c
+++ b/fs/smb/client/file.c
@@ -1080,8 +1080,8 @@ int cifs_close(struct inode *inode, struct file *file)
cfile = file->private_data;
file->private_data = NULL;
dclose = kmalloc(sizeof(struct cifs_deferred_close), GFP_KERNEL);
- if ((cinode->oplock == CIFS_CACHE_RHW_FLG) &&
- cinode->lease_granted &&
+ if ((cifs_sb->ctx->closetimeo && cinode->oplock == CIFS_CACHE_RHW_FLG)
+ && cinode->lease_granted &&
!test_bit(CIFS_INO_CLOSE_ON_LOCK, &cinode->flags) &&
dclose) {
if (test_and_clear_bit(CIFS_INO_MODIFIED_ATTR, &cinode->flags)) {