Linux Btrfs filesystem development
 help / color / mirror / Atom feed
* [PATCH 0/8] btrfs: some list extraction and disposal cleanups
@ 2025-05-02 10:30 fdmanana
  2025-05-02 10:30 ` [PATCH 1/8] btrfs: simplify getting and extracting previous transaction during commit fdmanana
                   ` (9 more replies)
  0 siblings, 10 replies; 11+ messages in thread
From: fdmanana @ 2025-05-02 10:30 UTC (permalink / raw)
  To: linux-btrfs

From: Filipe Manana <fdmanana@suse.com>

Simplify some list element extractions and list disposals. More details in
the changelogs.

Filipe Manana (8):
  btrfs: simplify getting and extracting previous transaction during commit
  btrfs: simplify getting and extracting previous transaction at clean_pinned_extents()
  btrfs: simplify cow only root list extraction during transaction commit
  btrfs: raid56: use list_last_entry() at cache_rbio()
  btrfs: simplify extracting delayed node at btrfs_first_delayed_node()
  btrfs: simplify extracting delayed node at btrfs_first_prepared_delayed_node()
  btrfs: simplify csum list release at btrfs_put_ordered_extent()
  btrfs: defrag: use list_last_entry() at defrag_collect_targets()

 fs/btrfs/block-group.c   |  5 ++---
 fs/btrfs/defrag.c        |  8 ++++----
 fs/btrfs/delayed-inode.c | 31 ++++++++++++-------------------
 fs/btrfs/ordered-data.c  | 12 ++++--------
 fs/btrfs/raid56.c        |  6 +++---
 fs/btrfs/transaction.c   | 16 +++++++---------
 6 files changed, 32 insertions(+), 46 deletions(-)

-- 
2.47.2


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 1/8] btrfs: simplify getting and extracting previous transaction during commit
  2025-05-02 10:30 [PATCH 0/8] btrfs: some list extraction and disposal cleanups fdmanana
@ 2025-05-02 10:30 ` fdmanana
  2025-05-02 10:30 ` [PATCH 2/8] btrfs: simplify getting and extracting previous transaction at clean_pinned_extents() fdmanana
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: fdmanana @ 2025-05-02 10:30 UTC (permalink / raw)
  To: linux-btrfs

From: Filipe Manana <fdmanana@suse.com>

Instead of detecting if there is a previous transaction by comparing the
current transaction's list prev member to the head of the transaction
list (fs_info->trans_list), use the list_is_first() helper which contains
that logic and the naming makes sense since a new transaction is always
added to the end of the list fs_info->trans_list with list_add_tail().

And instead of extracting the previous transaction with the more generic
list_entry() helper against the current transaction's list prev member,
use the more specific list_prev_entry() helper, which makes it clear what
we are doing and is shorter.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
 fs/btrfs/transaction.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c
index 5a58d97a5dfc..fe79d65c8635 100644
--- a/fs/btrfs/transaction.c
+++ b/fs/btrfs/transaction.c
@@ -2270,14 +2270,13 @@ int btrfs_commit_transaction(struct btrfs_trans_handle *trans)
 	wake_up(&fs_info->transaction_blocked_wait);
 	btrfs_trans_state_lockdep_release(fs_info, BTRFS_LOCKDEP_TRANS_COMMIT_PREP);
 
