change attribute for ext4: user interface
RFC PATCH 3/3 change attribute for ext4: user interface
This patch adds a ``st_change_attribute'' field in the stat structure, and modifies the stat(2) syscall accordingly. Currently the change is only visible on i386 and x86_64 archs.
Signed-off-by Celine Bourde
Signed-off-by Alexandre Ratchov
Signed-off-by Jean Noel Cordenner <[email protected]>
include/asm-i386/stat.h 2006-11-29 16:03:30.000000000 +0100 renamed from include/asm-i386/stat.h 2006-11-09 17:21:28.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_change_attribute; unsigned long __unused5; };
@@ -41,7 +41,7 @@ */ struct stat64 { unsigned long long st_dev; - unsigned char __pad0[4]; + unsigned char st_change_attribute; #define STAT64_HAS_BROKEN_ST_INO 1 unsigned long __st_ino;
include/asm-x86_64/stat.h 2006-11-29 16:04:24.000000000 +0100 renamed from include/asm-x86_64/stat.h 2006-11-13 16:49:14.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_change_attribute; + long __unused[2]; }; /* For 32bit emulation */
include/linux/stat.h 2006-11-29 16:06:02.000000000 +0100 renamed from include/linux/stat.h 2006-11-09 17:21:49.000000000 +0100 +1 -0
@@ -68,6 +68,7 @@ struct timespec atime; struct timespec mtime; struct timespec ctime; + unsigned long change_attribute; unsigned long blksize; unsigned long long blocks; };
fs/stat.c 2006-11-29 16:07:54.000000000 +0100 renamed from fs/stat.c 2006-11-09 17:20:52.000000000 +0100 +3 -0
@@ -32,6 +32,7 @@ stat->mtime = inode->i_mtime; stat->ctime = inode->i_ctime; stat->size = i_size_read(inode); + stat->change_attribute = inode->i_change_attribute; stat->blocks = inode->i_blocks; stat->blksize = (1 << inode->i_blkbits); }
@@ -233,6 +234,7 @@ tmp.st_atime = stat->atime.tv_sec; tmp.st_mtime = stat->mtime.tv_sec; tmp.st_ctime = stat->ctime.tv_sec; + tmp.st_change_attribute = stat->change_attribute; #ifdef STAT_HAVE_NSEC tmp.st_atime_nsec = stat->atime.tv_nsec; tmp.st_mtime_nsec = stat->mtime.tv_nsec;
@@ -366,6 +368,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_change_attribute = stat->change_attribute; tmp.st_size = stat->size; tmp.st_blocks = stat->blocks; tmp.st_blksize = stat->blksize;