ext4: remove lock/unlock super
Subsystems (2)
PATCH 4/8 ext4: remove lock/unlock super
From: Marco Stornelli <[email protected]>
Replaced lock and unlock super with a new fs mutex s_lock.
Signed-off-by Marco Stornelli <[email protected]>
---
fs/ext4/ext4.h +2 -0
@@ -1293,6 +1293,8 @@ struct ext4_sb_info {/* Reference to checksum algorithm driver via cryptoapi */ struct crypto_shash *s_chksum_driver; +struct mutex s_lock; +/* Precomputed FS UUID checksum for seeding other checksums */ __u32 s_csum_seed; };
fs/ext4/super.c +9 -8
@@ -861,7 +861,7 @@ static void ext4_put_super(struct super_flush_workqueue (sbi->dio_unwritten_wq);destroy_workqueue (sbi->dio_unwritten_wq); -lock_super (sb); +mutex_lock (&sbi->s_lock);if (sbi->s_journal) { err =jbd2_journal_destroy (sbi->s_journal); sbi->s_journal =NULL ;
@@ -928,7 +928,7 @@ static void ext4_put_super(struct super_* Now that we are completely done shutting down the * superblock, we need to actually destroy the kobject. */ -unlock_super (sb); +mutex_unlock (&sbi->s_lock);kobject_put (&sbi->s_kobj);wait_for_completion (&sbi->s_kobj_unregister);if (sbi->s_chksum_driver)
@@ -3718,6 +3718,7 @@ static int ext4_fill_super(struct super_ sbi->s_gdb_count = db_count;get_random_bytes (&sbi->s_next_generation,sizeof (u32));spin_lock_init (&sbi->s_next_gen_lock); +mutex_init (&sbi->s_lock);init_timer (&sbi->s_err_report); sbi->s_err_report.function = print_daily_error_info;
@@ -4519,11 +4520,11 @@ static int ext4_unfreeze(struct super_blif (sb->s_flags &MS_RDONLY )return 0 ; -lock_super (sb); +mutex_lock (&EXT4_SB (sb)->s_lock);/* Reset the needs_recovery flag before the fs is unlocked. */ EXT4_SET_INCOMPAT_FEATURE (sb,EXT4_FEATURE_INCOMPAT_RECOVER );ext4_commit_super (sb,1 ); -unlock_super (sb); +mutex_unlock (&EXT4_SB (sb)->s_lock);return 0 ; }
@@ -4559,7 +4560,7 @@ static int ext4_remount(struct super_blochar *orig_data =kstrdup (data,GFP_KERNEL );/* Store the original options */ -lock_super (sb); +mutex_lock (&sbi->s_lock); old_sb_flags = sb->s_flags; old_opts.s_mount_opt = sbi->s_mount_opt; old_opts.s_mount_opt2 = sbi->s_mount_opt2;
@@ -4701,7 +4702,7 @@ static int ext4_remount(struct super_bloif (sbi->s_journal ==NULL )ext4_commit_super (sb,1 ); -unlock_super (sb); +mutex_unlock (&sbi->s_lock);#ifdef CONFIG_QUOTA /* Release old quota file names */ for (i =0 ; i <MAXQUOTAS ; i++)
@@ -4715,7 +4716,7 @@ static int ext4_remount(struct super_blo EXT4_FEATURE_RO_COMPAT_QUOTA)) { err =ext4_enable_quotas (sb);if (err) { -lock_super (sb); +mutex_lock (&sbi->s_lock); goto restore_opts; } }
@@ -4744,7 +4745,7 @@ restore_opts: sbi->s_qf_names[i] = old_opts.s_qf_names[i]; }#endif -unlock_super (sb); +mutex_unlock (&sbi->s_lock);kfree (orig_data);return err; }