-	if (cur_trans->list.prev != &fs_info->trans_list) {
+	if (!list_is_first(&cur_trans->list, &fs_info->trans_list)) {
 		enum btrfs_trans_state want_state = TRANS_STATE_COMPLETED;
 
 		if (trans->in_fsync)
 			want_state = TRANS_STATE_SUPER_COMMITTED;
 
-		prev_trans = list_entry(cur_trans->list.prev,
-					struct btrfs_transaction, list);
+		prev_trans = list_prev_entry(cur_trans, list);
 		if (prev_trans->state < want_state) {
 			refcount_inc(&prev_trans->use_count);
 			spin_unlock(&fs_info->trans_lock);
-- 
2.47.2


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 2/8] btrfs: simplify getting and extracting previous transaction at clean_pinned_extents()
  2025-05-02 10:30 [PATCH 0/8] btrfs: some list extraction and disposal cleanups fdmanana
  2025-05-02 10:30 ` [PATCH 1/8] btrfs: simplify getting and extracting previous transaction during commit fdmanana
@ 2025-05-02 10:30 ` fdmanana
  2025-05-02 10:30 ` [PATCH 3/8] btrfs: simplify cow only root list extraction during transaction commit fdmanana
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: fdmanana @ 2025-05-02 10:30 UTC (permalink / raw)
  To: linux-btrfs

From: Filipe Manana <fdmanana@suse.com>

Instead of detecting if there is a previous transaction by comparing the
current transaction's list prev member to the head of the transaction
list (fs_info->trans_list), use the list_is_first() helper which contains
that logic and the naming makes sense since a new transaction is always
added to the end of the list fs_info->trans_list with list_add_tail().

We are also extracting the previous transaction with list_last_entry()
against the transaction, which is correct but confusing because that
function is usually meant to be used against a pointer to the start of a
list and not a member of a list. It is easier to reason by either calling
list_first_entry() against the list fs_info->trans_list, since we can
never have more than two transactions in the list, or by calling
list_prev_entry() against the transaction. So change that to use the later
method.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
 fs/btrfs/block-group.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/fs/btrfs/block-group.c b/fs/btrfs/block-group.c
index e3b912d539e2..a41ca673ad1a 100644
--- a/fs/btrfs/block-group.c
+++ b/fs/btrfs/block-group.c
@@ -1418,9 +1418,8 @@ static bool clean_pinned_extents(struct btrfs_trans_handle *trans,
 	int ret;
 
 	spin_lock(&fs_info->trans_lock);
-	if (trans->transaction->list.prev != &fs_info->trans_list) {
-		prev_trans = list_last_entry(&trans->transaction->list,
-					     struct btrfs_transaction, list);
+	if (!list_is_first(&trans->transaction->list, &fs_info->trans_list)) {
+		prev_trans = list_prev_entry(trans->transaction, list);
 		refcount_inc(&prev_trans->use_count);
 	}
 	spin_unlock(&fs_info->trans_lock);
-- 
2.47.2


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 3/8] btrfs: simplify cow only root list extraction during transaction commit
  2025-05-02 10:30 [PATCH 0/8] btrfs: some list extraction and disposal cleanups fdmanana
  2025-05-02 10:30 ` [PATCH 1/8] btrfs: simplify getting and extracting previous transaction during commit fdmanana
  2025-05-02 10:30 ` [PATCH 2/8] btrfs: simplify getting and extracting previous transaction at clean_pinned_extents() fdmanana
@ 2025-05-02 10:30 ` fdmanana
  2025-05-02 10:30 ` [PATCH 4/8] btrfs: raid56: use list_last_entry() at cache_rbio() fdmanana
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: fdmanana @ 2025-05-02 10:30 UTC (permalink / raw)
  To: linux-btrfs

From: Filipe Manana <fdmanana@suse.com>

There's no need to keep a local variable to extract the first member of
the list and then do a list_entry() call, we can use list_first_entry()
instead, removing the need for the temporary variable and extracting the
first element in a single step.

Also, there's no need to do a list_del_init() followed by list_add_tail(),
instead we can use list_move_tail(). We are in transaction commit critical
section where we don't need to worry about concurrency and that's why we
don't take any locks and can use list_move_tail() (we do assert early at
commit_cowonly_roots() that we are in the critical section, that the
transaction's state is TRANS_STATE_COMMIT_DOING).

Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
 fs/btrfs/transaction.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c
index fe79d65c8635..e0256eecf176 100644
--- a/fs/btrfs/transaction.c
+++ b/fs/btrfs/transaction.c
@@ -1326,7 +1326,6 @@ static noinline int commit_cowonly_roots(struct btrfs_trans_handle *trans)
 	struct btrfs_fs_info *fs_info = trans->fs_info;
 	struct list_head *dirty_bgs = &trans->transaction->dirty_bgs;
 	struct list_head *io_bgs = &trans->transaction->io_bgs;
-	struct list_head *next;
 	struct extent_buffer *eb;
 	int ret;
 
@@ -1362,13 +1361,13 @@ static noinline int commit_cowonly_roots(struct btrfs_trans_handle *trans)
 again:
 	while (!list_empty(&fs_info->dirty_cowonly_roots)) {
 		struct btrfs_root *root;
-		next = fs_info->dirty_cowonly_roots.next;
-		list_del_init(next);
-		root = list_entry(next, struct btrfs_root, dirty_list);
+
+		root = list_first_entry(&fs_info->dirty_cowonly_roots,
+					struct btrfs_root, dirty_list);
 		clear_bit(BTRFS_ROOT_DIRTY, &root->state);
+		list_move_tail(&root->dirty_list,
+			       &trans->transaction->switch_commits);
 
-		list_add_tail(&root->dirty_list,
-			      &trans->transaction->switch_commits);
 		ret = update_cowonly_root(trans, root);
 		if (ret)
 			return ret;
-- 
2.47.2


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 4/8] btrfs: raid56: use list_last_entry() at cache_rbio()
  2025-05-02 10:30 [PATCH 0/8] btrfs: some list extraction and disposal cleanups fdmanana
                   ` (2 preceding siblings ...)
  2025-05-02 10:30 ` [PATCH 3/8] btrfs: simplify cow only root list extraction during transaction commit fdmanana
@ 2025-05-02 10:30 ` fdmanana
  2025-05-02 10:30 ` [PATCH 5/8] btrfs: simplify extracting delayed node at btrfs_first_delayed_node() fdmanana
                   ` (5 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: fdmanana @ 2025-05-02 10:30 UTC (permalink / raw)
  To: linux-btrfs

From: Filipe Manana <fdmanana@suse.com>

Instead of using list_entry() against the list's prev entry, use
list_last_entry(), which removes the need to know the last member is
accessed through the prev list pointer and the naming makes it easier
to reason about what we are doing.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
 fs/btrfs/raid56.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/fs/btrfs/raid56.c b/fs/btrfs/raid56.c
index fd96b5040584..c01d0ab80f3b 100644
--- a/fs/btrfs/raid56.c
+++ b/fs/btrfs/raid56.c
@@ -577,9 +577,9 @@ static void cache_rbio(struct btrfs_raid_bio *rbio)
 	if (table->cache_size > RBIO_CACHE_SIZE) {
 		struct btrfs_raid_bio *found;
 
-		found = list_entry(table->stripe_cache.prev,
-				  struct btrfs_raid_bio,
-				  stripe_cache);
+		found = list_last_entry(&table->stripe_cache,
+					struct btrfs_raid_bio,
+					stripe_cache);
 
 		if (found != rbio)
 			__remove_rbio_from_cache(found);
-- 
2.47.2


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 5/8] btrfs: simplify extracting delayed node at btrfs_first_delayed_node()
  2025-05-02 10:30 [PATCH 0/8] btrfs: some list extraction and disposal cleanups fdmanana
                   ` (3 preceding siblings ...)
  2025-05-02 10:30 ` [PATCH 4/8] btrfs: raid56: use list_last_entry() at cache_rbio() fdmanana
@ 2025-05-02 10:30 ` fdmanana
  2025-05-02 10:30 ` [PATCH 6/8] btrfs: simplify extracting delayed node at btrfs_first_prepared_delayed_node() fdmanana
                   ` (4 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: fdmanana @ 2025-05-02 10:30 UTC (permalink / raw)
  To: linux-btrfs

From: Filipe Manana <fdmanana@suse.com>

Instead of grabbing the next pointer from the list and then doing a
list_entry() call, we can simply use list_first_entry(), removing the need
for list_head variable.

Also there's no need to check if the list is empty before attempting to
extract the first element, we can use list_first_entry_or_null(), removing
the need for a special if statement and the 'out' label.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
 fs/btrfs/delayed-inode.c | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c
index 206d39e5ce57..a1ac35bc789a 100644
--- a/fs/btrfs/delayed-inode.c
+++ b/fs/btrfs/delayed-inode.c
@@ -216,17 +216,13 @@ static void btrfs_dequeue_delayed_node(struct btrfs_delayed_root *root,
 static struct btrfs_delayed_node *btrfs_first_delayed_node(
 			struct btrfs_delayed_root *delayed_root)
 {
-	struct list_head *p;
-	struct btrfs_delayed_node *node = NULL;
+	struct btrfs_delayed_node *node;
 
 	spin_lock(&delayed_root->lock);
-	if (list_empty(&delayed_root->node_list))
-		goto out;
-
-	p = delayed_root->node_list.next;
-	node = list_entry(p, struct btrfs_delayed_node, n_list);
-	refcount_inc(&node->refs);
-out:
+	node = list_first_entry_or_null(&delayed_root->node_list,
+					struct btrfs_delayed_node, n_list);
+	if (node)
+		refcount_inc(&node->refs);
 	spin_unlock(&delayed_root->lock);
 
 	return node;
-- 
2.47.2


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 6/8] btrfs: simplify extracting delayed node at btrfs_first_prepared_delayed_node()
  2025-05-02 10:30 [PATCH 0/8] btrfs: some list extraction and disposal cleanups fdmanana
                   ` (4 preceding siblings ...)
  2025-05-02 10:30 ` [PATCH 5/8] btrfs: simplify extracting delayed node at btrfs_first_delayed_node() fdmanana
@ 2025-05-02 10:30 ` fdmanana
  2025-05-02 10:30 ` [PATCH 7/8] btrfs: simplify csum list release at btrfs_put_ordered_extent() fdmanana
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: fdmanana @ 2025-05-02 10:30 UTC (permalink / raw)
  To: linux-btrfs

From: Filipe Manana <fdmanana@suse.com>

Instead of grabbing the next pointer from the list and then doing a
list_entry() call, we can simply use list_first_entry(), removing the need
for list_head variable.

Also there's no need to check if the list is empty before attempting to
extract the first element, we can use list_first_entry_or_null(), removing
the need for a special if statement and the 'out' label.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
 fs/btrfs/delayed-inode.c | 17 +++++++----------
 1 file changed, 7 insertions(+), 10 deletions(-)

diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c
index a1ac35bc789a..c7cc24a5dd5e 100644
--- a/fs/btrfs/delayed-inode.c
+++ b/fs/btrfs/delayed-inode.c
@@ -294,18 +294,15 @@ static inline void btrfs_release_delayed_node(struct btrfs_delayed_node *node)
 static struct btrfs_delayed_node *btrfs_first_prepared_delayed_node(
 					struct btrfs_delayed_root *delayed_root)
 {
-	struct list_head *p;
-	struct btrfs_delayed_node *node = NULL;
+	struct btrfs_delayed_node *node;
 
 	spin_lock(&delayed_root->lock);
-	if (list_empty(&delayed_root->prepare_list))
-		goto out;
-
-	p = delayed_root->prepare_list.next;
-	list_del_init(p);
-	node = list_entry(p, struct btrfs_delayed_node, p_list);
-	refcount_inc(&node->refs);
-out:
+	node = list_first_entry_or_null(&delayed_root->prepare_list,
+					struct btrfs_delayed_node, p_list);
+	if (node) {
+		list_del_init(&node->p_list);
+		refcount_inc(&node->refs);
+	}
 	spin_unlock(&delayed_root->lock);
 
 	return node;
-- 
2.47.2


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 7/8] btrfs: simplify csum list release at btrfs_put_ordered_extent()
  2025-05-02 10:30 [PATCH 0/8] btrfs: some list extraction and disposal cleanups fdmanana
                   ` (5 preceding siblings ...)
  2025-05-02 10:30 ` [PATCH 6/8] btrfs: simplify extracting delayed node at btrfs_first_prepared_delayed_node() fdmanana
@ 2025-05-02 10:30 ` fdmanana
  2025-05-02 10:30 ` [PATCH 8/8] btrfs: defrag: use list_last_entry() at defrag_collect_targets() fdmanana
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 11+ messages in thread
From: fdmanana @ 2025-05-02 10:30 UTC (permalink / raw)
  To: linux-btrfs

From: Filipe Manana <fdmanana@suse.com>

Instead of extracting each element by grabbing the list's first member in
a local list_head variable, then extracting the csum with list_entry() and
iterating with a while loop checking for list emptyness, use the iteration
helper list_for_each_entry_safe(). This also removes the need to delete
elements from the list with list_del() since the ordered extent is freed
immediately after.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
 fs/btrfs/ordered-data.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c
index 6151d32704d2..ae49f87b27e8 100644
--- a/fs/btrfs/ordered-data.c
+++ b/fs/btrfs/ordered-data.c
@@ -607,23 +607,19 @@ bool btrfs_dec_test_ordered_pending(struct btrfs_inode *inode,
  */
 void btrfs_put_ordered_extent(struct btrfs_ordered_extent *entry)
 {
-	struct list_head *cur;
-	struct btrfs_ordered_sum *sum;
-
 	trace_btrfs_ordered_extent_put(entry->inode, entry);
 
 	if (refcount_dec_and_test(&entry->refs)) {
+		struct btrfs_ordered_sum *sum;
+		struct btrfs_ordered_sum *tmp;
+
 		ASSERT(list_empty(&entry->root_extent_list));
 		ASSERT(list_empty(&entry->log_list));
 		ASSERT(RB_EMPTY_NODE(&entry->rb_node));
 		if (entry->inode)
 			btrfs_add_delayed_iput(entry->inode);
-		while (!list_empty(&entry->list)) {
-			cur = entry->list.next;
-			sum = list_entry(cur, struct btrfs_ordered_sum, list);
-			list_del(&sum->list);
+		list_for_each_entry_safe(sum, tmp, &entry->list, list)
 			kvfree(sum);
-		}
 		kmem_cache_free(btrfs_ordered_extent_cache, entry);
 	}
 }
-- 
2.47.2


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 8/8] btrfs: defrag: use list_last_entry() at defrag_collect_targets()
  2025-05-02 10:30 [PATCH 0/8] btrfs: some list extraction and disposal cleanups fdmanana
                   ` (6 preceding siblings ...)
  2025-05-02 10:30 ` [PATCH 7/8] btrfs: simplify csum list release at btrfs_put_ordered_extent() fdmanana
@ 2025-05-02 10:30 ` fdmanana
  2025-05-02 22:13 ` [PATCH 0/8] btrfs: some list extraction and disposal cleanups Qu Wenruo
  2025-05-05  6:06 ` Johannes Thumshirn
  9 siblings, 0 replies; 11+ messages in thread
From: fdmanana @ 2025-05-02 10:30 UTC (permalink / raw)
  To: linux-btrfs

From: Filipe Manana <fdmanana@suse.com>

Instead of using list_entry() against the list's prev entry, use
list_last_entry(), which removes the need to know the last member is
accessed through the prev list pointer and the naming makes it easier
to reason about what we are doing.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
 fs/btrfs/defrag.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/fs/btrfs/defrag.c b/fs/btrfs/defrag.c
index 48e12c8a90a7..1831618579cb 100644
--- a/fs/btrfs/defrag.c
+++ b/fs/btrfs/defrag.c
@@ -1068,8 +1068,8 @@ static int defrag_collect_targets(struct btrfs_inode *inode,
 			/* Empty target list, no way to merge with last entry */
 			if (list_empty(target_list))
 				goto next;
-			last = list_entry(target_list->prev,
-					  struct defrag_target_range, list);
+			last = list_last_entry(target_list,
+					       struct defrag_target_range, list);
 			/* Not mergeable with last entry */
 			if (last->start + last->len != cur)
 				goto next;
@@ -1087,8 +1087,8 @@ static int defrag_collect_targets(struct btrfs_inode *inode,
 		if (!list_empty(target_list)) {
 			struct defrag_target_range *last;
 
-			last = list_entry(target_list->prev,
-					  struct defrag_target_range, list);
+			last = list_last_entry(target_list,
+					       struct defrag_target_range, list);
 			ASSERT(last->start + last->len <= cur);
 			if (last->start + last->len == cur) {
 				/* Mergeable, enlarge the last entry */
-- 
2.47.2


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH 0/8] btrfs: some list extraction and disposal cleanups
  2025-05-02 10:30 [PATCH 0/8] btrfs: some list extraction and disposal cleanups fdmanana
                   ` (7 preceding siblings ...)
  2025-05-02 10:30 ` [PATCH 8/8] btrfs: defrag: use list_last_entry() at defrag_collect_targets() fdmanana
@ 2025-05-02 22:13 ` Qu Wenruo
  2025-05-05  6:06 ` Johannes Thumshirn
  9 siblings, 0 replies; 11+ messages in thread
From: Qu Wenruo @ 2025-05-02 22:13 UTC (permalink / raw)
  To: fdmanana, linux-btrfs



在 2025/5/2 20:00, fdmanana@kernel.org 写道:
> From: Filipe Manana <fdmanana@suse.com>
> 
> Simplify some list element extractions and list disposals. More details in
> the changelogs.
> 

Reviewed-by: Qu Wenruo <wqu@suse.com>

Thanks,
Qu

> Filipe Manana (8):
>    btrfs: simplify getting and extracting previous transaction during commit
>    btrfs: simplify getting and extracting previous transaction at clean_pinned_extents()
>    btrfs: simplify cow only root list extraction during transaction commit
>    btrfs: raid56: use list_last_entry() at cache_rbio()
>    btrfs: simplify extracting delayed node at btrfs_first_delayed_node()
>    btrfs: simplify extracting delayed node at btrfs_first_prepared_delayed_node()
>    btrfs: simplify csum list release at btrfs_put_ordered_extent()
>    btrfs: defrag: use list_last_entry() at defrag_collect_targets()
> 
>   fs/btrfs/block-group.c   |  5 ++---
>   fs/btrfs/defrag.c        |  8 ++++----
>   fs/btrfs/delayed-inode.c | 31 ++++++++++++-------------------
>   fs/btrfs/ordered-data.c  | 12 ++++--------
>   fs/btrfs/raid56.c        |  6 +++---
>   fs/btrfs/transaction.c   | 16 +++++++---------
>   6 files changed, 32 insertions(+), 46 deletions(-)
> 


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 0/8] btrfs: some list extraction and disposal cleanups
  2025-05-02 10:30 [PATCH 0/8] btrfs: some list extraction and disposal cleanups fdmanana
                   ` (8 preceding siblings ...)
  2025-05-02 22:13 ` [PATCH 0/8] btrfs: some list extraction and disposal cleanups Qu Wenruo
@ 2025-05-05  6:06 ` Johannes Thumshirn
  9 siblings, 0 replies; 11+ messages in thread
From: Johannes Thumshirn @ 2025-05-05  6:06 UTC (permalink / raw)
  To: fdmanana@kernel.org, linux-btrfs@vger.kernel.org

Looks good,
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2025-05-05  6:06 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-02 10:30 [PATCH 0/8] btrfs: some list extraction and disposal cleanups fdmanana
2025-05-02 10:30 ` [PATCH 1/8] btrfs: simplify getting and extracting previous transaction during commit fdmanana
2025-05-02 10:30 ` [PATCH 2/8] btrfs: simplify getting and extracting previous transaction at clean_pinned_extents() fdmanana
2025-05-02 10:30 ` [PATCH 3/8] btrfs: simplify cow only root list extraction during transaction commit fdmanana
2025-05-02 10:30 ` [PATCH 4/8] btrfs: raid56: use list_last_entry() at cache_rbio() fdmanana
2025-05-02 10:30 ` [PATCH 5/8] btrfs: simplify extracting delayed node at btrfs_first_delayed_node() fdmanana
2025-05-02 10:30 ` [PATCH 6/8] btrfs: simplify extracting delayed node at btrfs_first_prepared_delayed_node() fdmanana
2025-05-02 10:30 ` [PATCH 7/8] btrfs: simplify csum list release at btrfs_put_ordered_extent() fdmanana
2025-05-02 10:30 ` [PATCH 8/8] btrfs: defrag: use list_last_entry() at defrag_collect_targets() fdmanana
2025-05-02 22:13 ` [PATCH 0/8] btrfs: some list extraction and disposal cleanups Qu Wenruo
2025-05-05  6:06 ` Johannes Thumshirn

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox