Whamcloud - gitweb
b=4584
[fs/lustre-release.git] / lustre / kernel_patches / patches / ext3-mds-num-2.4.24.patch
index 811c8a4..c524f01 100644 (file)
@@ -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;