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

📄 ext3-check-jbd-errors-2.6.9.patch

📁 非常经典的一个分布式系统
💻 PATCH
字号:
Index: linux-2.6.9-full/include/linux/ext3_fs.h===================================================================--- linux-2.6.9-full.orig/include/linux/ext3_fs.h	2006-08-09 17:56:39.000000000 +0400+++ linux-2.6.9-full/include/linux/ext3_fs.h	2006-08-22 12:36:22.000000000 +0400@@ -826,6 +826,7 @@ extern void ext3_put_super (struct super extern void ext3_write_super (struct super_block *); extern void ext3_write_super_lockfs (struct super_block *); extern void ext3_unlockfs (struct super_block *);+extern void ext3_commit_super (struct super_block *, struct ext3_super_block *, int); extern int ext3_remount (struct super_block *, int *, char *); extern int ext3_statfs (struct super_block *, struct kstatfs *); Index: linux-2.6.9-full/fs/ext3/super.c===================================================================--- linux-2.6.9-full.orig/fs/ext3/super.c	2006-08-09 17:56:40.000000000 +0400+++ linux-2.6.9-full/fs/ext3/super.c	2006-08-09 17:56:40.000000000 +0400@@ -43,7 +43,7 @@ static int ext3_load_journal(struct supe 			     unsigned long journal_devnum); static int ext3_create_journal(struct super_block *, struct ext3_super_block *, 			       int);-static void ext3_commit_super (struct super_block * sb,+void ext3_commit_super (struct super_block * sb, 			       struct ext3_super_block * es, 			       int sync); static void ext3_mark_recovery_complete(struct super_block * sb,@@ -1991,7 +1991,7 @@ static int ext3_create_journal(struct su 	return 0; } -static void ext3_commit_super (struct super_block * sb,+void ext3_commit_super (struct super_block * sb, 			       struct ext3_super_block * es, 			       int sync) {Index: linux-2.6.9-full/fs/ext3/namei.c===================================================================--- linux-2.6.9-full.orig/fs/ext3/namei.c	2006-08-09 17:56:40.000000000 +0400+++ linux-2.6.9-full/fs/ext3/namei.c	2006-08-09 17:56:40.000000000 +0400@@ -1599,7 +1599,7 @@ static int ext3_delete_entry (handle_t * 			      struct buffer_head * bh) { 	struct ext3_dir_entry_2 * de, * pde;-	int i;+	int i, err;  	i = 0; 	pde = NULL;@@ -1609,7 +1609,9 @@ static int ext3_delete_entry (handle_t * 			return -EIO; 		if (de == de_del)  { 			BUFFER_TRACE(bh, "get_write_access");-			ext3_journal_get_write_access(handle, bh);+			err = ext3_journal_get_write_access(handle, bh);+			if (err)+				return err; 			if (pde) 				pde->rec_len = 					cpu_to_le16(le16_to_cpu(pde->rec_len) +Index: linux-2.6.9-full/fs/ext3/xattr.c===================================================================--- linux-2.6.9-full.orig/fs/ext3/xattr.c	2006-06-01 14:58:48.000000000 +0400+++ linux-2.6.9-full/fs/ext3/xattr.c	2006-08-09 17:56:40.000000000 +0400@@ -132,7 +132,7 @@ ext3_xattr_handler(int name_index) { 	struct xattr_handler *handler = NULL; -	if (name_index > 0 && name_index <= EXT3_XATTR_INDEX_MAX)+	if (name_index > 0 && name_index < EXT3_XATTR_INDEX_MAX) 		handler = ext3_xattr_handler_map[name_index]; 	return handler; }Index: linux-2.6.9-full/fs/ext3/inode.c===================================================================--- linux-2.6.9-full.orig/fs/ext3/inode.c	2006-06-02 23:37:38.000000000 +0400+++ linux-2.6.9-full/fs/ext3/inode.c	2006-08-22 12:34:28.000000000 +0400@@ -1513,9 +1513,14 @@ out_stop: 			if (end > inode->i_size) { 				ei->i_disksize = end; 				i_size_write(inode, end);-				err = ext3_mark_inode_dirty(handle, inode);-				if (!ret) -					ret = err;+				/*+				 * We're going to return a positive `ret'+				 * here due to non-zero-length I/O, so there's+				 * no way of reporting error returns from+				 * ext3_mark_inode_dirty() to userspace.  So+				 * ignore it.+				 */+				ext3_mark_inode_dirty(handle, inode); 			} 		} 		err = ext3_journal_stop(handle);@@ -1807,8 +1812,18 @@ ext3_clear_blocks(handle_t *handle, stru 		ext3_mark_inode_dirty(handle, inode); 		ext3_journal_test_restart(handle, inode); 		if (bh) {+			int err; 			BUFFER_TRACE(bh, "retaking write access");-			ext3_journal_get_write_access(handle, bh);+			err = ext3_journal_get_write_access(handle, bh);+			if (err) {+				struct super_block *sb = inode->i_sb;+				struct ext3_super_block *es = EXT3_SB(sb)->s_es;+				printk (KERN_CRIT"EXT3-fs: can't continue truncate\n");+				EXT3_SB(sb)->s_mount_state |= EXT3_ERROR_FS;+				es->s_state |= cpu_to_le16(EXT3_ERROR_FS);+				ext3_commit_super(sb, es, 1);+				return;+			} 		} 	} 

⌨️ 快捷键说明

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