Received: by 2002:ab2:3350:0:b0:1f4:6588:b3a7 with SMTP id o16csp715233lqe; Sat, 6 Apr 2024 23:53:40 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCXRQcIz+z4F/uTSOy6HSqbI/KJMH5weYNmExftOWpITf14Vpbtvttnf1604dBcCGO41g18GpJvQ1eGnq1ygK1k59cMK2IWsAXRb4n44aA== X-Google-Smtp-Source: AGHT+IHcvEa5mcLUV2WbvzvkYCKpX2kIBBEc972bBnZdI/o0oVDzta9MXPFghgHl0/L8z34+8FFT X-Received: by 2002:a17:903:22c1:b0:1e3:e4ff:7054 with SMTP id y1-20020a17090322c100b001e3e4ff7054mr1920882plg.38.1712472820062; Sat, 06 Apr 2024 23:53:40 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1712472820; cv=pass; d=google.com; s=arc-20160816; b=Xtpmi7ISdcO3WWZ60ugggSk0ew7TV3g0Vv1KDcPJgiSa9xJcq7kkuX3s/qibulevIf eU3C1M++o51pNcK3Hdy+s5MMuuoBO3TAoz3YIf7PsemdwILTvLWKoCgY3nnbAGKAnH+z /eMHM0bONvIyvntrike32rDM4SWoF9G2F+9A6nORVGMYp+H5Jchrb0e2y07YzkVQwuCZ RLakPLyXHRrEfi70cOsCO6yMdt5dG03WZQvXuHqiERb7jFV+ZDwReXOSPAyOuZX7QrOM HBb/yqftzsd6ZGMUkbVzl/kd8StuQQCFfYAiCNH36irsVqSGqygm3ARsKPtzq6n9Vs4X hZoQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=OM21267SkdOK+jRkAPnhlavl9JDogeenS3IpCxYW4Nw=; fh=0YRSAtnrSRvhtzUzSfhpD62rtNa0OOsDCBO4xMqK++A=; b=fVTzB106zcv4Lt2A9QGvNai0l9wmaI3PTPtl7P6ND54JIGb3WhOOZf5r8DApVzkagv 8QJsu98b5av/b5smFbAHwjuerbhrUtxj6LcjL/0aDFNuklh0NMh6h7DCBsah0EVk3HDa psAUVuKWF4FI4xuVfI7ituQvEOOEoVVP46r9D05p6xCyb0Q1nTezCv805XyANzGnGta9 WNsbi8QtfQ0Xb1vHfU8a1tzZAiExLxZXLZQqRAJIx7xFD93jVtpKlL0VYpqHIlV/52mo Qad9ysIT7k9LOzE8n/dL7BVHz141pRBtuDw3r/mrcTlmpATICivMpJZppk0KZ92gECN4 W+Vw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1 spf=pass spfdomain=huawei.com dmarc=pass fromdomain=huawei.com); spf=pass (google.com: domain of linux-kernel+bounces-134205-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-134205-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id h12-20020a170902f7cc00b001dc69aeefafsi4117617plw.517.2024.04.06.23.53.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 06 Apr 2024 23:53:40 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-134205-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; arc=pass (i=1 spf=pass spfdomain=huawei.com dmarc=pass fromdomain=huawei.com); spf=pass (google.com: domain of linux-kernel+bounces-134205-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-134205-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id BB46F28205A for ; Sun, 7 Apr 2024 06:53:39 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 8A1321171D; Sun, 7 Apr 2024 06:53:12 +0000 (UTC) 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: 8bit Content-Type: text/plain X-ClientProxiedBy: dggems704-chm.china.huawei.com (10.3.19.181) To canpemm500010.china.huawei.com (7.192.105.118) "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 --- 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) /* Checkpoint list management */ -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(journal_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 'type' + * is SHRINK_BUSY_STOP, will stop release buffers if encounters a busy buffer. + * 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; + WARN_ON_ONCE(type == SHRINK_BUSY_SKIP); + transaction = journal->j_checkpoint_transactions; if (!transaction) return; - type = destroy ? SHRINK_DESTROY : SHRINK_BUSY_STOP; last_transaction = transaction->t_cpprev; next_transaction = 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); 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 tid, unsigned long block); extern void jbd2_journal_commit_transaction(journal_t *); /* 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, unsigned long *nr_to_scan); int __jbd2_journal_remove_checkpoint(struct journal_head *); int jbd2_journal_try_remove_checkpoint(struct journal_head *jh); -- 2.31.1