Whamcloud - gitweb
Add ext3-htree-rename_fix.patch (originally added on b1_2_smallfix, but
authoradilger <adilger>
Wed, 26 May 2004 15:58:30 +0000 (15:58 +0000)
committeradilger <adilger>
Wed, 26 May 2004 15:58:30 +0000 (15:58 +0000)
"land1.sh" didn't merge it for some reason).
b=3417

lustre/kernel_patches/patches/ext3-htree-rename_fix.patch [new file with mode: 0644]

diff --git a/lustre/kernel_patches/patches/ext3-htree-rename_fix.patch b/lustre/kernel_patches/patches/ext3-htree-rename_fix.patch
new file mode 100644 (file)
index 0000000..75bf288
--- /dev/null
@@ -0,0 +1,24 @@
+===== fs/ext3/namei.c 1.52 vs edited =====
+--- 1.52/fs/ext3/namei.c       Mon May 10 05:25:34 2004
++++ edited/fs/ext3/namei.c     Thu May 20 19:57:10 2004
+@@ -2264,11 +2264,15 @@
+       /*
+        * ok, that's it
+        */
+-      retval = ext3_delete_entry(handle, old_dir, old_de, old_bh);
+-      if (retval == -ENOENT) {
+-              /*
+-               * old_de could have moved out from under us.
+-               */
++      if (le32_to_cpu(old_de->inode) != old_inode->i_ino ||
++          old_de->name_len != old_dentry->d_name.len ||
++          strncmp(old_de->name, old_dentry->d_name.name, old_de->name_len) ||
++          (retval = ext3_delete_entry(handle, old_dir,
++                                      old_de, old_bh)) == -ENOENT) {
++              /* old_de could have moved from under us during htree split, so
++               * make sure that we are deleting the right entry.  We might
++               * also be pointing to a stale entry in the unused part of
++               * old_bh so just checking inum and the name isn't enough. */
+               struct buffer_head *old_bh2;
+               struct ext3_dir_entry_2 *old_de2;