Whamcloud - gitweb
LU-13814 llite: add to/from to ll_dio_pages 01/52101/25
authorPatrick Farrell <pfarrell@whamcloud.com>
Fri, 23 Feb 2024 16:23:57 +0000 (11:23 -0500)
committerOleg Drokin <green@whamcloud.com>
Mon, 9 Dec 2024 06:04:22 +0000 (06:04 +0000)
ll_dio_pages is the main way we package pages for a DIO, so
as we work on removing cl_page for DIO, we need to put some
of the info in this struct.

This puts the 'to, from' page offsets for incomplete pages
in the package.  This works because all pages except the
first and the last must be complete (the first and last can
be the same page).

Test-Parameters: trivial
Signed-off-by: Patrick Farrell <patrick.farrell@oracle.com>
Change-Id: I0ae4d617cb2f1310ae5981a9f9eb1480d13e1054
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/52101
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
Reviewed-by: Sebastien Buisson <sbuisson@ddn.com>
Reviewed-by: Qian Yingjin <qian@ddn.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
lustre/include/cl_object.h
lustre/llite/rw26.c

index 623c1a1..2d570f2 100644 (file)
@@ -2517,7 +2517,12 @@ struct ll_dio_pages {
        /** # of pages in the array. */
        size_t                  ldp_count;
        /* the file offset of the first page. */
-       loff_t                  ldp_file_offset;
+       loff_t                  ldp_file_offset;
+       /* the first and last page can be incomplete, this records the
+        * offsets
+        */
+       int                     ldp_from;
+       int                     ldp_to;
 };
 
 /* Top level struct used for AIO and DIO */
index 110af3c..b28d9d8 100644 (file)
@@ -386,6 +386,9 @@ ll_direct_rw_pages(const struct lu_env *env, struct cl_io *io, size_t size,
 
        ENTRY;
 
+       pv->ldp_from = offset & ~PAGE_MASK;
+       pv->ldp_to = (offset + size) & ~PAGE_MASK;
+
        cl_2queue_init(queue);
        while (size > 0) {
                size_t from = offset & ~PAGE_MASK;