Add support for recording a ceph pagelist as data associated with an
osd request.

Signed-off-by: Alex Elder <[email protected]>
---
 include/linux/ceph/osd_client.h |    4 +++-
 net/ceph/osd_client.c           |    3 +++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/include/linux/ceph/osd_client.h
b/include/linux/ceph/osd_client.h
index bcf3f72..cf0ba93 100644
--- a/include/linux/ceph/osd_client.h
+++ b/include/linux/ceph/osd_client.h
@@ -53,6 +53,7 @@ struct ceph_osd {
 enum ceph_osd_data_type {
        CEPH_OSD_DATA_TYPE_NONE,
        CEPH_OSD_DATA_TYPE_PAGES,
+       CEPH_OSD_DATA_TYPE_PAGELIST,
 #ifdef CONFIG_BLOCK
        CEPH_OSD_DATA_TYPE_BIO,
 #endif /* CONFIG_BLOCK */
@@ -68,8 +69,9 @@ struct ceph_osd_data {
                        bool            pages_from_pool;
                        bool            own_pages;
                };
+               struct ceph_pagelist    *pagelist;
 #ifdef CONFIG_BLOCK
-               struct bio       *bio;
+               struct bio              *bio;
 #endif /* CONFIG_BLOCK */
        };
 };
diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c
index 6b78903..8fa3300 100644
--- a/net/ceph/osd_client.c
+++ b/net/ceph/osd_client.c
@@ -1757,6 +1757,9 @@ static void ceph_osdc_msg_data_set(struct ceph_msg
*msg,
                if (osd_data->length)
                        ceph_msg_data_set_pages(msg, osd_data->pages,
                                osd_data->length, osd_data->alignment);
+       } else if (osd_data->type == CEPH_OSD_DATA_TYPE_PAGELIST) {
+               BUG_ON(!osd_data->pagelist->length);
+               ceph_msg_data_set_pagelist(msg, osd_data->pagelist);
 #ifdef CONFIG_BLOCK
        } else if (osd_data->type == CEPH_OSD_DATA_TYPE_BIO) {
                ceph_msg_data_set_bio(msg, osd_data->bio);
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to