quota: Remove dqonoff_mutex from dquot_scan_active()
authorJan Kara <jack@suse.cz>
Wed, 23 Nov 2016 12:52:19 +0000 (13:52 +0100)
committerJan Kara <jack@suse.cz>
Wed, 30 Nov 2016 07:37:11 +0000 (08:37 +0100)
All callers of dquot_scan_active() now hold s_umount so we can rely on
that lock to protect us against quota state changes.

Signed-off-by: Jan Kara <jack@suse.cz>
fs/quota/dquot.c

index 2a9dc3fb491c60ef8afc129573b5a2efd5ee4aa6..d91aecc939c9b83dc7509af5256d544e94cc9e45 100644 (file)
@@ -572,7 +572,8 @@ int dquot_scan_active(struct super_block *sb,
        struct dquot *dquot, *old_dquot = NULL;
        int ret = 0;
 
        struct dquot *dquot, *old_dquot = NULL;
        int ret = 0;
 
-       mutex_lock(&sb_dqopt(sb)->dqonoff_mutex);
+       WARN_ON_ONCE(!rwsem_is_locked(&sb->s_umount));
+
        spin_lock(&dq_list_lock);
        list_for_each_entry(dquot, &inuse_list, dq_inuse) {
                if (!test_bit(DQ_ACTIVE_B, &dquot->dq_flags))
        spin_lock(&dq_list_lock);
        list_for_each_entry(dquot, &inuse_list, dq_inuse) {
                if (!test_bit(DQ_ACTIVE_B, &dquot->dq_flags))
@@ -603,7 +604,6 @@ int dquot_scan_active(struct super_block *sb,
        spin_unlock(&dq_list_lock);
 out:
        dqput(old_dquot);
        spin_unlock(&dq_list_lock);
 out:
        dqput(old_dquot);
-       mutex_unlock(&sb_dqopt(sb)->dqonoff_mutex);
        return ret;
 }
 EXPORT_SYMBOL(dquot_scan_active);
        return ret;
 }
 EXPORT_SYMBOL(dquot_scan_active);