2007-11-29 20:54:33

by Andrew Morton

[permalink] [raw]
Subject: [patch 3/8] 64-bit i_version: afs fixes

From: Andrew Morton <[email protected]>

Please grep the whole tree and look for any similar bugs which this patch
introduces.

Cc: Jean Noel Cordenner <[email protected]>
Cc: Theodore Ts'o <[email protected]>
Cc: David Howells <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
---

fs/afs/dir.c | 9 +++++----
fs/afs/inode.c | 3 ++-
2 files changed, 7 insertions(+), 5 deletions(-)

diff -puN fs/afs/dir.c~64-bit-i_version-afs-fixes fs/afs/dir.c
--- a/fs/afs/dir.c~64-bit-i_version-afs-fixes
+++ a/fs/afs/dir.c
@@ -546,11 +546,11 @@ static struct dentry *afs_lookup(struct
dentry->d_op = &afs_fs_dentry_operations;

d_add(dentry, inode);
- _leave(" = 0 { vn=%u u=%u } -> { ino=%lu v=%lu }",
+ _leave(" = 0 { vn=%u u=%u } -> { ino=%lu v=%llu }",
fid.vnode,
fid.unique,
dentry->d_inode->i_ino,
- dentry->d_inode->i_version);
+ (unsigned long long)dentry->d_inode->i_version);

return NULL;
}
@@ -630,9 +630,10 @@ static int afs_d_revalidate(struct dentr
* been deleted and replaced, and the original vnode ID has
* been reused */
if (fid.unique != vnode->fid.unique) {
- _debug("%s: file deleted (uq %u -> %u I:%lu)",
+ _debug("%s: file deleted (uq %u -> %u I:%llu)",
dentry->d_name.name, fid.unique,
- vnode->fid.unique, dentry->d_inode->i_version);
+ vnode->fid.unique,
+ (unsigned long long)dentry->d_inode->i_version);
spin_lock(&vnode->lock);
set_bit(AFS_VNODE_DELETED, &vnode->flags);
spin_unlock(&vnode->lock);
diff -puN fs/afs/inode.c~64-bit-i_version-afs-fixes fs/afs/inode.c
--- a/fs/afs/inode.c~64-bit-i_version-afs-fixes
+++ a/fs/afs/inode.c
@@ -301,7 +301,8 @@ int afs_getattr(struct vfsmount *mnt, st

inode = dentry->d_inode;

- _enter("{ ino=%lu v=%lu }", inode->i_ino, inode->i_version);
+ _enter("{ ino=%lu v=%llu }", inode->i_ino,
+ (unsigned long long)inode->i_version);

generic_fillattr(inode, stat);
return 0;
_


2007-11-29 22:24:52

by David Howells

[permalink] [raw]
Subject: Re: [patch 3/8] 64-bit i_version: afs fixes

[email protected] wrote:

> - _leave(" = 0 { vn=%u u=%u } -> { ino=%lu v=%lu }",
> + _leave(" = 0 { vn=%u u=%u } -> { ino=%lu v=%llu }",
> fid.vnode,
> fid.unique,
> dentry->d_inode->i_ino,
> - dentry->d_inode->i_version);
> + (unsigned long long)dentry->d_inode->i_version);

Hmmm... In AFS's case this is overkill... The value contained in i_version
is going to be a 32-bit number because that's all the protocol supports.

David