libceph: export osd_req_op_data() macro
[linux-2.6-microblaze.git] / include / linux / ceph / osd_client.h
index 2294f96..ad7fe5d 100644 (file)
@@ -198,9 +198,9 @@ struct ceph_osd_request {
        bool              r_mempool;
        struct completion r_completion;       /* private to osd_client.c */
        ceph_osdc_callback_t r_callback;
-       struct list_head  r_unsafe_item;
 
        struct inode *r_inode;                /* for use by callbacks */
+       struct list_head r_private_item;      /* ditto */
        void *r_priv;                         /* ditto */
 
        /* set by submitter */
@@ -389,6 +389,14 @@ extern void ceph_osdc_handle_map(struct ceph_osd_client *osdc,
 void ceph_osdc_update_epoch_barrier(struct ceph_osd_client *osdc, u32 eb);
 void ceph_osdc_abort_requests(struct ceph_osd_client *osdc, int err);
 
+#define osd_req_op_data(oreq, whch, typ, fld)                          \
+({                                                                     \
+       struct ceph_osd_request *__oreq = (oreq);                       \
+       unsigned int __whch = (whch);                                   \
+       BUG_ON(__whch >= __oreq->r_num_ops);                            \
+       &__oreq->r_ops[__whch].typ.fld;                                 \
+})
+
 extern void osd_req_op_init(struct ceph_osd_request *osd_req,
                            unsigned int which, u16 opcode, u32 flags);
 
@@ -497,7 +505,7 @@ int ceph_osdc_call(struct ceph_osd_client *osdc,
                   const char *class, const char *method,
                   unsigned int flags,
                   struct page *req_page, size_t req_len,
-                  struct page *resp_page, size_t *resp_len);
+                  struct page **resp_pages, size_t *resp_len);
 
 extern int ceph_osdc_readpages(struct ceph_osd_client *osdc,
                               struct ceph_vino vino,