* [PATCH] ext2/3 bugfix 4/6: Fix ext3 htree rename bug
@ 2002-11-07 3:59 tytso
0 siblings, 0 replies; only message in thread
From: tytso @ 2002-11-07 3:59 UTC (permalink / raw)
To: torvalds, linux-kernel
Fix ext3 htree rename bug.
This fixes an ext3 htree bug pointed out by Christopher Li; if
adding the new name to the directory causes a split, this can cause
the directory entry containing the old name to move to another
block, and then the removal of the old name will fail.
namei.c | 21 ++++++++++++++++++++-
1 files changed, 20 insertions(+), 1 deletion(-)
diff -Nru a/fs/ext3/namei.c b/fs/ext3/namei.c
--- a/fs/ext3/namei.c Wed Nov 6 22:26:40 2002
+++ b/fs/ext3/namei.c Wed Nov 6 22:26:40 2002
@@ -2243,7 +2243,26 @@
/*
* ok, that's it
*/
- ext3_delete_entry(handle, old_dir, old_de, old_bh);
+ retval = ext3_delete_entry(handle, old_dir, old_de, old_bh);
+ if (retval == -ENOENT) {
+ /*
+ * old_de could have moved out from under us.
+ */
+ struct buffer_head *old_bh2;
+ struct ext3_dir_entry_2 *old_de2;
+
+ old_bh2 = ext3_find_entry(old_dentry, &old_de2);
+ if (old_bh2) {
+ retval = ext3_delete_entry(handle, old_dir,
+ old_de2, old_bh2);
+ brelse(old_bh2);
+ }
+ }
+ if (retval) {
+ ext3_warning(old_dir->i_sb, "ext3_rename",
+ "Deleting old file (%lu), %d, error=%d",
+ old_dir->i_ino, old_dir->i_nlink, retval);
+ }
if (new_inode) {
new_inode->i_nlink--;
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2002-11-07 3:55 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-11-07 3:59 [PATCH] ext2/3 bugfix 4/6: Fix ext3 htree rename bug tytso
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.