All of lore.kernel.org
 help / color / mirror / Atom feed
From: "yebin (H)" <yebin10@huawei.com>
To: "Darrick J. Wong" <djwong@kernel.org>
Cc: <tytso@mit.edu>, <adilger.kernel@dilger.ca>,
	<linux-ext4@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<jack@suse.cz>
Subject: Re: [PATCH] jbd2: use shrink_type type instead of bool type for __jbd2_journal_clean_checkpoint_list()
Date: Mon, 1 Apr 2024 14:33:25 +0800	[thread overview]
Message-ID: <660A5535.7080005@huawei.com> (raw)
In-Reply-To: <20240401024417.GA739535@frogsfrogsfrogs>



On 2024/4/1 10:44, Darrick J. Wong wrote:
> On Mon, Apr 01, 2024 at 09:16:14AM +0800, Ye Bin wrote:
>> "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 <yebin10@huawei.com>
>> ---
>>   fs/jbd2/checkpoint.c | 9 +++------
>>   fs/jbd2/commit.c     | 2 +-
>>   include/linux/jbd2.h | 4 +++-
>>   3 files changed, 7 insertions(+), 8 deletions(-)
>>
>> diff --git a/fs/jbd2/checkpoint.c b/fs/jbd2/checkpoint.c
>> index 1c97e64c4784..d6e8b80a4078 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
>>    *
>> @@ -476,17 +474,16 @@ unsigned long jbd2_journal_shrink_checkpoint_list(journal_t *journal,
>>    *
>>    * 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;
>>   
>>   	transaction = journal->j_checkpoint_transactions;
>>   	if (!transaction)
>>   		return;
>>   
>> -	type = destroy ? SHRINK_DESTROY : SHRINK_BUSY_STOP;
> What is supposed to happen if the caller passes in SHRINK_BUSY_SKIP?
>
> --D

If SHRING_BUSY_SKIP is passed, the buffers in use will be skipped during traversal
and release.Currently, SHRINKING_BUSY_SKIP is used in the memory reclamation process.

>>   	last_transaction = transaction->t_cpprev;
>>   	next_transaction = transaction;
>>   	do {
>> @@ -527,7 +524,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
>>
>>
> .
>


  reply	other threads:[~2024-04-01  6:33 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-01  1:16 [PATCH] jbd2: use shrink_type type instead of bool type for __jbd2_journal_clean_checkpoint_list() Ye Bin
2024-04-01  2:17 ` Zhang Yi
2024-04-01  2:44 ` Darrick J. Wong
2024-04-01  6:33   ` yebin (H) [this message]
2024-04-02 12:55     ` Jan Kara
2024-04-04  0:18 ` Dave Chinner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=660A5535.7080005@huawei.com \
    --to=yebin10@huawei.com \
    --cc=adilger.kernel@dilger.ca \
    --cc=djwong@kernel.org \
    --cc=jack@suse.cz \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tytso@mit.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.