xfs
[Top] [All Lists]

Re: Directory link count wrapping on Linux/XFS/i386?

To: David Malone <dwmalone@xxxxxxxxxxxx>
Subject: Re: Directory link count wrapping on Linux/XFS/i386?
From: Andreas Dilger <adilger@xxxxxxxxxxxxx>
Date: Wed, 30 Mar 2005 13:06:01 -0700
Cc: linux-xfs@xxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
In-reply-to: <200503302043.aa27223@xxxxxxxxxxxxxxxxxxx>
Mail-followup-to: David Malone <dwmalone@xxxxxxxxxxxx>, linux-xfs@xxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
References: <200503302043.aa27223@xxxxxxxxxxxxxxxxxxx>
Sender: linux-xfs-bounce@xxxxxxxxxxx
User-agent: Mutt/1.4.1i
On Mar 30, 2005  20:43 +0100, David Malone wrote:
> It seems that internally xfs uses a 32 bit field for the link count,
> and the stat64 syscalls use a 32 bit field. These fields are copied
> via the vattr structure in xfs_vnode.h, which uses a nlink_t for
> the link count. However, in the kernel, I think this field is
> actually of type __kernel_nlink_t which seems to be 16 bits on many
> platforms.
> 
> I've tested this on an i386 2.6.11 kernel and it seems that the
> link count presented to userland wraps after 65536 subdirectories.
> This naturally doesn't let you screw up the filesystem or anything,
> but it does let you can hide files from find/fts, as demonstrated
> below.

The correct fix, used for reiserfs (and a patch for ext3 also) is to
set i_nlink = 1 in case the filesystem count has wrapped.  When nlink==1
the fts/find code no longer optimizes subdirectory traversal and checks
each entries filetype to see if it should recurse.

Cheers, Andreas
--
Andreas Dilger
Principal Software Engineer
Cluster File Systems, Inc.

Attachment: pgpKT5ugEFfp3.pgp
Description: PGP signature

<Prev in Thread] Current Thread [Next in Thread>