[kernel/f15] Apply similar bitmap corruption fix for ext3

Josh Boyer jwboyer at fedoraproject.org
Tue Jan 10 19:25:43 UTC 2012


commit d45e462d4b76a7645e33faa0959008fc604fd446
Author: Josh Boyer <jwboyer at redhat.com>
Date:   Tue Jan 10 14:25:04 2012 -0500

    Apply similar bitmap corruption fix for ext3
    
    We still build the ext3 module in F15, so it needs the same fix.

 ...error-handling-on-inode-bitmap-corruption.patch |   40 ++++++++++++++++++++
 kernel.spec                                        |    4 +-
 2 files changed, 43 insertions(+), 1 deletions(-)
---
diff --git a/ext3-Fix-error-handling-on-inode-bitmap-corruption.patch b/ext3-Fix-error-handling-on-inode-bitmap-corruption.patch
new file mode 100644
index 0000000..73cc522
--- /dev/null
+++ b/ext3-Fix-error-handling-on-inode-bitmap-corruption.patch
@@ -0,0 +1,40 @@
+From 1415dd8705394399d59a3df1ab48d149e1e41e77 Mon Sep 17 00:00:00 2001
+From: Jan Kara <jack at suse.cz>
+Date: Thu, 8 Dec 2011 21:13:46 +0100
+Subject: [PATCH] ext3: Fix error handling on inode bitmap corruption
+
+When insert_inode_locked() fails in ext3_new_inode() it most likely
+means inode bitmap got corrupted and we allocated again inode which
+is already in use. Also doing unlock_new_inode() during error recovery
+is wrong since inode does not have I_NEW set. Fix the problem by jumping
+to fail: (instead of fail_drop:) which declares filesystem error and
+does not call unlock_new_inode().
+
+Reviewed-by: Eric Sandeen <sandeen at redhat.com>
+Signed-off-by: Jan Kara <jack at suse.cz>
+---
+ fs/ext3/ialloc.c |    8 ++++++--
+ 1 files changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/fs/ext3/ialloc.c b/fs/ext3/ialloc.c
+index 5c866e0..adae962 100644
+--- a/fs/ext3/ialloc.c
++++ b/fs/ext3/ialloc.c
+@@ -525,8 +525,12 @@ got:
+ 	if (IS_DIRSYNC(inode))
+ 		handle->h_sync = 1;
+ 	if (insert_inode_locked(inode) < 0) {
+-		err = -EINVAL;
+-		goto fail_drop;
++		/*
++		 * Likely a bitmap corruption causing inode to be allocated
++		 * twice.
++		 */
++		err = -EIO;
++		goto fail;
+ 	}
+ 	spin_lock(&sbi->s_next_gen_lock);
+ 	inode->i_generation = sbi->s_next_generation++;
+-- 
+1.7.6.5
+
diff --git a/kernel.spec b/kernel.spec
index a4e875f..be37077 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -732,6 +732,7 @@ Patch21056: KVM-fix-device-assignment-permissions.patch
 Patch21065: Bluetooth-Add-support-for-BCM20702A0.patch
 
 Patch21071: ext4-Fix-error-handling-on-inode-bitmap-corruption.patch
+Patch21072: ext3-Fix-error-handling-on-inode-bitmap-corruption.patch
 
 %endif
 
@@ -1359,6 +1360,7 @@ ApplyPatch Bluetooth-Add-support-for-BCM20702A0.patch
 ApplyPatch KVM-fix-device-assignment-permissions.patch
 
 ApplyPatch ext4-Fix-error-handling-on-inode-bitmap-corruption.patch
+ApplyPatch ext3-Fix-error-handling-on-inode-bitmap-corruption.patch
 
 # END OF PATCH APPLICATIONS
 
@@ -2008,7 +2010,7 @@ fi
 
 %changelog
 * Tue Jan 10 2012 Josh Boyer <jwboyer at redhat.com>
-- Fix ext4 corrupted bitmap error path (pointed out by Eric Sandeen)
+- Fix ext3/ext4 corrupted bitmap error path (pointed out by Eric Sandeen)
 
 * Fri Jan 06 2012 Josh Boyer <jwboyer at redhat.com> 2.6.41.8-1
 - Linux 3.1.8


More information about the scm-commits mailing list