diff options
author | Bharath SM <bharathsm@microsoft.com> | 2024-12-13 22:50:21 +0530 |
---|---|---|
committer | Steve French <stfrench@microsoft.com> | 2024-12-23 08:05:39 -0600 |
commit | b8ea3b1ff544b47c1d64a22860f33b755638164e (patch) | |
tree | 2218590ef537b93250b4c1bce2778d13ded3b97b | |
parent | 4bbf9020becbfd8fc2c3da790855b7042fad455b (diff) | |
download | lwn-b8ea3b1ff544b47c1d64a22860f33b755638164e.tar.gz lwn-b8ea3b1ff544b47c1d64a22860f33b755638164e.zip |
smb: enable reuse of deferred file handles for write operations
Previously, deferred file handles were reused only for read
operations, this commit extends to reusing deferred handles
for write operations. By reusing these handles we can reduce
the need for open/close operations over the wire.
Signed-off-by: Bharath SM <bharathsm@microsoft.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
-rw-r--r-- | fs/smb/client/file.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/smb/client/file.c b/fs/smb/client/file.c index a58a3333ecc3..3b2d33291a7e 100644 --- a/fs/smb/client/file.c +++ b/fs/smb/client/file.c @@ -990,7 +990,11 @@ int cifs_open(struct inode *inode, struct file *file) } /* Get the cached handle as SMB2 close is deferred */ - rc = cifs_get_readable_path(tcon, full_path, &cfile); + if (OPEN_FMODE(file->f_flags) & FMODE_WRITE) { + rc = cifs_get_writable_path(tcon, full_path, FIND_WR_FSUID_ONLY, &cfile); + } else { + rc = cifs_get_readable_path(tcon, full_path, &cfile); + } if (rc == 0) { if (file->f_flags == cfile->f_flags) { file->private_data = cfile; |