summaryrefslogtreecommitdiffstats
path: root/ext4-Fix-error-handling-on-inode-bitmap-corruption.patch
diff options
context:
space:
mode:
Diffstat (limited to 'ext4-Fix-error-handling-on-inode-bitmap-corruption.patch')
-rw-r--r--ext4-Fix-error-handling-on-inode-bitmap-corruption.patch19
1 files changed, 19 insertions, 0 deletions
diff --git a/ext4-Fix-error-handling-on-inode-bitmap-corruption.patch b/ext4-Fix-error-handling-on-inode-bitmap-corruption.patch
new file mode 100644
index 000000000..e22a2b4ff
--- /dev/null
+++ b/ext4-Fix-error-handling-on-inode-bitmap-corruption.patch
@@ -0,0 +1,19 @@
+diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c
+index 00beb4f..8fb6844 100644
+--- a/fs/ext4/ialloc.c
++++ b/fs/ext4/ialloc.c
+@@ -885,8 +885,12 @@ got:
+ if (IS_DIRSYNC(inode))
+ ext4_handle_sync(handle);
+ 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++;