Commit 3e44f9f1dc19e2b8d4f7ca3b3c63e976b22ad372

Authored by Jan Blunck
Committed by Arnd Bergmann
1 parent 6841c05021

BKL: Remove BKL from ext2 filesystem

The BKL is still used in ext2_put_super(), ext2_fill_super(), ext2_sync_fs()
ext2_remount() and ext2_write_inode(). From these calls ext2_put_super(),
ext2_fill_super() and ext2_remount() are protected against each other by
the struct super_block s_umount rw semaphore. The call in ext2_write_inode()
could only protect the modification of the ext2_sb_info through
ext2_update_dynamic_rev() against concurrent ext2_sync_fs() or ext2_remount().
ext2_fill_super() and ext2_put_super() can be left out because you need a
valid filesystem reference in all three cases, which you do not have when
you are one of these functions.

If the BKL is only protecting the modification of the ext2_sb_info it can
safely be removed since this is protected by the struct ext2_sb_info s_lock.

Signed-off-by: Jan Blunck <jblunck@infradead.org>
Cc: Jan Kara <jack@suse.cz>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Showing 1 changed file with 0 additions and 4 deletions Side-by-side Diff

... ... @@ -747,8 +747,6 @@
747 747 __le32 features;
748 748 int err;
749 749  
750   - lock_kernel();
751   -
752 750 err = -ENOMEM;
753 751 sbi = kzalloc(sizeof(*sbi), GFP_KERNEL);
754 752 if (!sbi)
... ... @@ -1086,7 +1084,6 @@
1086 1084 if (ext2_setup_super (sb, es, sb->s_flags & MS_RDONLY))
1087 1085 sb->s_flags |= MS_RDONLY;
1088 1086 ext2_write_super(sb);
1089   - unlock_kernel();
1090 1087 return 0;
1091 1088  
1092 1089 cantfind_ext2:
... ... @@ -1112,7 +1109,6 @@
1112 1109 kfree(sbi->s_blockgroup_lock);
1113 1110 kfree(sbi);
1114 1111 failed_unlock:
1115   - unlock_kernel();
1116 1112 return ret;
1117 1113 }
1118 1114