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

📄 ext3-extents-fixes-2.6.9-rhel4.patch

📁 lustre 1.6.5 source code
💻 PATCH
字号:
 - minor fixes - multiblock get_block() for direct I/OIndex: linux-2.6.9-full/include/linux/ext3_extents.h===================================================================--- linux-2.6.9-full.orig/include/linux/ext3_extents.h	2007-03-23 15:57:00.000000000 +0300+++ linux-2.6.9-full/include/linux/ext3_extents.h	2007-03-28 00:59:32.000000000 +0400@@ -205,7 +205,7 @@ typedef int (*ext_prepare_callback)(stru #define EXT_DEPTH(__tree__)	(EXT_ROOT_HDR(__tree__)->eh_depth) #define EXT_GENERATION(__tree__) EXT_HDR_GEN(EXT_ROOT_HDR(__tree__)) -#define EXT_ASSERT(__x__) if (!(__x__)) BUG();+#define EXT_ASSERT(__x__) if (unlikely(!(__x__))) BUG();  #define EXT_CHECK_PATH(tree,path)					\ {									\Index: linux-2.6.9-full/fs/ext3/extents.c===================================================================--- linux-2.6.9-full.orig/fs/ext3/extents.c	2007-03-23 15:57:00.000000000 +0300+++ linux-2.6.9-full/fs/ext3/extents.c	2007-03-28 00:59:41.000000000 +0400@@ -895,6 +895,8 @@ repeat: 		/* if we found index with free entry, then use that 		 * entry: create all needed subtree and add new leaf */ 		err = ext3_ext_split(handle, tree, path, newext, i);+		if (err)+			goto out;  		/* refill path */ 		ext3_ext_drop_refs(path);@@ -904,12 +906,16 @@ repeat: 	} else { 		/* tree is full, time to grow in depth */ 		err = ext3_ext_grow_indepth(handle, tree, path, newext);+		if (err)+			goto out;  		/* refill path */ 		ext3_ext_drop_refs(path); 		path = ext3_ext_find_extent(tree, newext->ee_block, path);-		if (IS_ERR(path))+		if (IS_ERR(path)) { 			err = PTR_ERR(path);+			goto out;+		}  		/* 		 * only first (depth 0 -> 1) produces free space@@ -922,10 +928,8 @@ repeat: 		} 	} -	if (err)-		return err;--	return 0;+out:+	return err; }  /*@@ -1992,21 +1996,10 @@ static int ext3_new_block_cb(handle_t *h 	EXT_ASSERT(ex->ee_start); 	EXT_ASSERT(ex->ee_len); 	-	/* reuse block from the extent to order data/metadata */-	newblock = ex->ee_start++;-	ex->ee_len--;-	if (ex->ee_len == 0) {-		ex->ee_len = 1;-		/* allocate new block for the extent */-		goal = ext3_ext_find_goal(inode, path, ex->ee_block);-		ex->ee_start = ext3_new_block(handle, inode, goal, err);-		ex->ee_start_hi = 0;-		if (ex->ee_start == 0) {-			/* error occured: restore old extent */-			ex->ee_start = newblock;-			return 0;-		}-	}+	/* allocate new block for the extent */+	goal = ext3_ext_find_goal(inode, path, ex->ee_block);+	newblock = ext3_new_block(handle, inode, goal, err);+ 	return newblock; } 

⌨️ 快捷键说明

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