libceph: distinguish page and bio requests
An osd request uses either pages or a bio list for its data. Use a
union to record information about the two, and add a data type
tag to select between them.
Signed-off-by: Alex Elder <elder@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
diff --git a/include/linux/ceph/osd_client.h b/include/linux/ceph/osd_client.h
index 600b827..56604b3 100644
--- a/include/linux/ceph/osd_client.h
+++ b/include/linux/ceph/osd_client.h
@@ -50,8 +50,17 @@
#define CEPH_OSD_MAX_OP 10
+enum ceph_osd_data_type {
+ CEPH_OSD_DATA_TYPE_NONE,
+ CEPH_OSD_DATA_TYPE_PAGES,
+#ifdef CONFIG_BLOCK
+ CEPH_OSD_DATA_TYPE_BIO,
+#endif /* CONFIG_BLOCK */
+};
+
struct ceph_osd_data {
- struct {
+ enum ceph_osd_data_type type;
+ union {
struct {
struct page **pages;
u32 num_pages;