io_uring/slist: add list-to-list list splice helper
authorJens Axboe <axboe@kernel.dk>
Fri, 22 Nov 2024 15:24:23 +0000 (08:24 -0700)
committerJens Axboe <axboe@kernel.dk>
Tue, 17 Jun 2025 11:49:33 +0000 (05:49 -0600)
Add a helper to splice a source list to a destination list.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_uring/slist.h

index 0eb194817242e5eb98e83077a195209a053e4eab..7ac7c136b7026f710add85fce2b554aa5e857a40 100644 (file)
@@ -85,6 +85,22 @@ static inline bool wq_list_splice(struct io_wq_work_list *list,
        return false;
 }
 
+static inline bool wq_list_splice_list(struct io_wq_work_list *src,
+                                      struct io_wq_work_list *dst)
+{
+       bool ret = false;
+
+       if (wq_list_empty(dst)) {
+               *dst = *src;
+       } else {
+               dst->last->next = src->first;
+               dst->last = src->last;
+               ret = true;
+       }
+       INIT_WQ_LIST(src);
+       return false;
+}
+
 static inline void wq_stack_add_head(struct io_wq_work_node *node,
                                     struct io_wq_work_node *stack)
 {