i_version update for ext4: user interface
RFC PATCH 3/3 i_version update for ext4: user interface
This patch adds a ``st_i_version'' field in the stat structure, and modifies the stat(2) syscall accordingly. Currently the change is only visible on i386 and x86_64 archs.
fs/stat.c 2007-01-23 16:21:17.000000000 +0100 renamed from fs/stat.c 2007-01-19 16:59:15.000000000 +0100 +3 -0
@@ -31,6 +31,7 @@ stat->atime = inode->i_atime; stat->mtime = inode->i_mtime; stat->ctime = inode->i_ctime; + stat->i_version = inode->i_version; stat->size = i_size_read(inode); stat->blocks = inode->i_blocks; stat->blksize = (1 << inode->i_blkbits);
@@ -226,6 +227,7 @@ tmp.st_atime = stat->atime.tv_sec; tmp.st_mtime = stat->mtime.tv_sec; tmp.st_ctime = stat->ctime.tv_sec; + tmp.st_i_version = stat->i_version; #ifdef STAT_HAVE_NSEC tmp.st_atime_nsec = stat->atime.tv_nsec; tmp.st_mtime_nsec = stat->mtime.tv_nsec;
@@ -359,6 +361,7 @@ tmp.st_mtime_nsec = stat->mtime.tv_nsec; tmp.st_ctime = stat->ctime.tv_sec; tmp.st_ctime_nsec = stat->ctime.tv_nsec; + tmp.st_i_version = stat->i_version; tmp.st_size = stat->size; tmp.st_blocks = stat->blocks; tmp.st_blksize = stat->blksize;
include/linux/stat.h 2007-01-23 16:22:18.000000000 +0100 renamed from include/linux/stat.h 2006-11-29 22:57:37.000000000 +0100 +1 -0
@@ -68,6 +68,7 @@ struct timespec atime; struct timespec mtime; struct timespec ctime; + unsigned long i_version; unsigned long blksize; unsigned long long blocks; };
include/asm-i386/stat.h 2007-01-23 17:48:36.000000000 +0100 renamed from include/asm-i386/stat.h 2006-11-29 22:57:37.000000000 +0100 +2 -2
@@ -32,7 +32,7 @@ unsigned long st_mtime_nsec; unsigned long st_ctime; unsigned long st_ctime_nsec; - unsigned long __unused4; + unsigned long st_i_version; unsigned long __unused5; };
@@ -41,7 +41,7 @@ */ struct stat64 { unsigned long long st_dev; - unsigned char __pad0[4]; + unsigned int st_i_version; #define STAT64_HAS_BROKEN_ST_INO 1 unsigned long __st_ino;
include/asm-x86_64/stat.h 2007-01-23 17:57:03.000000000 +0100 renamed from include/asm-x86_64/stat.h 2006-11-29 22:57:37.000000000 +0100 +2 -1
@@ -23,7 +23,8 @@ unsigned long st_mtime_nsec; unsigned long st_ctime; unsigned long st_ctime_nsec; - long __unused[3]; + unsigned long st_i_version; + long __unused[2]; }; /* For 32bit emulation */
Quoted 3 lines · Cordenner jean noel
This patch adds a ``st_i_version'' field in the stat structure, and modifies the stat(2) syscall accordingly. Currently the change is only visible on i386 and
x86_64archs.
What is the need for exporting i_version to userspace?
Cheers, Andreas
--
Andreas Dilger
Principal Software Engineer
Cluster File Systems, Inc.
Quoted 6 lines · Andreas Dilger
Quoted 3 lines · Cordenner jean noel
This patch adds a ``st_i_version'' field in the stat structure, and modifies the stat(2) syscall accordingly. Currently the change is only visible on i386 and
x86_64archs.What is the need for exporting
i_versionto userspace?
Maybe none, but it seems potentially really useful to me; in practice aren't most uses of mtime/ctime exactly in order to find out if the file has changed recently?
Who else is asking for finer time resolutions? Is it because they need the precision (or the inter-file comparison) or because they need to know whether a file has changed?
Isn't anybody that currently maintains some cached information about a filesystem currently living with the same races as NFS?
--b.
Quoted 15 lines · J. Bruce Fields
Quoted 8 lines · Andreas Dilger
Quoted 4 lines · Cordenner jean noel
This patch adds a ``st_i_version'' field in the stat structure, and modifies the stat(2) syscall accordingly. Currently the change is only visible on i386 and
x86_64archs.What is the need for exporting
i_versionto userspace?Maybe none, but it seems potentially really useful to me; in practice aren't most uses of mtime/ctime exactly in order to find out if the file has changed recently?
Quoted 6 lines
Who else is asking for finer time resolutions? Is it because they need the precision (or the inter-file comparison) or because they need to know whether a file has changed?
Isn't anybody that currently maintains some cached information about a filesystem currently living with the same races as NFS?
Doesn't the BSD stat struct have a field like this? If so, perhaps they can remember why it was deemed to be interesting?
Thanx...
ps