Re: [PATCH] CIFS: unlock file across process

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

 



On Fri, Feb 14, 2020 at 11:03:00AM -0800, Pavel Shilovsky wrote:
> Also, please make sure that resulting patch works against Windows file
> share since the locking semantics may be different there.

OK.

> 
> Depending on a kind of lease we have on a file, locks may be cached or
> not. We probably don't want to have different behavior for cached and
> non-cached locks. Especially given the fact that a lease may be broken
> in the middle of app execution and the different behavior will be
> applied immediately.

Testing new patch with and without cache=none option, both samba
and Win2019 server.

Thanks very much for reviewing!

Murphy
> 
> --
> Best regards,
> Pavel Shilovsky
> 
> пт, 14 февр. 2020 г. в 06:30, Murphy Zhou <jencce.kernel@xxxxxxxxx>:
> >
> > On Fri, Feb 14, 2020 at 07:26:46AM -0500, Jeff Layton wrote:
> > > On Fri, 2020-02-14 at 12:35 +0800, Murphy Zhou wrote:
> > > > Now child can't unlock the same file that has been locked by
> > > > parent. Fix this by not skipping unlock if requesting from
> > > > different process.
> > > >
> > > > Patch tested by LTP and xfstests using samba server.
> > > >
> > > > Signed-off-by: Murphy Zhou <jencce.kernel@xxxxxxxxx>
> > > > ---
> > > >  fs/cifs/smb2file.c | 2 --
> > > >  1 file changed, 2 deletions(-)
> > > >
> > > > diff --git a/fs/cifs/smb2file.c b/fs/cifs/smb2file.c
> > > > index afe1f03aabe3..b5bca0e13d51 100644
> > > > --- a/fs/cifs/smb2file.c
> > > > +++ b/fs/cifs/smb2file.c
> > > > @@ -151,8 +151,6 @@ smb2_unlock_range(struct cifsFileInfo *cfile, struct file_lock *flock,
> > > >                 (flock->fl_start + length) <
> > > >                 (li->offset + li->length))
> > > >                     continue;
> > > > -           if (current->tgid != li->pid)
> > > > -                   continue;
> > > >             if (cinode->can_cache_brlcks) {
> > > >                     /*
> > > >                      * We can cache brlock requests - simply remove a lock
> > >
> > > I'm not as familiar with this code as I once was, but...
> > >
> > > From fork(2) manpage:
> > >
> > >        *  The  child does not inherit process-associated record locks from its
> > >           parent (fcntl(2)).  (On the other hand,  it  does  inherit  fcntl(2)
> > >           open file description locks and flock(2) locks from its parent.)
> > >
> > > It looks like cifs_setlk calls mand_unlock_range, and that gets called
> > > from both fcntl and flock codepaths.
> > >
> > > So, I'm not sure about just removing this. It seems like the pid check
> > > is probably correct for traditional posix locks, but probably not for
> > > OFD and flock locks? What ensures that completely unrelated tasks can't
> > > unlock your locks?
> >
> > You are right Jeff. Just removing this is not right. We need to handle
> > at least 3 types of locks: posix, OFD and flock.
> >
> > Thanks very much for reviewing! I'll try to sort this out.
> > > --
> > > Jeff Layton <jlayton@xxxxxxxxxx>
> > >



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

  Powered by Linux