Neil Schemenauer
15 years ago
Hi,
It looks like Btrfs does not follow Unix traditions for st_nlink
attribute of directories. It seems to be always one, no matter the
number of sub-directories.
Is this intentional? I couldn't find it discussed anywhere. I
gather the Mac OS HFS+ doesn't follow traditional st_nlink behavior
as well. The 'find' man page has this note:
-noleaf
Do not optimize by assuming that directories contain 2 fewer
subdirectories than their hard link count. This option is
needed when searching filesystems that do not follow the Unix
directory-link convention, such as CD-ROM or MS-DOS filesystems
or AFS volume mount points. Each directory on a normal Unix
filesystem has at least 2 hard links: its name and its `.'
entry. Additionally, its subdirectories (if any) each have a
`..' entry linked to that directory. When find is examining a
directory, after it has statted 2 fewer subdirectories than the
directory's link count, it knows that the rest of the entries in
the directory are non-directories (`leaf' files in the directory
tree). If only the files' names need to be examined, there is
no need to stat them; this gives a significant increase in
search speed.
Regards,
Neil
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
It looks like Btrfs does not follow Unix traditions for st_nlink
attribute of directories. It seems to be always one, no matter the
number of sub-directories.
Is this intentional? I couldn't find it discussed anywhere. I
gather the Mac OS HFS+ doesn't follow traditional st_nlink behavior
as well. The 'find' man page has this note:
-noleaf
Do not optimize by assuming that directories contain 2 fewer
subdirectories than their hard link count. This option is
needed when searching filesystems that do not follow the Unix
directory-link convention, such as CD-ROM or MS-DOS filesystems
or AFS volume mount points. Each directory on a normal Unix
filesystem has at least 2 hard links: its name and its `.'
entry. Additionally, its subdirectories (if any) each have a
`..' entry linked to that directory. When find is examining a
directory, after it has statted 2 fewer subdirectories than the
directory's link count, it knows that the rest of the entries in
the directory are non-directories (`leaf' files in the directory
tree). If only the files' names need to be examined, there is
no need to stat them; this gives a significant increase in
search speed.
Regards,
Neil
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html