[PATCH 1/2] afs: use d_time instead of d_fsdata

David Howells dhowells at redhat.com
Thu Jul 2 03:53:02 PDT 2026


NeilBrown <neilb at ownmail.net> wrote:

> > > Interestingly the value stored in ->d_time or d_fsdata is u64 which does
> > > not fit in "unsigned long" or "void *" on 32 bit hosts.  Maybe that
> > > doesn't matter.
> > 
> > Hmmm...  It looks like NFS may have a bug here:
> > 
> > static int nfs_dentry_verify_change(struct inode *dir, struct dentry *dentry)
> > {
> > 	if (nfs_server_capable(dir, NFS_CAP_CASE_INSENSITIVE) &&
> > 	    d_really_is_negative(dentry))
> > 		return dentry->d_time == inode_peek_iversion_raw(dir);
> > 	return nfs_verify_change_attribute(dir, dentry->d_time);
> > }
> > 
> > dentry->d_time may be 32-bits, but inode_peek_iversion_raw() is always 64 bits
> > and i_version is set to the 64-bit fattr->change_attr.
> 
> I wonder if there would be any appetite for making d_time (or d_version)
> always 64bit, much like i_ino was recently changed to u64.

I suspect Al wouldn't be happy about that.  He counts the bits in struct
dentry very carefully.

David




More information about the linux-afs mailing list