libceph: have osd requests support pagelist data
Add support for recording a ceph pagelist as data associated with an osd request. Signed-off-by: Alex Elder <elder@inktank.com> Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
This commit is contained in:
Родитель
175face2ba
Коммит
9a5e6d09dd
|
@ -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 */
|
||||
};
|
||||
};
|
||||
|
|
|
@ -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);
|
||||
|
|
Загрузка…
Ссылка в новой задаче