Commit 9a5e6d09 authored by Alex Elder's avatar Alex Elder Committed by Sage Weil

libceph: have osd requests support pagelist data

Add support for recording a ceph pagelist as data associated with an
osd request.
Signed-off-by: default avatarAlex Elder <elder@inktank.com>
Reviewed-by: default avatarJosh Durgin <josh.durgin@inktank.com>
parent 175face2
...@@ -53,6 +53,7 @@ struct ceph_osd { ...@@ -53,6 +53,7 @@ struct ceph_osd {
enum ceph_osd_data_type { enum ceph_osd_data_type {
CEPH_OSD_DATA_TYPE_NONE, CEPH_OSD_DATA_TYPE_NONE,
CEPH_OSD_DATA_TYPE_PAGES, CEPH_OSD_DATA_TYPE_PAGES,
CEPH_OSD_DATA_TYPE_PAGELIST,
#ifdef CONFIG_BLOCK #ifdef CONFIG_BLOCK
CEPH_OSD_DATA_TYPE_BIO, CEPH_OSD_DATA_TYPE_BIO,
#endif /* CONFIG_BLOCK */ #endif /* CONFIG_BLOCK */
...@@ -68,8 +69,9 @@ struct ceph_osd_data { ...@@ -68,8 +69,9 @@ struct ceph_osd_data {
bool pages_from_pool; bool pages_from_pool;
bool own_pages; bool own_pages;
}; };
struct ceph_pagelist *pagelist;
#ifdef CONFIG_BLOCK #ifdef CONFIG_BLOCK
struct bio *bio; struct bio *bio;
#endif /* CONFIG_BLOCK */ #endif /* CONFIG_BLOCK */
}; };
}; };
......
...@@ -1757,6 +1757,9 @@ static void ceph_osdc_msg_data_set(struct ceph_msg *msg, ...@@ -1757,6 +1757,9 @@ static void ceph_osdc_msg_data_set(struct ceph_msg *msg,
if (osd_data->length) if (osd_data->length)
ceph_msg_data_set_pages(msg, osd_data->pages, ceph_msg_data_set_pages(msg, osd_data->pages,
osd_data->length, osd_data->alignment); 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 #ifdef CONFIG_BLOCK
} else if (osd_data->type == CEPH_OSD_DATA_TYPE_BIO) { } else if (osd_data->type == CEPH_OSD_DATA_TYPE_BIO) {
ceph_msg_data_set_bio(msg, osd_data->bio); ceph_msg_data_set_bio(msg, osd_data->bio);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment