btrfs and default directory link count

Andreas Schneider asn at cryptomilk.org
Fri Nov 8 07:11:41 MST 2013


On Friday 08 November 2013 06:24:01 cwillu wrote:
> On Fri, Nov 8, 2013 at 5:07 AM, Andreas Schneider <asn at cryptomilk.org> 
wrote:
> > Hello,
> > 
> > I did run the Samba testsuite and have a failing test
> > (samba.vfstest.stream_depot). It revealed that it only fails on btrfs. The
> > reason is that a simple check fails:
> > 
> > if (smb_fname_base->st.st_ex_nlink == 2)
> > 
> > If you create a directory on btrfs and check stat:
> > 
> > $ mkdir x
> > $ stat x
> > 
> >   File: ‘x’
> >   Size: 0               Blocks: 0          IO Block: 4096   directory
> > 
> > Device: 2bh/43d Inode: 3834720     Links: 1
> > Access: (0755/drwxr-xr-x)  Uid: ( 1000/     asn)   Gid: (  100/   users)
> > Access: 2013-11-08 11:54:32.431040963 +0100
> > Modify: 2013-11-08 11:54:32.430040956 +0100
> > Change: 2013-11-08 11:54:32.430040956 +0100
> > 
> >  Birth: -
> > 
> > then you see Links: 1. On ext4 or other filesystems:
> > 
> > mkdir x
> > stat x
> > 
> >   File: ‘x’
> >   Size: 4096            Blocks: 8          IO Block: 4096   directory
> > 
> > Device: fd00h/64768d    Inode: 8126886     Links: 2
> > Access: (0755/drwxr-xr-x)  Uid: ( 1000/     asn)   Gid: (  100/   users)
> > Access: 2013-11-08 11:54:55.428212340 +0100
> > Modify: 2013-11-08 11:54:55.427212319 +0100
> > Change: 2013-11-08 11:54:55.427212319 +0100
> > 
> >  Birth: -
> > 
> > the link count for a directory differs: Links: 2.
> > 
> > Why is btrfs different here? Could someone explain this?
> 
> As I understand it, inferring the number of directory entries from
> st_nlink is an optimization that isn't universally valid. If that
> count is 1, it must be considered invalid, and programs that don't
> handle this correctly are broken.  Coreutils handle this, at least...

Thanks for the explanation, I will fix our code.


	-- andreas

-- 
Andreas Schneider                   GPG-ID: CC014E3D
www.cryptomilk.org                asn at cryptomilk.org



More information about the samba-technical mailing list