summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBharath SM <bharathsm@microsoft.com>2024-12-13 22:50:21 +0530
committerSteve French <stfrench@microsoft.com>2024-12-23 08:05:39 -0600
commitb8ea3b1ff544b47c1d64a22860f33b755638164e (patch)
tree2218590ef537b93250b4c1bce2778d13ded3b97b
parent4bbf9020becbfd8fc2c3da790855b7042fad455b (diff)
downloadlwn-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.c6
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;