diff options
| author | Alex Elder <elder@inktank.com> | 2013-03-08 14:35:36 -0500 |
|---|---|---|
| committer | Sage Weil <sage@inktank.com> | 2013-05-02 00:17:03 -0400 |
| commit | 9a5e6d09ddd0cd68ce64c3aa54095e4a0e85b089 (patch) | |
| tree | 9bf530bb090cb6135c5be31705c5fb69ba4f6139 | |
| parent | 175face2ba31025b0dcd6da4e711fca7764287fa (diff) | |
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>
| -rw-r--r-- | include/linux/ceph/osd_client.h | 4 | ||||
| -rw-r--r-- | net/ceph/osd_client.c | 3 |
2 files changed, 6 insertions, 1 deletions
diff --git a/include/linux/ceph/osd_client.h b/include/linux/ceph/osd_client.h index bcf3f72ec3f8..cf0ba93426da 100644 --- a/include/linux/ceph/osd_client.h +++ b/include/linux/ceph/osd_client.h | |||
| @@ -53,6 +53,7 @@ struct ceph_osd { | |||
| 53 | enum ceph_osd_data_type { | 53 | enum ceph_osd_data_type { |
| 54 | CEPH_OSD_DATA_TYPE_NONE, | 54 | CEPH_OSD_DATA_TYPE_NONE, |
| 55 | CEPH_OSD_DATA_TYPE_PAGES, | 55 | CEPH_OSD_DATA_TYPE_PAGES, |
| 56 | CEPH_OSD_DATA_TYPE_PAGELIST, | ||
| 56 | #ifdef CONFIG_BLOCK | 57 | #ifdef CONFIG_BLOCK |
| 57 | CEPH_OSD_DATA_TYPE_BIO, | 58 | CEPH_OSD_DATA_TYPE_BIO, |
| 58 | #endif /* CONFIG_BLOCK */ | 59 | #endif /* CONFIG_BLOCK */ |
| @@ -68,8 +69,9 @@ struct ceph_osd_data { | |||
| 68 | bool pages_from_pool; | 69 | bool pages_from_pool; |
| 69 | bool own_pages; | 70 | bool own_pages; |
| 70 | }; | 71 | }; |
| 72 | struct ceph_pagelist *pagelist; | ||
| 71 | #ifdef CONFIG_BLOCK | 73 | #ifdef CONFIG_BLOCK |
| 72 | struct bio *bio; | 74 | struct bio *bio; |
| 73 | #endif /* CONFIG_BLOCK */ | 75 | #endif /* CONFIG_BLOCK */ |
| 74 | }; | 76 | }; |
| 75 | }; | 77 | }; |
diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c index ce34faaa453f..4159df2d67af 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, | |||
| 1757 | if (osd_data->length) | 1757 | if (osd_data->length) |
| 1758 | ceph_msg_data_set_pages(msg, osd_data->pages, | 1758 | ceph_msg_data_set_pages(msg, osd_data->pages, |
| 1759 | osd_data->length, osd_data->alignment); | 1759 | osd_data->length, osd_data->alignment); |
| 1760 | } else if (osd_data->type == CEPH_OSD_DATA_TYPE_PAGELIST) { | ||
| 1761 | BUG_ON(!osd_data->pagelist->length); | ||
| 1762 | ceph_msg_data_set_pagelist(msg, osd_data->pagelist); | ||
| 1760 | #ifdef CONFIG_BLOCK | 1763 | #ifdef CONFIG_BLOCK |
| 1761 | } else if (osd_data->type == CEPH_OSD_DATA_TYPE_BIO) { | 1764 | } else if (osd_data->type == CEPH_OSD_DATA_TYPE_BIO) { |
| 1762 | ceph_msg_data_set_bio(msg, osd_data->bio); | 1765 | ceph_msg_data_set_bio(msg, osd_data->bio); |
