📄 linux-2.6.9-ext3-sub-second-timestamp.patch
字号:
Index: linux-2.6.10/drivers/char/qtronix.c===================================================================--- linux-2.6.10.orig/drivers/char/qtronix.c 2004-12-24 14:35:50.000000000 -0700+++ linux-2.6.10/drivers/char/qtronix.c 2006-01-03 16:16:52.000000000 -0700@@ -537,7 +537,7 @@ i--; } if (count-i) {- file->f_dentry->d_inode->i_atime = CURRENT_TIME;+ file->f_dentry->d_inode->i_atime = current_fs_time(inode->i_sb); return count-i; } if (signal_pending(current))Index: linux-2.6.10/drivers/char/random.c===================================================================--- linux-2.6.10.orig/drivers/char/random.c 2005-04-06 09:38:33.000000000 -0600+++ linux-2.6.10/drivers/char/random.c 2006-01-03 16:16:52.000000000 -0700@@ -1743,8 +1743,9 @@ if (p == buffer) { return (ssize_t)ret; } else {- file->f_dentry->d_inode->i_mtime = CURRENT_TIME;- mark_inode_dirty(file->f_dentry->d_inode);+ struct inode *inode = file->f_dentry->d_inode;+ inode->i_mtime = current_fs_time(inode->i_sb);+ mark_inode_dirty(inode); return (ssize_t)(p - buffer); } }Index: linux-2.6.10/drivers/char/sonypi.c===================================================================--- linux-2.6.10.orig/drivers/char/sonypi.c 2004-12-24 14:35:23.000000000 -0700+++ linux-2.6.10/drivers/char/sonypi.c 2006-01-03 16:18:31.000000000 -0700@@ -537,7 +537,8 @@ } if (ret > 0)- file->f_dentry->d_inode->i_atime = CURRENT_TIME;+ struct inode *inode = file->f_dentry->d_inode;+ inode->i_atime = current_fs_time(inode->i_sb); return ret; }Index: linux-2.6.10/drivers/char/tty_io.c===================================================================--- linux-2.6.10.orig/drivers/char/tty_io.c 2005-04-06 09:38:33.000000000 -0600+++ linux-2.6.10/drivers/char/tty_io.c 2006-01-03 16:16:52.000000000 -0700@@ -1018,7 +1018,7 @@ tty_ldisc_deref(ld); unlock_kernel(); if (i > 0)- inode->i_atime = CURRENT_TIME;+ inode->i_atime = current_fs_time(inode->i_sb); return i; } @@ -1095,7 +1095,8 @@ cond_resched(); } if (written) {- file->f_dentry->d_inode->i_mtime = CURRENT_TIME;+ struct inode *inode = file->f_dentry->d_inode;+ inode->i_mtime = current_fs_time(inode->i_sb); ret = written; } up(&tty->atomic_write);Index: linux-2.6.10/fs/attr.c===================================================================--- linux-2.6.10.orig/fs/attr.c 2004-12-24 14:34:00.000000000 -0700+++ linux-2.6.10/fs/attr.c 2006-01-03 16:16:52.000000000 -0700@@ -14,6 +14,7 @@ #include <linux/fcntl.h> #include <linux/quotaops.h> #include <linux/security.h>+#include <linux/time.h> /* Taken over from the old code... */ @@ -87,11 +88,14 @@ if (ia_valid & ATTR_GID) inode->i_gid = attr->ia_gid; if (ia_valid & ATTR_ATIME)- inode->i_atime = attr->ia_atime;+ inode->i_atime = timespec_trunc(attr->ia_atime,+ get_sb_time_gran(inode->i_sb)); if (ia_valid & ATTR_MTIME)- inode->i_mtime = attr->ia_mtime;+ inode->i_mtime = timespec_trunc(attr->ia_mtime,+ get_sb_time_gran(inode->i_sb)); if (ia_valid & ATTR_CTIME)- inode->i_ctime = attr->ia_ctime;+ inode->i_ctime = timespec_trunc(attr->ia_ctime,+ get_sb_time_gran(inode->i_sb)); if (ia_valid & ATTR_MODE) { umode_t mode = attr->ia_mode; @@ -131,14 +135,17 @@ int notify_change(struct dentry * dentry, struct iattr * attr) { struct inode *inode = dentry->d_inode;- mode_t mode = inode->i_mode;+ mode_t mode; int error;- struct timespec now = CURRENT_TIME;+ struct timespec now; unsigned int ia_valid = attr->ia_valid; if (!inode) BUG(); + mode = inode->i_mode;+ now = current_fs_time(inode->i_sb);+ attr->ia_ctime = now; if (!(ia_valid & ATTR_ATIME_SET)) attr->ia_atime = now;Index: linux-2.6.10/fs/bad_inode.c===================================================================--- linux-2.6.10.orig/fs/bad_inode.c 2004-12-24 14:35:50.000000000 -0700+++ linux-2.6.10/fs/bad_inode.c 2006-01-03 16:16:52.000000000 -0700@@ -105,7 +105,8 @@ remove_inode_hash(inode); inode->i_mode = S_IFREG;- inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;+ inode->i_atime = inode->i_mtime = inode->i_ctime = + current_fs_time(inode->i_sb); inode->i_op = &bad_inode_ops; inode->i_fop = &bad_file_ops; }Index: linux-2.6.10/fs/binfmt_misc.c===================================================================--- linux-2.6.10.orig/fs/binfmt_misc.c 2004-12-24 14:34:31.000000000 -0700+++ linux-2.6.10/fs/binfmt_misc.c 2006-01-03 16:16:52.000000000 -0700@@ -509,7 +509,8 @@ inode->i_gid = 0; inode->i_blksize = PAGE_CACHE_SIZE; inode->i_blocks = 0;- inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;+ inode->i_atime = inode->i_mtime = inode->i_ctime =+ current_fs_time(inode->i_sb); } return inode; }Index: linux-2.6.10/fs/ext2/dir.c===================================================================--- linux-2.6.10.orig/fs/ext2/dir.c 2004-12-24 14:34:58.000000000 -0700+++ linux-2.6.10/fs/ext2/dir.c 2006-01-03 16:16:52.000000000 -0700@@ -426,7 +426,7 @@ ext2_set_de_type (de, inode); err = ext2_commit_chunk(page, from, to); ext2_put_page(page);- dir->i_mtime = dir->i_ctime = CURRENT_TIME;+ dir->i_mtime = dir->i_ctime = CURRENT_TIME_SEC; EXT2_I(dir)->i_flags &= ~EXT2_BTREE_FL; mark_inode_dirty(dir); }@@ -516,7 +516,7 @@ de->inode = cpu_to_le32(inode->i_ino); ext2_set_de_type (de, inode); err = ext2_commit_chunk(page, from, to);- dir->i_mtime = dir->i_ctime = CURRENT_TIME;+ dir->i_mtime = dir->i_ctime = CURRENT_TIME_SEC; EXT2_I(dir)->i_flags &= ~EXT2_BTREE_FL; mark_inode_dirty(dir); /* OFFSET_CACHE */@@ -564,7 +564,7 @@ pde->rec_len = cpu_to_le16(to-from); dir->inode = 0; err = ext2_commit_chunk(page, from, to);- inode->i_ctime = inode->i_mtime = CURRENT_TIME;+ inode->i_ctime = inode->i_mtime = CURRENT_TIME_SEC; EXT2_I(inode)->i_flags &= ~EXT2_BTREE_FL; mark_inode_dirty(inode); out:Index: linux-2.6.10/fs/ext2/ialloc.c===================================================================--- linux-2.6.10.orig/fs/ext2/ialloc.c 2004-12-24 14:34:47.000000000 -0700+++ linux-2.6.10/fs/ext2/ialloc.c 2006-01-03 16:16:52.000000000 -0700@@ -577,7 +577,7 @@ inode->i_ino = ino; inode->i_blksize = PAGE_SIZE; /* This is the optimal IO size (for stat), not the fs block size */ inode->i_blocks = 0;- inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME;+ inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME_SEC; memset(ei->i_data, 0, sizeof(ei->i_data)); ei->i_flags = EXT2_I(dir)->i_flags & ~EXT2_BTREE_FL; if (S_ISLNK(mode))Index: linux-2.6.10/fs/ext2/inode.c===================================================================--- linux-2.6.10.orig/fs/ext2/inode.c 2004-12-24 14:33:51.000000000 -0700+++ linux-2.6.10/fs/ext2/inode.c 2006-01-03 16:16:52.000000000 -0700@@ -493,7 +493,7 @@ /* We are done with atomic stuff, now do the rest of housekeeping */ - inode->i_ctime = CURRENT_TIME;+ inode->i_ctime = CURRENT_TIME_SEC; /* had we spliced it onto indirect block? */ if (where->bh)@@ -953,7 +953,7 @@ case EXT2_TIND_BLOCK: ; }- inode->i_mtime = inode->i_ctime = CURRENT_TIME;+ inode->i_mtime = inode->i_ctime = CURRENT_TIME_SEC; if (inode_needs_sync(inode)) { sync_mapping_buffers(inode->i_mapping); ext2_sync_inode (inode);Index: linux-2.6.10/fs/ext2/ioctl.c===================================================================--- linux-2.6.10.orig/fs/ext2/ioctl.c 2004-12-24 14:35:49.000000000 -0700+++ linux-2.6.10/fs/ext2/ioctl.c 2006-01-03 16:16:52.000000000 -0700@@ -59,7 +59,7 @@ ei->i_flags = flags; ext2_set_inode_flags(inode);- inode->i_ctime = CURRENT_TIME;+ inode->i_ctime = CURRENT_TIME_SEC; mark_inode_dirty(inode); return 0; }@@ -72,7 +72,7 @@ return -EROFS; if (get_user(inode->i_generation, (int __user *) arg)) return -EFAULT; - inode->i_ctime = CURRENT_TIME;+ inode->i_ctime = CURRENT_TIME_SEC; mark_inode_dirty(inode); return 0; default:Index: linux-2.6.10/fs/ext2/namei.c===================================================================--- linux-2.6.10.orig/fs/ext2/namei.c 2004-12-24 14:35:25.000000000 -0700+++ linux-2.6.10/fs/ext2/namei.c 2006-01-03 16:16:52.000000000 -0700@@ -211,7 +211,7 @@ if (inode->i_nlink >= EXT2_LINK_MAX) return -EMLINK; - inode->i_ctime = CURRENT_TIME;+ inode->i_ctime = CURRENT_TIME_SEC; ext2_inc_count(inode); atomic_inc(&inode->i_count); @@ -337,7 +337,7 @@ goto out_dir; ext2_inc_count(old_inode); ext2_set_link(new_dir, new_de, new_page, old_inode);- new_inode->i_ctime = CURRENT_TIME;+ new_inode->i_ctime = CURRENT_TIME_SEC; if (dir_de) new_inode->i_nlink--; ext2_dec_count(new_inode);@@ -362,7 +362,7 @@ * rename. * ext2_dec_count() will mark the inode dirty. */- old_inode->i_ctime = CURRENT_TIME;+ old_inode->i_ctime = CURRENT_TIME_SEC; ext2_delete_entry (old_de, old_page); ext2_dec_count(old_inode);Index: linux-2.6.10/fs/ext2/super.c===================================================================--- linux-2.6.10.orig/fs/ext2/super.c 2004-12-24 14:35:01.000000000 -0700+++ linux-2.6.10/fs/ext2/super.c 2006-01-03 16:19:06.000000000 -0700@@ -595,7 +595,7 @@ es = (struct ext2_super_block *) (((char *)bh->b_data) + offset); sbi->s_es = es; sb->s_magic = le16_to_cpu(es->s_magic);- sb->s_flags |= MS_ONE_SECOND;+ set_sb_time_gran(sb, 1000000000U); if (sb->s_magic != EXT2_SUPER_MAGIC) goto cantfind_ext2;Index: linux-2.6.10/fs/ext2/xattr.c===================================================================--- linux-2.6.10.orig/fs/ext2/xattr.c 2005-04-06 09:38:35.000000000 -0600+++ linux-2.6.10/fs/ext2/xattr.c 2006-01-03 16:16:52.000000000 -0700@@ -702,7 +702,7 @@ /* Update the inode. */ EXT2_I(inode)->i_file_acl = new_bh ? new_bh->b_blocknr : 0;- inode->i_ctime = CURRENT_TIME;+ inode->i_ctime = CURRENT_TIME_SEC; if (IS_SYNC(inode)) { error = ext2_sync_inode (inode); if (error)Index: linux-2.6.10/fs/ext3/ialloc.c===================================================================--- linux-2.6.10.orig/fs/ext3/ialloc.c 2004-12-24 14:34:45.000000000 -0700+++ linux-2.6.10/fs/ext3/ialloc.c 2006-01-03 16:16:52.000000000 -0700@@ -558,7 +558,7 @@ /* This is the optimal IO size (for stat), not the fs block size */ inode->i_blksize = PAGE_SIZE; inode->i_blocks = 0;- inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME;+ inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME_SEC; memset(ei->i_data, 0, sizeof(ei->i_data)); ei->i_next_alloc_block = 0;Index: linux-2.6.10/fs/ext3/inode.c===================================================================--- linux-2.6.10.orig/fs/ext3/inode.c 2005-04-06 09:38:35.000000000 -0600+++ linux-2.6.10/fs/ext3/inode.c 2006-01-03 16:16:52.000000000 -0700@@ -626,7 +626,7 @@ /* We are done with atomic stuff, now do the rest of housekeeping */ - inode->i_ctime = CURRENT_TIME;+ inode->i_ctime = CURRENT_TIME_SEC; ext3_mark_inode_dirty(handle, inode); /* had we spliced it onto indirect block? */@@ -2199,7 +2199,7 @@
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -