⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ext3-nanosecond-2.6.18-vanilla.patch

📁 非常经典的一个分布式系统
💻 PATCH
📖 第 1 页 / 共 2 页
字号:
Index: linux-2.6.18.8/fs/ext3/ialloc.c===================================================================--- linux-2.6.18.8.orig/fs/ext3/ialloc.c	2007-06-20 18:54:59.000000000 +0200+++ linux-2.6.18.8/fs/ext3/ialloc.c	2007-06-20 18:54:59.000000000 +0200@@ -729,7 +729,8 @@ got: 	/* 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_SEC;+	inode->i_mtime = inode->i_atime = inode->i_ctime = ei->i_crtime =+						       ext3_current_time(inode);  	memset(ei->i_data, 0, sizeof(ei->i_data)); 	ei->i_dir_start_lookup = 0;@@ -761,9 +762,8 @@ got: 	spin_unlock(&sbi->s_next_gen_lock);  	ei->i_state = EXT3_STATE_NEW;-	ei->i_extra_isize =-		(EXT3_INODE_SIZE(inode->i_sb) > EXT3_GOOD_OLD_INODE_SIZE) ?-		sizeof(struct ext3_inode) - EXT3_GOOD_OLD_INODE_SIZE : 0;++	ei->i_extra_isize = EXT3_SB(sb)->s_want_extra_isize;  	ret = inode; 	if(DQUOT_ALLOC_INODE(inode)) {Index: linux-2.6.18.8/fs/ext3/inode.c===================================================================--- linux-2.6.18.8.orig/fs/ext3/inode.c	2007-06-20 18:54:52.000000000 +0200+++ linux-2.6.18.8/fs/ext3/inode.c	2007-06-20 18:54:59.000000000 +0200@@ -727,7 +727,7 @@ static int ext3_splice_branch(handle_t *  	/* We are done with atomic stuff, now do the rest of housekeeping */ -	inode->i_ctime = CURRENT_TIME_SEC;+	inode->i_ctime = ext3_current_time(inode); 	ext3_mark_inode_dirty(handle, inode);  	/* had we spliced it onto indirect block? */@@ -2375,7 +2375,7 @@ do_indirects: 	ext3_discard_reservation(inode);  	mutex_unlock(&ei->truncate_mutex);-	inode->i_mtime = inode->i_ctime = CURRENT_TIME_SEC;+	inode->i_mtime = inode->i_ctime = ext3_current_time(inode); 	ext3_mark_inode_dirty(handle, inode);  	/*@@ -2611,10 +2611,6 @@ void ext3_read_inode(struct inode * inod 	} 	inode->i_nlink = le16_to_cpu(raw_inode->i_links_count); 	inode->i_size = le32_to_cpu(raw_inode->i_size);-	inode->i_atime.tv_sec = le32_to_cpu(raw_inode->i_atime);-	inode->i_ctime.tv_sec = le32_to_cpu(raw_inode->i_ctime);-	inode->i_mtime.tv_sec = le32_to_cpu(raw_inode->i_mtime);-	inode->i_atime.tv_nsec = inode->i_ctime.tv_nsec = inode->i_mtime.tv_nsec = 0;  	ei->i_state = 0; 	ei->i_dir_start_lookup = 0;@@ -2689,6 +2685,11 @@ void ext3_read_inode(struct inode * inod 	} else 		ei->i_extra_isize = 0; +	EXT3_INODE_GET_XTIME(i_ctime, inode, raw_inode);+	EXT3_INODE_GET_XTIME(i_mtime, inode, raw_inode);+	EXT3_INODE_GET_XTIME(i_atime, inode, raw_inode);+	EXT3_EINODE_GET_XTIME(i_crtime, ei, raw_inode);+ 	if (S_ISREG(inode->i_mode)) { 		inode->i_op = &ext3_file_inode_operations; 		inode->i_fop = &ext3_file_operations;@@ -2769,9 +2770,12 @@ static int ext3_do_update_inode(handle_t 	} 	raw_inode->i_links_count = cpu_to_le16(inode->i_nlink); 	raw_inode->i_size = cpu_to_le32(ei->i_disksize);-	raw_inode->i_atime = cpu_to_le32(inode->i_atime.tv_sec);-	raw_inode->i_ctime = cpu_to_le32(inode->i_ctime.tv_sec);-	raw_inode->i_mtime = cpu_to_le32(inode->i_mtime.tv_sec);++	EXT3_INODE_SET_XTIME(i_ctime, inode, raw_inode);+	EXT3_INODE_SET_XTIME(i_mtime, inode, raw_inode);+	EXT3_INODE_SET_XTIME(i_atime, inode, raw_inode);+	EXT3_EINODE_SET_XTIME(i_crtime, ei, raw_inode);+ 	raw_inode->i_blocks = cpu_to_le32(inode->i_blocks); 	raw_inode->i_dtime = cpu_to_le32(ei->i_dtime); 	raw_inode->i_flags = cpu_to_le32(ei->i_flags);Index: linux-2.6.18.8/fs/ext3/ioctl.c===================================================================--- linux-2.6.18.8.orig/fs/ext3/ioctl.c	2007-06-20 18:42:05.000000000 +0200+++ linux-2.6.18.8/fs/ext3/ioctl.c	2007-06-20 18:54:59.000000000 +0200@@ -120,7 +120,7 @@ int ext3_ioctl (struct inode * inode, st 		ei->i_flags = flags;  		ext3_set_inode_flags(inode);-		inode->i_ctime = CURRENT_TIME_SEC;+		inode->i_ctime = ext3_current_time(inode);  		err = ext3_mark_iloc_dirty(handle, inode, &iloc); flags_err:@@ -157,7 +157,7 @@ flags_err: 			return PTR_ERR(handle); 		err = ext3_reserve_inode_write(handle, inode, &iloc); 		if (err == 0) {-			inode->i_ctime = CURRENT_TIME_SEC;+			inode->i_ctime = ext3_current_time(inode); 			inode->i_generation = generation; 			err = ext3_mark_iloc_dirty(handle, inode, &iloc); 		}Index: linux-2.6.18.8/fs/ext3/namei.c===================================================================--- linux-2.6.18.8.orig/fs/ext3/namei.c	2007-06-20 18:54:53.000000000 +0200+++ linux-2.6.18.8/fs/ext3/namei.c	2007-06-20 18:54:59.000000000 +0200@@ -1287,7 +1287,7 @@ static int add_dirent_to_buf(handle_t *h 	 * happen is that the times are slightly out of date 	 * and/or different from the directory change time. 	 */-	dir->i_mtime = dir->i_ctime = CURRENT_TIME_SEC;+	dir->i_mtime = dir->i_ctime = ext3_current_time(dir); 	ext3_update_dx_flag(dir); 	dir->i_version++; 	ext3_mark_inode_dirty(handle, dir);@@ -2079,7 +2079,7 @@ static int ext3_rmdir (struct inode * di 	inode->i_version++; 	inode->i_nlink = 0; 	ext3_orphan_add(handle, inode);-	inode->i_ctime = dir->i_ctime = dir->i_mtime = CURRENT_TIME_SEC;+	inode->i_ctime = dir->i_ctime = dir->i_mtime = ext3_current_time(inode); 	ext3_mark_inode_dirty(handle, inode); 	ext3_dec_count(handle, dir); 	ext3_update_dx_flag(dir);@@ -2129,13 +2129,13 @@ static int ext3_unlink(struct inode * di 	retval = ext3_delete_entry(handle, dir, de, bh); 	if (retval) 		goto end_unlink;-	dir->i_ctime = dir->i_mtime = CURRENT_TIME_SEC;+	dir->i_ctime = dir->i_mtime = ext3_current_time(dir); 	ext3_update_dx_flag(dir); 	ext3_mark_inode_dirty(handle, dir); 	ext3_dec_count(handle, inode); 	if (!inode->i_nlink) 		ext3_orphan_add(handle, inode);-	inode->i_ctime = dir->i_ctime;+	inode->i_ctime = ext3_current_time(inode); 	ext3_mark_inode_dirty(handle, inode); 	retval = 0; @@ -2237,7 +2237,7 @@ retry: 	if (IS_DIRSYNC(dir)) 		handle->h_sync = 1; -	inode->i_ctime = CURRENT_TIME_SEC;+	inode->i_ctime = ext3_current_time(inode); 	ext3_inc_count(handle, inode); 	atomic_inc(&inode->i_count); @@ -2340,7 +2340,7 @@ static int ext3_rename (struct inode * o 	 * Like most other Unix systems, set the ctime for inodes on a 	 * rename. 	 */-	old_inode->i_ctime = CURRENT_TIME_SEC;+	old_inode->i_ctime = ext3_current_time(old_inode); 	ext3_mark_inode_dirty(handle, old_inode);  	/*@@ -2373,9 +2373,9 @@ static int ext3_rename (struct inode * o  	if (new_inode) { 		ext3_dec_count(handle, new_inode);-		new_inode->i_ctime = CURRENT_TIME_SEC;+		new_inode->i_ctime = ext3_current_time(new_inode); 	}-	old_dir->i_ctime = old_dir->i_mtime = CURRENT_TIME_SEC;+	old_dir->i_ctime = old_dir->i_mtime = ext3_current_time(old_dir); 	ext3_update_dx_flag(old_dir); 	if (dir_bh) { 		BUFFER_TRACE(dir_bh, "get_write_access");Index: linux-2.6.18.8/fs/ext3/super.c===================================================================--- linux-2.6.18.8.orig/fs/ext3/super.c	2007-06-20 18:54:59.000000000 +0200+++ linux-2.6.18.8/fs/ext3/super.c	2007-06-20 18:54:59.000000000 +0200@@ -1713,6 +1713,8 @@ static int ext3_fill_super (struct super 				sbi->s_inode_size); 			goto failed_mount; 		}+		if (sbi->s_inode_size > EXT3_GOOD_OLD_INODE_SIZE)+			sb->s_time_gran = 1 << (EXT3_EPOCH_BITS - 2); 	} 	sbi->s_frag_size = EXT3_MIN_FRAG_SIZE << 				   le32_to_cpu(es->s_log_frag_size);@@ -1917,6 +1919,32 @@ static int ext3_fill_super (struct super 	}  	ext3_setup_super (sb, es, sb->s_flags & MS_RDONLY);++	/* determine the minimum size of new large inodes, if present */+	if (sbi->s_inode_size > EXT3_GOOD_OLD_INODE_SIZE) {+		sbi->s_want_extra_isize = sizeof(struct ext3_inode) -+						     EXT3_GOOD_OLD_INODE_SIZE;+		if (EXT3_HAS_RO_COMPAT_FEATURE(sb,+				       EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE)) {+			if (sbi->s_want_extra_isize <+			    le16_to_cpu(es->s_want_extra_isize))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -