mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-03 19:55:31 +00:00
quota: factor out dquot_write_dquot()
Refactor out dquot_write_dquot() to reduce duplicate code. Signed-off-by: Baokun Li <libaokun1@huawei.com> Signed-off-by: Jan Kara <jack@suse.cz> Message-Id: <20230630110822.3881712-2-libaokun1@huawei.com>
This commit is contained in:
parent
50607b514d
commit
0241284778
@ -628,6 +628,18 @@ int dquot_scan_active(struct super_block *sb,
|
||||
}
|
||||
EXPORT_SYMBOL(dquot_scan_active);
|
||||
|
||||
static inline int dquot_write_dquot(struct dquot *dquot)
|
||||
{
|
||||
int ret = dquot->dq_sb->dq_op->write_dquot(dquot);
|
||||
if (ret < 0) {
|
||||
quota_error(dquot->dq_sb, "Can't write quota structure "
|
||||
"(error %d). Quota may get out of sync!", ret);
|
||||
/* Clear dirty bit anyway to avoid infinite loop. */
|
||||
clear_dquot_dirty(dquot);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Write all dquot structures to quota files */
|
||||
int dquot_writeback_dquots(struct super_block *sb, int type)
|
||||
{
|
||||
@ -658,16 +670,9 @@ int dquot_writeback_dquots(struct super_block *sb, int type)
|
||||
* use count */
|
||||
dqgrab(dquot);
|
||||
spin_unlock(&dq_list_lock);
|
||||
err = sb->dq_op->write_dquot(dquot);
|
||||
if (err) {
|
||||
/*
|
||||
* Clear dirty bit anyway to avoid infinite
|
||||
* loop here.
|
||||
*/
|
||||
clear_dquot_dirty(dquot);
|
||||
if (!ret)
|
||||
ret = err;
|
||||
}
|
||||
err = dquot_write_dquot(dquot);
|
||||
if (err && !ret)
|
||||
ret = err;
|
||||
dqput(dquot);
|
||||
spin_lock(&dq_list_lock);
|
||||
}
|
||||
@ -765,8 +770,6 @@ static struct shrinker dqcache_shrinker = {
|
||||
*/
|
||||
void dqput(struct dquot *dquot)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (!dquot)
|
||||
return;
|
||||
#ifdef CONFIG_QUOTA_DEBUG
|
||||
@ -794,17 +797,7 @@ void dqput(struct dquot *dquot)
|
||||
if (dquot_dirty(dquot)) {
|
||||
spin_unlock(&dq_list_lock);
|
||||
/* Commit dquot before releasing */
|
||||
ret = dquot->dq_sb->dq_op->write_dquot(dquot);
|
||||
if (ret < 0) {
|
||||
quota_error(dquot->dq_sb, "Can't write quota structure"
|
||||
" (error %d). Quota may get out of sync!",
|
||||
ret);
|
||||
/*
|
||||
* We clear dirty bit anyway, so that we avoid
|
||||
* infinite loop here
|
||||
*/
|
||||
clear_dquot_dirty(dquot);
|
||||
}
|
||||
dquot_write_dquot(dquot);
|
||||
goto we_slept;
|
||||
}
|
||||
if (test_bit(DQ_ACTIVE_B, &dquot->dq_flags)) {
|
||||
|
Loading…
Reference in New Issue
Block a user