From nobody Sun Feb 8 05:41:24 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 From nobody Sun Feb 8 05:41:24 2026 Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) (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 46CE66FC7; Sun, 7 Apr 2024 06:53:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.249.212.187 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712472791; cv=none; b=Vt5lp/jbrPuyQqOsOAoGpN16DROXGr7zJJ4FY3hNnqlR8vFYM7bDWtUvhubkMM+fQ1LHMw91jQpvu+brSBScNl4K8RHGc+8dkLC5Ai1eTEvLuTE1x5H+IN2fLBpMe+y6fPfIn3SYklYXBQKLdpYO0jPKKfDkh4RJVRGTQjZLqTo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712472791; c=relaxed/simple; bh=9u38Kun1oRcjRxoYAlK2yvfKhQ0kguE1q9nPQjC57MI=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=uSAAtL1AQSy0NL62OtU835nVOJ04D2+jRkro4kovOpZjlILC3MT4kxsA2c0qqNwrP1NL39IGGEvwunpE/saQM1hcNBhJSsuS8s1Y3f2Yb1hXIyWNFojb8LF98Cw8wrzIdUPKFDg+6yEoIklsf2x5+HwZmH51uI9rjhGW6sg4aJg= 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.187 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.88.105]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4VC2sv41j4ztRrk; Sun, 7 Apr 2024 14:50:27 +0800 (CST) Received: from canpemm500010.china.huawei.com (unknown [7.192.105.118]) by mail.maildlp.com (Postfix) with ESMTPS id DFB87140487; 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 2/2] jbd2: add prefix 'jbd2' for 'shrink_type' Date: Sun, 7 Apr 2024 14:53:55 +0800 Message-ID: <20240407065355.1528580-3-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" As 'shrink_type' is exported. The module prefix 'jbd2' is added to distinguish from memory reclamation. Signed-off-by: Ye Bin Reviewed-by: Jan Kara Reviewed-by: Zhang Yi --- fs/jbd2/checkpoint.c | 22 +++++++++++----------- fs/jbd2/commit.c | 2 +- include/linux/jbd2.h | 4 ++-- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/fs/jbd2/checkpoint.c b/fs/jbd2/checkpoint.c index 80c0ab98bc63..951f78634adf 100644 --- a/fs/jbd2/checkpoint.c +++ b/fs/jbd2/checkpoint.c @@ -348,7 +348,7 @@ int jbd2_cleanup_journal_tail(journal_t *journal) * Called with j_list_lock held. */ static unsigned long journal_shrink_one_cp_list(struct journal_head *jh, - enum shrink_type type, + enum jbd2_shrink_type type, bool *released) { struct journal_head *last_jh; @@ -365,12 +365,12 @@ static unsigned long journal_shrink_one_cp_list(struc= t journal_head *jh, jh =3D next_jh; next_jh =3D jh->b_cpnext; =20 - if (type =3D=3D SHRINK_DESTROY) { + if (type =3D=3D JBD2_SHRINK_DESTROY) { ret =3D __jbd2_journal_remove_checkpoint(jh); } else { ret =3D jbd2_journal_try_remove_checkpoint(jh); if (ret < 0) { - if (type =3D=3D SHRINK_BUSY_SKIP) + if (type =3D=3D JBD2_SHRINK_BUSY_SKIP) continue; break; } @@ -437,7 +437,7 @@ unsigned long jbd2_journal_shrink_checkpoint_list(journ= al_t *journal, tid =3D transaction->t_tid; =20 freed =3D journal_shrink_one_cp_list(transaction->t_checkpoint_list, - SHRINK_BUSY_SKIP, &released); + JBD2_SHRINK_BUSY_SKIP, &released); nr_freed +=3D freed; (*nr_to_scan) -=3D min(*nr_to_scan, freed); if (*nr_to_scan =3D=3D 0) @@ -470,20 +470,20 @@ 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 '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. + * If 'type' is JBD2_SHRINK_DESTROY, release all buffers unconditionally. = If + * 'type' is JBD2_SHRINK_BUSY_STOP, will stop release buffers if encounter= s a + * busy buffer. To avoid wasting CPU cycles scanning the buffer list in so= me + * cases, don't pass JBD2_SHRINK_BUSY_SKIP 'type' for this function. * * Called with j_list_lock held. */ void __jbd2_journal_clean_checkpoint_list(journal_t *journal, - enum shrink_type type) + enum jbd2_shrink_type type) { transaction_t *transaction, *last_transaction, *next_transaction; bool released; =20 - WARN_ON_ONCE(type =3D=3D SHRINK_BUSY_SKIP); + WARN_ON_ONCE(type =3D=3D JBD2_SHRINK_BUSY_SKIP); =20 transaction =3D journal->j_checkpoint_transactions; if (!transaction) @@ -529,7 +529,7 @@ void jbd2_journal_destroy_checkpoint(journal_t *journal) spin_unlock(&journal->j_list_lock); break; } - __jbd2_journal_clean_checkpoint_list(journal, SHRINK_DESTROY); + __jbd2_journal_clean_checkpoint_list(journal, JBD2_SHRINK_DESTROY); spin_unlock(&journal->j_list_lock); cond_resched(); } diff --git a/fs/jbd2/commit.c b/fs/jbd2/commit.c index 78ebd04ac97d..65c857ab49ec 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, SHRINK_BUSY_STOP); + __jbd2_journal_clean_checkpoint_list(journal, JBD2_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 58a961999d70..7479f64c0939 100644 --- a/include/linux/jbd2.h +++ b/include/linux/jbd2.h @@ -1434,9 +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 */ -enum shrink_type {SHRINK_DESTROY, SHRINK_BUSY_STOP, SHRINK_BUSY_SKIP}; +enum jbd2_shrink_type {JBD2_SHRINK_DESTROY, JBD2_SHRINK_BUSY_STOP, JBD2_SH= RINK_BUSY_SKIP}; =20 -void __jbd2_journal_clean_checkpoint_list(journal_t *journal, enum shrink_= type type); +void __jbd2_journal_clean_checkpoint_list(journal_t *journal, enum jbd2_sh= rink_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