quota: Simplify dquot_resume()
authorJan Kara <jack@suse.cz>
Fri, 1 Nov 2019 16:51:05 +0000 (17:51 +0100)
committerJan Kara <jack@suse.cz>
Mon, 4 Nov 2019 08:58:05 +0000 (09:58 +0100)
We already have quota inode loaded when resuming quotas. Use
vfs_load_quota() to avoid some pointless churn with the quota inode.

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

index 9e8eb6e..ecdae91 100644 (file)
@@ -2438,7 +2438,6 @@ static int vfs_load_quota_inode(struct inode *inode, int type, int format_id,
 int dquot_resume(struct super_block *sb, int type)
 {
        struct quota_info *dqopt = sb_dqopt(sb);
-       struct inode *inode;
        int ret = 0, cnt;
        unsigned int flags;
 
@@ -2452,8 +2451,6 @@ int dquot_resume(struct super_block *sb, int type)
                if (!sb_has_quota_suspended(sb, cnt))
                        continue;
 
-               inode = dqopt->files[cnt];
-               dqopt->files[cnt] = NULL;
                spin_lock(&dq_state_lock);
                flags = dqopt->flags & dquot_state_flag(DQUOT_USAGE_ENABLED |
                                                        DQUOT_LIMITS_ENABLED,
@@ -2462,9 +2459,10 @@ int dquot_resume(struct super_block *sb, int type)
                spin_unlock(&dq_state_lock);
 
                flags = dquot_generic_flag(flags, cnt);
-               ret = vfs_load_quota_inode(inode, cnt,
-                               dqopt->info[cnt].dqi_fmt_id, flags);
-               iput(inode);
+               ret = dquot_load_quota_sb(sb, cnt, dqopt->info[cnt].dqi_fmt_id,
+                                         flags);
+               if (ret < 0)
+                       vfs_cleanup_quota_inode(sb, type);
        }
 
        return ret;