From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932582AbdJJWxi (ORCPT ); Tue, 10 Oct 2017 18:53:38 -0400 Received: from mail.kernel.org ([198.145.29.99]:52400 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932316AbdJJWxh (ORCPT ); Tue, 10 Oct 2017 18:53:37 -0400 DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 990F7218BC Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=jaegeuk@kernel.org From: Jaegeuk Kim To: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net Cc: Jaegeuk Kim Subject: [PATCH] f2fs: don't commit quota files Date: Tue, 10 Oct 2017 15:53:35 -0700 Message-Id: <20171010225335.22457-1-jaegeuk@kernel.org> X-Mailer: git-send-email 2.14.0.rc1.383.gd1ce394fe2-goog Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org We don't need to commit every quota changes, since it only recovers fsynced data. So, we need to rely on quotacheck to fix any inconsistency. This also tries to resolve deadlock condition as follows. - f2fs_write_begin - f2fs_reserve_block - mutex(node_change) - dquot_claim_space_nodirty - f2fs_mark_dquot_dirty - dquot_commit - mutex_lock() - f2fs_setattr - dquot_transfer - dqget - dquot_acquire - write_blk - f2fs_quota_write - f2fs_write_begin - mutex(node_change) Signed-off-by: Jaegeuk Kim --- fs/f2fs/super.c | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c index 85ba56ac34f2..5268690dd219 100644 --- a/fs/f2fs/super.c +++ b/fs/f2fs/super.c @@ -1641,20 +1641,6 @@ void f2fs_quota_off_umount(struct super_block *sb) f2fs_quota_off(sb, type); } -static int f2fs_mark_dquot_dirty(struct dquot *dquot) -{ - struct super_block *sb = dquot->dq_sb; - struct f2fs_sb_info *sbi = F2FS_SB(sb); - - if (f2fs_sb_has_quota_ino(sb) || - sbi->s_qf_names[USRQUOTA] || sbi->s_qf_names[GRPQUOTA]) { - dquot_mark_dquot_dirty(dquot); - return dquot_commit(dquot); - } else { - return dquot_mark_dquot_dirty(dquot); - } -} - int f2fs_get_projid(struct inode *inode, kprojid_t *projid) { *projid = F2FS_I(inode)->i_projid; @@ -1666,7 +1652,7 @@ static const struct dquot_operations f2fs_quota_operations = { .write_dquot = dquot_commit, .acquire_dquot = dquot_acquire, .release_dquot = dquot_release, - .mark_dirty = f2fs_mark_dquot_dirty, + .mark_dirty = dquot_mark_dquot_dirty, .write_info = dquot_commit_info, .alloc_dquot = dquot_alloc, .destroy_dquot = dquot_destroy, -- 2.14.0.rc1.383.gd1ce394fe2-goog