Commit be222553 authored by Zhang Yi's avatar Zhang Yi Committed by Theodore Ts'o

jbd2: remove t_checkpoint_io_list

Since t_checkpoint_io_list was stop using in jbd2_log_do_checkpoint()
now, it's time to remove the whole t_checkpoint_io_list logic.
Signed-off-by: default avatarZhang Yi <yi.zhang@huawei.com>
Reviewed-by: default avatarJan Kara <jack@suse.cz>
Link: https://lore.kernel.org/r/20230606135928.434610-3-yi.zhang@huaweicloud.comSigned-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
parent c2d6fd9d
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
* *
* Called with j_list_lock held. * Called with j_list_lock held.
*/ */
static inline void __buffer_unlink_first(struct journal_head *jh) static inline void __buffer_unlink(struct journal_head *jh)
{ {
transaction_t *transaction = jh->b_cp_transaction; transaction_t *transaction = jh->b_cp_transaction;
...@@ -40,23 +40,6 @@ static inline void __buffer_unlink_first(struct journal_head *jh) ...@@ -40,23 +40,6 @@ static inline void __buffer_unlink_first(struct journal_head *jh)
} }
} }
/*
* Unlink a buffer from a transaction checkpoint(io) list.
*
* Called with j_list_lock held.
*/
static inline void __buffer_unlink(struct journal_head *jh)
{
transaction_t *transaction = jh->b_cp_transaction;
__buffer_unlink_first(jh);
if (transaction->t_checkpoint_io_list == jh) {
transaction->t_checkpoint_io_list = jh->b_cpnext;
if (transaction->t_checkpoint_io_list == jh)
transaction->t_checkpoint_io_list = NULL;
}
}
/* /*
* Check a checkpoint buffer could be release or not. * Check a checkpoint buffer could be release or not.
* *
...@@ -503,15 +486,6 @@ unsigned long jbd2_journal_shrink_checkpoint_list(journal_t *journal, ...@@ -503,15 +486,6 @@ unsigned long jbd2_journal_shrink_checkpoint_list(journal_t *journal,
break; break;
if (need_resched() || spin_needbreak(&journal->j_list_lock)) if (need_resched() || spin_needbreak(&journal->j_list_lock))
break; break;
if (released)
continue;
nr_freed += journal_shrink_one_cp_list(transaction->t_checkpoint_io_list,
nr_to_scan, &released);
if (*nr_to_scan == 0)
break;
if (need_resched() || spin_needbreak(&journal->j_list_lock))
break;
} while (transaction != last_transaction); } while (transaction != last_transaction);
if (transaction != last_transaction) { if (transaction != last_transaction) {
...@@ -566,17 +540,6 @@ void __jbd2_journal_clean_checkpoint_list(journal_t *journal, bool destroy) ...@@ -566,17 +540,6 @@ void __jbd2_journal_clean_checkpoint_list(journal_t *journal, bool destroy)
*/ */
if (need_resched()) if (need_resched())
return; return;
if (ret)
continue;
/*
* It is essential that we are as careful as in the case of
* t_checkpoint_list with removing the buffer from the list as
* we can possibly see not yet submitted buffers on io_list
*/
ret = journal_clean_one_cp_list(transaction->
t_checkpoint_io_list, destroy);
if (need_resched())
return;
/* /*
* Stop scanning if we couldn't free the transaction. This * Stop scanning if we couldn't free the transaction. This
* avoids pointless scanning of transactions which still * avoids pointless scanning of transactions which still
...@@ -661,7 +624,7 @@ int __jbd2_journal_remove_checkpoint(struct journal_head *jh) ...@@ -661,7 +624,7 @@ int __jbd2_journal_remove_checkpoint(struct journal_head *jh)
jbd2_journal_put_journal_head(jh); jbd2_journal_put_journal_head(jh);
/* Is this transaction empty? */ /* Is this transaction empty? */
if (transaction->t_checkpoint_list || transaction->t_checkpoint_io_list) if (transaction->t_checkpoint_list)
return 0; return 0;
/* /*
...@@ -753,7 +716,6 @@ void __jbd2_journal_drop_transaction(journal_t *journal, transaction_t *transact ...@@ -753,7 +716,6 @@ void __jbd2_journal_drop_transaction(journal_t *journal, transaction_t *transact
J_ASSERT(transaction->t_forget == NULL); J_ASSERT(transaction->t_forget == NULL);
J_ASSERT(transaction->t_shadow_list == NULL); J_ASSERT(transaction->t_shadow_list == NULL);
J_ASSERT(transaction->t_checkpoint_list == NULL); J_ASSERT(transaction->t_checkpoint_list == NULL);
J_ASSERT(transaction->t_checkpoint_io_list == NULL);
J_ASSERT(atomic_read(&transaction->t_updates) == 0); J_ASSERT(atomic_read(&transaction->t_updates) == 0);
J_ASSERT(journal->j_committing_transaction != transaction); J_ASSERT(journal->j_committing_transaction != transaction);
J_ASSERT(journal->j_running_transaction != transaction); J_ASSERT(journal->j_running_transaction != transaction);
......
...@@ -1141,8 +1141,7 @@ void jbd2_journal_commit_transaction(journal_t *journal) ...@@ -1141,8 +1141,7 @@ void jbd2_journal_commit_transaction(journal_t *journal)
spin_lock(&journal->j_list_lock); spin_lock(&journal->j_list_lock);
commit_transaction->t_state = T_FINISHED; commit_transaction->t_state = T_FINISHED;
/* Check if the transaction can be dropped now that we are finished */ /* Check if the transaction can be dropped now that we are finished */
if (commit_transaction->t_checkpoint_list == NULL && if (commit_transaction->t_checkpoint_list == NULL) {
commit_transaction->t_checkpoint_io_list == NULL) {
__jbd2_journal_drop_transaction(journal, commit_transaction); __jbd2_journal_drop_transaction(journal, commit_transaction);
jbd2_journal_free_transaction(commit_transaction); jbd2_journal_free_transaction(commit_transaction);
} }
......
...@@ -613,12 +613,6 @@ struct transaction_s ...@@ -613,12 +613,6 @@ struct transaction_s
*/ */
struct journal_head *t_checkpoint_list; struct journal_head *t_checkpoint_list;
/*
* Doubly-linked circular list of all buffers submitted for IO while
* checkpointing. [j_list_lock]
*/
struct journal_head *t_checkpoint_io_list;
/* /*
* Doubly-linked circular list of metadata buffers being * Doubly-linked circular list of metadata buffers being
* shadowed by log IO. The IO buffers on the iobuf list and * shadowed by log IO. The IO buffers on the iobuf list and
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment