20 lines
490 B
Diff
20 lines
490 B
Diff
|
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++;
|