Re: btrfs and default directory link count

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

 



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...
--
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




[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux