Re: [PATCH] smb: enable reuse of deferred file handles for write operations

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Dec 17, 2024 at 2:22 AM Steve French <smfrench@xxxxxxxxx> wrote:
>
> merged into cifs-2.6.git for-next pending review and more testing
>
> On Mon, Dec 16, 2024 at 12:36 PM Bharath SM <bharathsm.hsk@xxxxxxxxx> wrote:
> >
> > Previously, deferred file handles were reused only for read
> > operations, this commit extends to reusing deferred handles
> > for write operations.
> >
> > Signed-off-by: Bharath SM <bharathsm@xxxxxxxxxxxxx>
> > ---
> >  fs/smb/client/file.c | 6 +++++-
> >  1 file changed, 5 insertions(+), 1 deletion(-)
> >
> > diff --git a/fs/smb/client/file.c b/fs/smb/client/file.c
> > index a58a3333ecc3..98deff1de74c 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_ANY, &cfile);

Wondering if FIND_WR_ANY is okay for all use cases?
Specifically, I'm checking where FIND_WR_FSUID_ONLY is relevant.
@Steve French Is this for multiuser mounts? I don't think so, since
multiuser mounts come with their own tcon, and we search writable
files in our tcon's open list.

> > +       } else {
> > +               rc = cifs_get_readable_path(tcon, full_path, &cfile);
> > +       }
> >         if (rc == 0) {
> >                 if (file->f_flags == cfile->f_flags) {
> >                         file->private_data = cfile;
> > --
> > 2.43.0
> >
> >
>
>
> --
> Thanks,
>
> Steve
>
Other than that one thing to look at, the changes look good to me.

-- 
Regards,
Shyam





[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux