Improve async verify offload efficiency

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/flist.h b/flist.h
index e62f4b2..95023c7 100644
--- a/flist.h
+++ b/flist.h
@@ -117,6 +117,36 @@
 	return head->next == head;
 }
 
+static inline void __flist_splice(const struct flist_head *list,
+				  struct flist_head *prev,
+				  struct flist_head *next)
+{
+	struct flist_head *first = list->next;
+	struct flist_head *last = list->prev;
+
+	first->prev = prev;
+	prev->next = first;
+
+	last->next = next;
+	next->prev = last;
+}
+
+static inline void flist_splice(const struct flist_head *list,
+				struct flist_head *head)
+{
+	if (!flist_empty(list))
+		__flist_splice(list, head, head->next);
+}
+
+static inline void flist_splice_init(struct flist_head *list,
+				    struct flist_head *head)
+{
+	if (!flist_empty(list)) {
+		__flist_splice(list, head, head->next);
+		INIT_FLIST_HEAD(list);
+	}
+}
+
 /**
  * flist_entry - get the struct for this entry
  * @ptr:	the &struct flist_head pointer.