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