Commit 069a9166 authored by Jan Kara's avatar Jan Kara

quota: Drop dquot_enable()

Now dquot_enable() has only two internal callers and both of them just
need to update quota flags and don't need most of checks. Just drop
dquot_enable() and fold necessary functionality into the two calling
places.
Signed-off-by: default avatarJan Kara <jack@suse.cz>
parent 7212b95e
...@@ -2493,41 +2493,6 @@ int dquot_quota_on(struct super_block *sb, int type, int format_id, ...@@ -2493,41 +2493,6 @@ int dquot_quota_on(struct super_block *sb, int type, int format_id,
} }
EXPORT_SYMBOL(dquot_quota_on); EXPORT_SYMBOL(dquot_quota_on);
/*
* More powerful function for turning on quotas allowing setting
* of individual quota flags
*/
int dquot_enable(struct inode *inode, int type, int format_id,
unsigned int flags)
{
struct super_block *sb = inode->i_sb;
/* Just unsuspend quotas? */
BUG_ON(flags & DQUOT_SUSPENDED);
/* s_umount should be held in exclusive mode */
if (WARN_ON_ONCE(down_read_trylock(&sb->s_umount)))
up_read(&sb->s_umount);
if (!flags)
return 0;
/* Just updating flags needed? */
if (sb_has_quota_loaded(sb, type)) {
if (flags & DQUOT_USAGE_ENABLED &&
sb_has_quota_usage_enabled(sb, type))
return -EBUSY;
if (flags & DQUOT_LIMITS_ENABLED &&
sb_has_quota_limits_enabled(sb, type))
return -EBUSY;
spin_lock(&dq_state_lock);
sb_dqopt(sb)->flags |= dquot_state_flag(flags, type);
spin_unlock(&dq_state_lock);
return 0;
}
return dquot_load_quota_inode(inode, type, format_id, flags);
}
EXPORT_SYMBOL(dquot_enable);
/* /*
* This function is used when filesystem needs to initialize quotas * This function is used when filesystem needs to initialize quotas
* during mount time. * during mount time.
...@@ -2574,13 +2539,17 @@ static int dquot_quota_enable(struct super_block *sb, unsigned int flags) ...@@ -2574,13 +2539,17 @@ static int dquot_quota_enable(struct super_block *sb, unsigned int flags)
if (!(flags & qtype_enforce_flag(type))) if (!(flags & qtype_enforce_flag(type)))
continue; continue;
/* Can't enforce without accounting */ /* Can't enforce without accounting */
if (!sb_has_quota_usage_enabled(sb, type)) if (!sb_has_quota_usage_enabled(sb, type)) {
return -EINVAL; ret = -EINVAL;
ret = dquot_enable(dqopt->files[type], type, goto out_err;
dqopt->info[type].dqi_fmt_id, }
DQUOT_LIMITS_ENABLED); if (sb_has_quota_limits_enabled(sb, type)) {
if (ret < 0) ret = -EBUSY;
goto out_err; goto out_err;
}
spin_lock(&dq_state_lock);
dqopt->flags |= dquot_state_flag(DQUOT_LIMITS_ENABLED, type);
spin_unlock(&dq_state_lock);
} }
return 0; return 0;
out_err: out_err:
...@@ -2630,10 +2599,12 @@ static int dquot_quota_disable(struct super_block *sb, unsigned int flags) ...@@ -2630,10 +2599,12 @@ static int dquot_quota_disable(struct super_block *sb, unsigned int flags)
out_err: out_err:
/* Backout enforcement disabling we already did */ /* Backout enforcement disabling we already did */
for (type--; type >= 0; type--) { for (type--; type >= 0; type--) {
if (flags & qtype_enforce_flag(type)) if (flags & qtype_enforce_flag(type)) {
dquot_enable(dqopt->files[type], type, spin_lock(&dq_state_lock);
dqopt->info[type].dqi_fmt_id, dqopt->flags |=
DQUOT_LIMITS_ENABLED); dquot_state_flag(DQUOT_LIMITS_ENABLED, type);
spin_unlock(&dq_state_lock);
}
} }
return ret; return ret;
} }
......
...@@ -87,8 +87,6 @@ int dquot_mark_dquot_dirty(struct dquot *dquot); ...@@ -87,8 +87,6 @@ int dquot_mark_dquot_dirty(struct dquot *dquot);
int dquot_file_open(struct inode *inode, struct file *file); int dquot_file_open(struct inode *inode, struct file *file);
int dquot_enable(struct inode *inode, int type, int format_id,
unsigned int flags);
int dquot_load_quota_sb(struct super_block *sb, int type, int format_id, int dquot_load_quota_sb(struct super_block *sb, int type, int format_id,
unsigned int flags); unsigned int flags);
int dquot_load_quota_inode(struct inode *inode, int type, int format_id, int dquot_load_quota_inode(struct inode *inode, int type, int format_id,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment