X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fkernel_patches%2Fpatches%2Fext3-mds-num-2.4.24.patch;h=c524f017229c59cbdfcc64f3d99d38cf043c9b6e;hb=2f8e66e2429c73fc2089d0890e370588ce66e366;hp=811c8a4772471a18156ba9fc15a4befee6a2211b;hpb=c130ceac6208ed1ebbd90fe2a9b0c054b0c1254f;p=fs%2Flustre-release.git diff --git a/lustre/kernel_patches/patches/ext3-mds-num-2.4.24.patch b/lustre/kernel_patches/patches/ext3-mds-num-2.4.24.patch index 811c8a4..c524f01 100644 --- a/lustre/kernel_patches/patches/ext3-mds-num-2.4.24.patch +++ b/lustre/kernel_patches/patches/ext3-mds-num-2.4.24.patch @@ -1,7 +1,7 @@ Index: linux-2.4.24/fs/ext3/namei.c =================================================================== ---- linux-2.4.24.orig/fs/ext3/namei.c 2004-06-23 08:31:23.000000000 +0400 -+++ linux-2.4.24/fs/ext3/namei.c 2004-06-23 08:32:59.000000000 +0400 +--- linux-2.4.24.orig/fs/ext3/namei.c 2004-09-12 17:52:58.000000000 +0400 ++++ linux-2.4.24/fs/ext3/namei.c 2004-09-12 17:53:10.000000000 +0400 @@ -1099,6 +1099,23 @@ inode = NULL; if (bh) { @@ -9,7 +9,7 @@ Index: linux-2.4.24/fs/ext3/namei.c + unsigned type = de->file_type; + __u32 *mds; + mds = (__u32 *)((char *) de + EXT3_DIR_REC_LEN(de->name_len)); -+ if ((type & 128) && EXT3_HAS_INCOMPAT_FEATURE(dir->i_sb, ++ if ((type & 128) && EXT3_HAS_INCOMPAT_FEATURE(dir->i_sb, + EXT3_FEATURE_INCOMPAT_MDSNUM) && + mds[0] != EXT3_SB(dir->i_sb)->s_mdsnum) { + struct ext3_super_block *es; @@ -56,7 +56,7 @@ Index: linux-2.4.24/fs/ext3/namei.c char *top; reclen = EXT3_DIR_REC_LEN(namelen); -+ if (EXT3_HAS_INCOMPAT_FEATURE(sb, EXT3_FEATURE_INCOMPAT_MDSNUM) ++ if (EXT3_HAS_INCOMPAT_FEATURE(sb, EXT3_FEATURE_INCOMPAT_MDSNUM) + && (dentry->d_flags & DCACHE_CROSS_REF) + && (dentry->d_mdsnum != EXT3_SB(sb)->s_mdsnum)) + reclen += 8; /* we need space to store mds num */ @@ -186,8 +186,8 @@ Index: linux-2.4.24/fs/ext3/namei.c struct inode_operations ext3_dir_inode_operations = { Index: linux-2.4.24/fs/ext3/dir.c =================================================================== ---- linux-2.4.24.orig/fs/ext3/dir.c 2004-06-23 08:31:21.000000000 +0400 -+++ linux-2.4.24/fs/ext3/dir.c 2004-06-23 08:31:23.000000000 +0400 +--- linux-2.4.24.orig/fs/ext3/dir.c 2004-08-07 16:35:23.000000000 +0400 ++++ linux-2.4.24/fs/ext3/dir.c 2004-09-12 17:53:10.000000000 +0400 @@ -42,6 +42,9 @@ static unsigned char get_dtype(struct super_block *sb, int filetype) @@ -198,10 +198,23 @@ Index: linux-2.4.24/fs/ext3/dir.c if (!EXT3_HAS_INCOMPAT_FEATURE(sb, EXT3_FEATURE_INCOMPAT_FILETYPE) || (filetype >= EXT3_FT_MAX)) return DT_UNKNOWN; +@@ -67,8 +70,10 @@ + else if (((char *) de - bh->b_data) + rlen > dir->i_sb->s_blocksize) + error_msg = "directory entry across blocks"; + else if (le32_to_cpu(de->inode) > +- le32_to_cpu(dir->i_sb->u.ext3_sb.s_es->s_inodes_count)) +- error_msg = "inode out of bounds"; ++ le32_to_cpu(dir->i_sb->u.ext3_sb.s_es->s_inodes_count)) { ++ if (de->file_type != 128) ++ error_msg = "inode out of bounds"; ++ } + + if (error_msg != NULL) + ext3_error (dir->i_sb, function, Index: linux-2.4.24/fs/ext3/ext3-exports.c =================================================================== ---- linux-2.4.24.orig/fs/ext3/ext3-exports.c 2004-06-23 08:31:22.000000000 +0400 -+++ linux-2.4.24/fs/ext3/ext3-exports.c 2004-06-23 08:31:23.000000000 +0400 +--- linux-2.4.24.orig/fs/ext3/ext3-exports.c 2004-08-07 16:35:24.000000000 +0400 ++++ linux-2.4.24/fs/ext3/ext3-exports.c 2004-09-12 17:53:10.000000000 +0400 @@ -26,3 +26,10 @@ EXPORT_SYMBOL(ext3_decode_error); EXPORT_SYMBOL(__ext3_std_error); @@ -215,37 +228,27 @@ Index: linux-2.4.24/fs/ext3/ext3-exports.c + Index: linux-2.4.24/include/linux/ext3_fs.h =================================================================== ---- linux-2.4.24.orig/include/linux/ext3_fs.h 2004-06-23 08:31:23.000000000 +0400 -+++ linux-2.4.24/include/linux/ext3_fs.h 2004-06-23 08:31:23.000000000 +0400 -@@ -445,7 +445,8 @@ - __u8 s_def_hash_version; /* Default hash version to use */ - __u8 s_reserved_char_pad; - __u16 s_reserved_word_pad; -- __u32 s_reserved[192]; /* Padding to the end of the block */ -+ __u32 s_mdsnum; -+ __u32 s_reserved[191]; /* Padding to the end of the block */ - }; - - #ifdef __KERNEL__ -@@ -518,10 +519,12 @@ +--- linux-2.4.24.orig/include/linux/ext3_fs.h 2004-09-12 17:52:58.000000000 +0400 ++++ linux-2.4.24/include/linux/ext3_fs.h 2004-09-12 18:11:02.000000000 +0400 +@@ -519,11 +519,13 @@ #define EXT3_FEATURE_INCOMPAT_FILETYPE 0x0002 #define EXT3_FEATURE_INCOMPAT_RECOVER 0x0004 /* Needs recovery */ #define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV 0x0008 /* Journal device */ +#define EXT3_FEATURE_INCOMPAT_MDSNUM 0x0020 /* direntry has mdsnum */ + #define EXT3_FEATURE_INCOMPAT_EXTENTS 0x0040 /* extents support */ #define EXT3_FEATURE_COMPAT_SUPP EXT2_FEATURE_COMPAT_EXT_ATTR #define EXT3_FEATURE_INCOMPAT_SUPP (EXT3_FEATURE_INCOMPAT_FILETYPE| \ -- EXT3_FEATURE_INCOMPAT_RECOVER) -+ EXT3_FEATURE_INCOMPAT_RECOVER| \ -+ EXT3_FEATURE_INCOMPAT_MDSNUM) + EXT3_FEATURE_INCOMPAT_RECOVER| \ ++ EXT3_FEATURE_INCOMPAT_MDSNUM| \ + EXT3_FEATURE_INCOMPAT_EXTENTS) #define EXT3_FEATURE_RO_COMPAT_SUPP (EXT3_FEATURE_RO_COMPAT_SPARSE_SUPER| \ EXT3_FEATURE_RO_COMPAT_LARGE_FILE| \ - EXT3_FEATURE_RO_COMPAT_BTREE_DIR) -@@ -582,6 +585,9 @@ +@@ -585,6 +587,9 @@ #define EXT3_DIR_ROUND (EXT3_DIR_PAD - 1) #define EXT3_DIR_REC_LEN(name_len) (((name_len) + 8 + EXT3_DIR_ROUND) & \ ~EXT3_DIR_ROUND) -+#define EXT3_DIR_REC_LEN_DE(de) (EXT3_DIR_REC_LEN((de)->name_len) + \ ++#define EXT3_DIR_REC_LEN_DE(de) (EXT3_DIR_REC_LEN((de)->name_len) + \ + (((de)->file_type & 128) ? 8 : 0)) + /* @@ -253,8 +256,8 @@ Index: linux-2.4.24/include/linux/ext3_fs.h * (c) Daniel Phillips, 2001 Index: linux-2.4.24/include/linux/ext3_fs_sb.h =================================================================== ---- linux-2.4.24.orig/include/linux/ext3_fs_sb.h 2004-06-23 08:31:21.000000000 +0400 -+++ linux-2.4.24/include/linux/ext3_fs_sb.h 2004-06-23 08:31:23.000000000 +0400 +--- linux-2.4.24.orig/include/linux/ext3_fs_sb.h 2004-08-10 16:10:54.000000000 +0400 ++++ linux-2.4.24/include/linux/ext3_fs_sb.h 2004-09-12 18:11:38.000000000 +0400 @@ -86,6 +86,7 @@ wait_queue_head_t s_delete_thread_queue; wait_queue_head_t s_delete_waiter_queue; @@ -265,8 +268,8 @@ Index: linux-2.4.24/include/linux/ext3_fs_sb.h #endif /* _LINUX_EXT3_FS_SB */ Index: linux-2.4.24/include/linux/dcache.h =================================================================== ---- linux-2.4.24.orig/include/linux/dcache.h 2004-06-23 08:31:22.000000000 +0400 -+++ linux-2.4.24/include/linux/dcache.h 2004-06-23 08:31:23.000000000 +0400 +--- linux-2.4.24.orig/include/linux/dcache.h 2004-08-07 16:35:23.000000000 +0400 ++++ linux-2.4.24/include/linux/dcache.h 2004-09-12 18:11:38.000000000 +0400 @@ -120,6 +120,9 @@ atomic_t d_count; unsigned int d_flags;