Whamcloud - gitweb
LU-13799 clio: Implement real list splice
[fs/lustre-release.git] / lustre / obdclass / cl_io.c
index a9612e2..d11c5a6 100644 (file)
@@ -918,15 +918,24 @@ EXPORT_SYMBOL(cl_page_list_move_head);
 /**
  * splice the cl_page_list, just as list head does
  */
-void cl_page_list_splice(struct cl_page_list *list, struct cl_page_list *head)
+void cl_page_list_splice(struct cl_page_list *src, struct cl_page_list *dst)
 {
+#ifdef USE_LU_REF
        struct cl_page *page;
        struct cl_page *tmp;
 
 
        ENTRY;
        cl_page_list_for_each_safe(page, tmp, list)
-               cl_page_list_move(head, list, page);
+               lu_ref_set_at(&page->cp_reference, &page->cp_queue_ref,
+                             "queue", src, dst);
+#else
+       ENTRY;
+#endif
+       dst->pl_nr += src->pl_nr;
+       src->pl_nr = 0;
+       list_splice_tail_init(&src->pl_pages, &dst->pl_pages);
+
        EXIT;
 }
 EXPORT_SYMBOL(cl_page_list_splice);