Whamcloud - gitweb
- ext3 mount option 'pdirops' added
authoralex <alex>
Tue, 2 Sep 2003 07:45:41 +0000 (07:45 +0000)
committeralex <alex>
Tue, 2 Sep 2003 07:45:41 +0000 (07:45 +0000)
- uninitialized i_rename_sem bug fixed

lustre/kernel_patches/patches/ext3-pdirops-2.4.18-chaos.patch

index 82097e7..1d6be03 100644 (file)
@@ -1,13 +1,13 @@
- fs/ext3/ialloc.c          |    2 
- fs/ext3/inode.c           |    2 
- fs/ext3/namei.c           |  580 +++++++++++++++++++++++++++++++++++++---------
- fs/ext3/super.c           |    6 
+ fs/ext3/ialloc.c          |    3 
+ fs/ext3/inode.c           |    3 
+ fs/ext3/namei.c           |  582 +++++++++++++++++++++++++++++++++++++---------
+ fs/ext3/super.c           |   11 
  include/linux/ext3_fs.h   |    1 
  include/linux/ext3_fs_i.h |    6 
- 6 files changed, 489 insertions(+), 108 deletions(-)
+ 6 files changed, 497 insertions(+), 109 deletions(-)
 
 --- linux-2.4.18/fs/ext3/namei.c~ext3-pdirops-2.4.18-chaos     2003-09-01 14:58:06.000000000 +0400
-+++ linux-2.4.18-alexey/fs/ext3/namei.c        2003-09-01 17:52:47.000000000 +0400
++++ linux-2.4.18-alexey/fs/ext3/namei.c        2003-09-02 10:40:18.000000000 +0400
 @@ -52,6 +52,9 @@ static struct buffer_head *ext3_append(h
  {
        struct buffer_head *bh;
        struct super_block * sb = dir->i_sb;
        struct ext3_dir_entry_2 *de;
        int err;
+-
+-      frame = dx_probe(dentry, 0, &hinfo, frames, &err);
 +      int curidx;
 +      void *idx_lock, *leaf_lock, *newleaf_lock;
--      frame = dx_probe(dentry, 0, &hinfo, frames, &err);
++      
 +repeat:
 +      frame = dx_probe(&dentry->d_name, dir, &hinfo, frames, &err);
        if (!frame)
   */
  struct inode_operations ext3_dir_inode_operations = {
 --- linux-2.4.18/fs/ext3/super.c~ext3-pdirops-2.4.18-chaos     2003-09-01 16:33:25.000000000 +0400
-+++ linux-2.4.18-alexey/fs/ext3/super.c        2003-09-01 16:36:16.000000000 +0400
++++ linux-2.4.18-alexey/fs/ext3/super.c        2003-09-02 11:18:00.000000000 +0400
 @@ -786,6 +786,8 @@ static int parse_options (char * options
                                return 0;
                        }
                else if (!strcmp (this_char, "grpid") ||
                         !strcmp (this_char, "bsdgroups"))
                        set_opt (*mount_options, GRPID);
-@@ -969,6 +971,10 @@ static int ext3_setup_super(struct super
+@@ -812,6 +814,9 @@ static int parse_options (char * options
+                       if (want_numeric(value, "sb", sb_block))
+                               return 0;
+               }
++              else if (!strcmp (this_char, "pdirops")) {
++                      set_opt (sbi->s_mount_opt, PDIROPS);
++              }
+ #ifdef CONFIG_JBD_DEBUG
+               else if (!strcmp (this_char, "ro-after")) {
+                       unsigned long v;
+@@ -969,6 +974,10 @@ static int ext3_setup_super(struct super
                ext3_check_inodes_bitmap (sb);
        }
  #endif
        setup_ro_after(sb);
        return res;
  }
+@@ -1463,6 +1472,8 @@ struct super_block * ext3_read_super (st
+               test_opt(sb,DATA_FLAGS) == EXT3_MOUNT_ORDERED_DATA ? "ordered":
+               "writeback");
++      if (test_opt(sb, PDIROPS))
++              sb->s_flags |= S_PDIROPS; 
+       return sb;
+ failed_mount3:
 --- linux-2.4.18/include/linux/ext3_fs.h~ext3-pdirops-2.4.18-chaos     2003-09-01 14:58:06.000000000 +0400
-+++ linux-2.4.18-alexey/include/linux/ext3_fs.h        2003-09-01 16:36:16.000000000 +0400
++++ linux-2.4.18-alexey/include/linux/ext3_fs.h        2003-09-01 17:56:13.000000000 +0400
 @@ -310,6 +310,7 @@ struct ext3_inode {
  /*
   * Mount flags
  #define EXT3_MOUNT_GRPID              0x0004  /* Create files with directory's group */
  #define EXT3_MOUNT_DEBUG              0x0008  /* Some debugging messages */
 --- linux-2.4.18/include/linux/ext3_fs_i.h~ext3-pdirops-2.4.18-chaos   2003-08-29 11:57:30.000000000 +0400
-+++ linux-2.4.18-alexey/include/linux/ext3_fs_i.h      2003-09-01 16:36:16.000000000 +0400
++++ linux-2.4.18-alexey/include/linux/ext3_fs_i.h      2003-09-01 17:56:13.000000000 +0400
 @@ -17,6 +17,7 @@
  #define _LINUX_EXT3_FS_I
  
  
  #endif        /* _LINUX_EXT3_FS_I */
 --- linux-2.4.18/fs/ext3/inode.c~ext3-pdirops-2.4.18-chaos     2003-09-01 16:33:25.000000000 +0400
-+++ linux-2.4.18-alexey/fs/ext3/inode.c        2003-09-01 17:53:33.000000000 +0400
-@@ -2454,6 +2454,8 @@ void ext3_read_inode(struct inode * inod
++++ linux-2.4.18-alexey/fs/ext3/inode.c        2003-09-02 10:39:36.000000000 +0400
+@@ -2454,6 +2454,9 @@ void ext3_read_inode(struct inode * inod
        } else if (S_ISDIR(inode->i_mode)) {
                inode->i_op = &ext3_dir_inode_operations;
                inode->i_fop = &ext3_dir_operations;
 +              dynlock_init(&EXT3_I(inode)->i_htree_lock);
 +              sema_init(&EXT3_I(inode)->i_rename_sem, 1);
++              sema_init(&EXT3_I(inode)->i_append_sem, 1);
        } else if (S_ISLNK(inode->i_mode)) {
                if (ext3_inode_is_fast_symlink(inode))
                        inode->i_op = &ext3_fast_symlink_inode_operations;
 --- linux-2.4.18/fs/ext3/ialloc.c~ext3-pdirops-2.4.18-chaos    2003-09-01 14:58:05.000000000 +0400
-+++ linux-2.4.18-alexey/fs/ext3/ialloc.c       2003-09-01 17:55:45.000000000 +0400
-@@ -601,6 +601,8 @@ repeat:
++++ linux-2.4.18-alexey/fs/ext3/ialloc.c       2003-09-02 10:39:50.000000000 +0400
+@@ -601,6 +601,9 @@ repeat:
                return ERR_PTR(-EDQUOT);
        }
        ext3_debug ("allocating inode %lu\n", inode->i_ino);
 +      dynlock_init(&EXT3_I(inode)->i_htree_lock);
 +      sema_init(&EXT3_I(inode)->i_rename_sem, 1);
++      sema_init(&EXT3_I(inode)->i_append_sem, 1);
        return inode;
  
  fail: