diff options
author | Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> | 2007-10-17 06:27:21 (GMT) |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-17 15:42:53 (GMT) |
commit | 2b47c3611de05c585e2d81204f6c7e3e255a3461 (patch) | |
tree | 24a14614fb9bf507b4b6ad3fa6a7cfa5a92318fb /fs/ocfs2/dir.c | |
parent | 41d10da3717409de33d5441f2f6d8f072ab3fbb6 (diff) | |
download | linux-2b47c3611de05c585e2d81204f6c7e3e255a3461.tar.xz |
Fix f_version type: should be u64 instead of unsigned long
Fix f_version type: should be u64 instead of long
There is a type inconsistency between struct inode i_version and struct file
f_version.
fs.h:
struct inode
u64 i_version;
and
struct file
unsigned long f_version;
Users do:
fs/ext3/dir.c:
if (filp->f_version != inode->i_version) {
So why isn't f_version a u64 ? It becomes a problem if versions gets
higher than 2^32 and we are on an architecture where longs are 32 bits.
This patch changes the f_version type to u64, and updates the users accordingly.
It applies to 2.6.23-rc2-mm2.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Cc: Martin Bligh <mbligh@google.com>
Cc: "Randy.Dunlap" <rdunlap@xenotime.net>
Cc: Al Viro <viro@ftp.linux.org.uk>
Cc: <linux-ext4@vger.kernel.org>
Cc: Mark Fasheh <mark.fasheh@oracle.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: "J. Bruce Fields" <bfields@fieldses.org>
Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/ocfs2/dir.c')
-rw-r--r-- | fs/ocfs2/dir.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/fs/ocfs2/dir.c b/fs/ocfs2/dir.c index 7453b70..6a2f143 100644 --- a/fs/ocfs2/dir.c +++ b/fs/ocfs2/dir.c @@ -586,7 +586,7 @@ bail: } static int ocfs2_dir_foreach_blk_id(struct inode *inode, - unsigned long *f_version, + u64 *f_version, loff_t *f_pos, void *priv, filldir_t filldir, int *filldir_err) { @@ -648,7 +648,7 @@ revalidate: * not the directory has been modified * during the copy operation. */ - unsigned long version = *f_version; + u64 version = *f_version; unsigned char d_type = DT_UNKNOWN; if (de->file_type < OCFS2_FT_MAX) @@ -677,7 +677,7 @@ out: } static int ocfs2_dir_foreach_blk_el(struct inode *inode, - unsigned long *f_version, + u64 *f_version, loff_t *f_pos, void *priv, filldir_t filldir, int *filldir_err) { @@ -798,7 +798,7 @@ out: return stored; } -static int ocfs2_dir_foreach_blk(struct inode *inode, unsigned long *f_version, +static int ocfs2_dir_foreach_blk(struct inode *inode, u64 *f_version, loff_t *f_pos, void *priv, filldir_t filldir, int *filldir_err) { @@ -818,7 +818,7 @@ int ocfs2_dir_foreach(struct inode *inode, loff_t *f_pos, void *priv, filldir_t filldir) { int ret = 0, filldir_err = 0; - unsigned long version = inode->i_version; + u64 version = inode->i_version; while (*f_pos < i_size_read(inode)) { ret = ocfs2_dir_foreach_blk(inode, &version, f_pos, priv, |