mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-09 06:43:09 +00:00
quota: Push dqio_sem down to ->write_file_info()
Push down acquisition of dqio_sem into ->write_file_info() callback. Mostly for consistency with other operations. Reviewed-by: Andreas Dilger <adilger@dilger.ca> Signed-off-by: Jan Kara <jack@suse.cz>
This commit is contained in:
parent
f14618c682
commit
9a8ae30e73
@ -443,13 +443,17 @@ static int __ocfs2_global_write_info(struct super_block *sb, int type)
|
||||
int ocfs2_global_write_info(struct super_block *sb, int type)
|
||||
{
|
||||
int err;
|
||||
struct ocfs2_mem_dqinfo *info = sb_dqinfo(sb, type)->dqi_priv;
|
||||
struct quota_info *dqopt = sb_dqopt(sb);
|
||||
struct ocfs2_mem_dqinfo *info = dqopt->info[type].dqi_priv;
|
||||
|
||||
down_write(&dqopt->dqio_sem);
|
||||
err = ocfs2_qinfo_lock(info, 1);
|
||||
if (err < 0)
|
||||
return err;
|
||||
goto out_sem;
|
||||
err = __ocfs2_global_write_info(sb, type);
|
||||
ocfs2_qinfo_unlock(info, 1);
|
||||
out_sem:
|
||||
up_write(&dqopt->dqio_sem);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
@ -415,10 +415,8 @@ int dquot_acquire(struct dquot *dquot)
|
||||
ret = dqopt->ops[dquot->dq_id.type]->commit_dqblk(dquot);
|
||||
/* Write the info if needed */
|
||||
if (info_dirty(&dqopt->info[dquot->dq_id.type])) {
|
||||
down_write(&dqopt->dqio_sem);
|
||||
ret2 = dqopt->ops[dquot->dq_id.type]->write_file_info(
|
||||
dquot->dq_sb, dquot->dq_id.type);
|
||||
up_write(&dqopt->dqio_sem);
|
||||
}
|
||||
if (ret < 0)
|
||||
goto out_iolock;
|
||||
@ -482,10 +480,8 @@ int dquot_release(struct dquot *dquot)
|
||||
ret = dqopt->ops[dquot->dq_id.type]->release_dqblk(dquot);
|
||||
/* Write the info */
|
||||
if (info_dirty(&dqopt->info[dquot->dq_id.type])) {
|
||||
down_write(&dqopt->dqio_sem);
|
||||
ret2 = dqopt->ops[dquot->dq_id.type]->write_file_info(
|
||||
dquot->dq_sb, dquot->dq_id.type);
|
||||
up_write(&dqopt->dqio_sem);
|
||||
}
|
||||
if (ret >= 0)
|
||||
ret = ret2;
|
||||
@ -2054,13 +2050,9 @@ EXPORT_SYMBOL(dquot_transfer);
|
||||
*/
|
||||
int dquot_commit_info(struct super_block *sb, int type)
|
||||
{
|
||||
int ret;
|
||||
struct quota_info *dqopt = sb_dqopt(sb);
|
||||
|
||||
down_write(&dqopt->dqio_sem);
|
||||
ret = dqopt->ops[type]->write_file_info(sb, type);
|
||||
up_write(&dqopt->dqio_sem);
|
||||
return ret;
|
||||
return dqopt->ops[type]->write_file_info(sb, type);
|
||||
}
|
||||
EXPORT_SYMBOL(dquot_commit_info);
|
||||
|
||||
|
@ -186,6 +186,7 @@ static int v1_write_file_info(struct super_block *sb, int type)
|
||||
struct v1_disk_dqblk dqblk;
|
||||
int ret;
|
||||
|
||||
down_write(&dqopt->dqio_sem);
|
||||
dqopt->info[type].dqi_flags &= ~DQF_INFO_DIRTY;
|
||||
ret = sb->s_op->quota_read(sb, type, (char *)&dqblk,
|
||||
sizeof(struct v1_disk_dqblk), v1_dqoff(0));
|
||||
@ -203,6 +204,7 @@ static int v1_write_file_info(struct super_block *sb, int type)
|
||||
else if (ret > 0)
|
||||
ret = -EIO;
|
||||
out:
|
||||
up_write(&dqopt->dqio_sem);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -154,10 +154,12 @@ static int v2_read_file_info(struct super_block *sb, int type)
|
||||
static int v2_write_file_info(struct super_block *sb, int type)
|
||||
{
|
||||
struct v2_disk_dqinfo dinfo;
|
||||
struct mem_dqinfo *info = sb_dqinfo(sb, type);
|
||||
struct quota_info *dqopt = sb_dqopt(sb);
|
||||
struct mem_dqinfo *info = &dqopt->info[type];
|
||||
struct qtree_mem_dqinfo *qinfo = info->dqi_priv;
|
||||
ssize_t size;
|
||||
|
||||
down_write(&dqopt->dqio_sem);
|
||||
spin_lock(&dq_data_lock);
|
||||
info->dqi_flags &= ~DQF_INFO_DIRTY;
|
||||
dinfo.dqi_bgrace = cpu_to_le32(info->dqi_bgrace);
|
||||
@ -170,6 +172,7 @@ static int v2_write_file_info(struct super_block *sb, int type)
|
||||
dinfo.dqi_free_entry = cpu_to_le32(qinfo->dqi_free_entry);
|
||||
size = sb->s_op->quota_write(sb, type, (char *)&dinfo,
|
||||
sizeof(struct v2_disk_dqinfo), V2_DQINFOOFF);
|
||||
up_write(&dqopt->dqio_sem);
|
||||
if (size != sizeof(struct v2_disk_dqinfo)) {
|
||||
quota_error(sb, "Can't write info structure");
|
||||
return -1;
|
||||
|
Loading…
Reference in New Issue
Block a user