From nobody Sun Feb 8 05:41:48 2026 Received: from szxga05-in.huawei.com (szxga05-in.huawei.com [45.249.212.191]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9B0792599; Sun, 7 Apr 2024 06:53:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.249.212.191 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712472792; cv=none; b=motXmj9b8ou+ZZR6s2N8F+5k0I0PV1E4/Pd6zQs3rD1vDF4x/s6FuI6uoEpBgnRjvYHUrPiE/yPKb7YY3qbAYUd1w9/wjoON7CL+U5Dd+uJIYDC0tIr50uJhDaF0U6Jeym5xC/ZBlSSQvebEBdacWqlj9TneAV+WNs97qI52zBw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712472792; c=relaxed/simple; bh=5tcHdfFWxVo2Zxce6V23OTmd28fkuZbESrBMeuwYOwM=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=HauDz9MCS8/eq+p7iroJdHccD6UOx5y8nfqbhQd7JOC8tLDjeFkvEgNkqO8x9R4jtIuSglZrq3Sa9/RTdPQDC8Qx8Ju0Bnfsfp3aAIFQQHELPRlLKFuTPfUJuZh6x7OLd2Fz77RnC8l5ujACWCN/rUEDbipoHAYANtolYtmMtcU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=huawei.com; spf=pass smtp.mailfrom=huawei.com; arc=none smtp.client-ip=45.249.212.191 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=huawei.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=huawei.com Received: from mail.maildlp.com (unknown [172.19.163.17]) by szxga05-in.huawei.com (SkyGuard) with ESMTP id 4VC2sj3yWYz1h2SR; Sun, 7 Apr 2024 14:50:17 +0800 (CST) Received: from canpemm500010.china.huawei.com (unknown [7.192.105.118]) by mail.maildlp.com (Postfix) with ESMTPS id 7AD911A0172; Sun, 7 Apr 2024 14:53:06 +0800 (CST) Received: from huawei.com (10.175.127.227) by canpemm500010.china.huawei.com (7.192.105.118) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Sun, 7 Apr 2024 14:53:06 +0800 From: Ye Bin To: , , CC: , , Ye Bin Subject: [PATCH v2 1/2] jbd2: use shrink_type type instead of bool type for __jbd2_journal_clean_checkpoint_list() Date: Sun, 7 Apr 2024 14:53:54 +0800 Message-ID: <20240407065355.1528580-2-yebin10@huawei.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20240407065355.1528580-1-yebin10@huawei.com> References: <20240407065355.1528580-1-yebin10@huawei.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: dggems704-chm.china.huawei.com (10.3.19.181) To canpemm500010.china.huawei.com (7.192.105.118) Content-Type: text/plain; charset="utf-8" "enum shrink_type" can clearly express the meaning of the parameter of __jbd2_journal_clean_checkpoint_list(), and there is no need to use the bool type. Signed-off-by: Ye Bin Reviewed-by: Jan Kara Reviewed-by: Zhang Yi --- fs/jbd2/checkpoint.c | 16 +++++++++------- fs/jbd2/commit.c | 2 +- include/linux/jbd2.h | 4 +++- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/fs/jbd2/checkpoint.c b/fs/jbd2/checkpoint.c index 1c97e64c4784..80c0ab98bc63 100644 --- a/fs/jbd2/checkpoint.c +++ b/fs/jbd2/checkpoint.c @@ -337,8 +337,6 @@ int jbd2_cleanup_journal_tail(journal_t *journal) =20 /* Checkpoint list management */ =20 -enum shrink_type {SHRINK_DESTROY, SHRINK_BUSY_STOP, SHRINK_BUSY_SKIP}; - /* * journal_shrink_one_cp_list * @@ -472,21 +470,25 @@ unsigned long jbd2_journal_shrink_checkpoint_list(jou= rnal_t *journal, * journal_clean_checkpoint_list * * Find all the written-back checkpoint buffers in the journal and release= them. - * If 'destroy' is set, release all buffers unconditionally. + * If 'type' is SHRINK_DESTROY, release all buffers unconditionally. If 't= ype' + * is SHRINK_BUSY_STOP, will stop release buffers if encounters a busy buf= fer. + * To avoid wasting CPU cycles scanning the buffer list in some cases, don= 't + * pass SHRINK_BUSY_SKIP 'type' for this function. * * Called with j_list_lock held. */ -void __jbd2_journal_clean_checkpoint_list(journal_t *journal, bool destroy) +void __jbd2_journal_clean_checkpoint_list(journal_t *journal, + enum shrink_type type) { transaction_t *transaction, *last_transaction, *next_transaction; - enum shrink_type type; bool released; =20 + WARN_ON_ONCE(type =3D=3D SHRINK_BUSY_SKIP); + transaction =3D journal->j_checkpoint_transactions; if (!transaction) return; =20 - type =3D destroy ? SHRINK_DESTROY : SHRINK_BUSY_STOP; last_transaction =3D transaction->t_cpprev; next_transaction =3D transaction; do { @@ -527,7 +529,7 @@ void jbd2_journal_destroy_checkpoint(journal_t *journal) spin_unlock(&journal->j_list_lock); break; } - __jbd2_journal_clean_checkpoint_list(journal, true); + __jbd2_journal_clean_checkpoint_list(journal, SHRINK_DESTROY); spin_unlock(&journal->j_list_lock); cond_resched(); } diff --git a/fs/jbd2/commit.c b/fs/jbd2/commit.c index 5e122586e06e..78ebd04ac97d 100644 --- a/fs/jbd2/commit.c +++ b/fs/jbd2/commit.c @@ -501,7 +501,7 @@ void jbd2_journal_commit_transaction(journal_t *journal) * frees some memory */ spin_lock(&journal->j_list_lock); - __jbd2_journal_clean_checkpoint_list(journal, false); + __jbd2_journal_clean_checkpoint_list(journal, SHRINK_BUSY_STOP); spin_unlock(&journal->j_list_lock); =20 jbd2_debug(3, "JBD2: commit phase 1\n"); diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h index 971f3e826e15..58a961999d70 100644 --- a/include/linux/jbd2.h +++ b/include/linux/jbd2.h @@ -1434,7 +1434,9 @@ void jbd2_update_log_tail(journal_t *journal, tid_t t= id, unsigned long block); extern void jbd2_journal_commit_transaction(journal_t *); =20 /* Checkpoint list management */ -void __jbd2_journal_clean_checkpoint_list(journal_t *journal, bool destroy= ); +enum shrink_type {SHRINK_DESTROY, SHRINK_BUSY_STOP, SHRINK_BUSY_SKIP}; + +void __jbd2_journal_clean_checkpoint_list(journal_t *journal, enum shrink_= type type); unsigned long jbd2_journal_shrink_checkpoint_list(journal_t *journal, unsi= gned long *nr_to_scan); int __jbd2_journal_remove_checkpoint(struct journal_head *); int jbd2_journal_try_remove_checkpoint(struct journal_head *jh); --=20 2.31.1