On Friday 08 November 2013 06:24:01 cwillu wrote: > On Fri, Nov 8, 2013 at 5:07 AM, Andreas Schneider <asn@xxxxxxxxxxxxxx> 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@xxxxxxxxxxxxxx -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
