[PATCH] Remove file system sharemode before calling unlink

Jeremy Allison jra at samba.org
Tue Jan 16 18:22:03 UTC 2018


On Tue, Jan 16, 2018 at 11:09:23AM -0700, Christof Schmitt wrote:
> On Fri, Jan 12, 2018 at 02:38:23PM -0800, Jeremy Allison via samba-technical wrote:
> > On Fri, Jan 12, 2018 at 11:23:25AM -0700, Christof Schmitt wrote:
> > > On Fri, Jan 12, 2018 at 10:38:50AM -0700, Christof Schmitt wrote:
> > > > On Thu, Jan 11, 2018 at 03:34:47PM -0800, Jeremy Allison wrote:
> > > > > On Wed, Jan 10, 2018 at 04:38:29PM -0700, Christof Schmitt via samba-technical wrote:
> > > > > > From 05c37256483d961a4448239292022ec38d8ff188 Mon Sep 17 00:00:00 2001
> > > > > > From: Christof Schmitt <cs at samba.org>
> > > > > > Date: Wed, 10 Jan 2018 15:56:08 -0700
> > > > > > Subject: [PATCH] Remove file system sharemode before calling unlink
> > > > > > 
> > > > > > GPFS implements the DENY_DELETE sharemode, which prevents unlink() from
> > > > > > deleting the file.. This causes the problem that deleting a file through
> > > > > > "delete on close" fails, as the code in close.c first calls unlink() and
> > > > > > only later removes the file system sharemode.
> > > > > > 
> > > > > > Fix this by removing the file system sharemode before calling unlink().
> > > > > 
> > > > > Hmmm. This opens up a race that could cause the unlink
> > > > > to then fail, if a non-smbd process (i.e. one that ignores
> > > > > the tdb share mode lock) opens the path and sets a sharemode
> > > > > between the SMB_VFS_KERNEL_FLOCK() and SMB_VFS_UNLINK()
> > > > > calls, but I guess failing the unlink in that case is
> > > > > also the right thing to do.
> > > > 
> > > > Yes. The problem is that unlink() is not tied to the current file
> > > > descriptor, so the file system has to treat the unlink() as a sharemode
> > > > conflict.  There is nothing like a funlink() call to get around this...
> > > > 
> > > > > RB+ and I'll push if I can ever get an autobuild working
> > > > > again :-).
> > > > 
> > > > Thank you.
> > > 
> > > I just noticed that we are past the 4.8 branch and this needs to be
> > > fixed in 4.8. Pleasd push the attached patch with a bugzilla link for the
> > > backport.
> > 
> > Will push + bugid in commit message once autobuild is working
> > again.
> > 
> 
> Autobuild seems to be working again. I just pushed the patch myself with
> your RB+

Oh, thanks ! It dropped out of the first page of my inbox, so
I'd forgotten :-).



More information about the samba-technical mailing list