Merge tag 'ceph-for-4.9-rc1' of git://github.com/ceph/ceph-client
[cascardo/linux.git] / include / linux / ceph / osd_client.h
index 8589323..96337b1 100644 (file)
@@ -120,6 +120,9 @@ struct ceph_osd_req_op {
                        struct ceph_osd_data request_data;
                        struct ceph_osd_data response_data;
                } notify;
+               struct {
+                       struct ceph_osd_data response_data;
+               } list_watchers;
                struct {
                        u64 expected_object_size;
                        u64 expected_write_size;
@@ -249,6 +252,12 @@ struct ceph_osd_linger_request {
        size_t *preply_len;
 };
 
+struct ceph_watch_item {
+       struct ceph_entity_name name;
+       u64 cookie;
+       struct ceph_entity_addr addr;
+};
+
 struct ceph_osd_client {
        struct ceph_client     *client;
 
@@ -346,7 +355,6 @@ extern void osd_req_op_cls_response_data_pages(struct ceph_osd_request *,
                                        struct page **pages, u64 length,
                                        u32 alignment, bool pages_from_pool,
                                        bool own_pages);
-
 extern void osd_req_op_cls_init(struct ceph_osd_request *osd_req,
                                        unsigned int which, u16 opcode,
                                        const char *class, const char *method);
@@ -389,6 +397,14 @@ extern void ceph_osdc_sync(struct ceph_osd_client *osdc);
 extern void ceph_osdc_flush_notifies(struct ceph_osd_client *osdc);
 void ceph_osdc_maybe_request_map(struct ceph_osd_client *osdc);
 
+int ceph_osdc_call(struct ceph_osd_client *osdc,
+                  struct ceph_object_id *oid,
+                  struct ceph_object_locator *oloc,
+                  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);
+
 extern int ceph_osdc_readpages(struct ceph_osd_client *osdc,
                               struct ceph_vino vino,
                               struct ceph_file_layout *layout,
@@ -434,5 +450,10 @@ int ceph_osdc_notify(struct ceph_osd_client *osdc,
                     size_t *preply_len);
 int ceph_osdc_watch_check(struct ceph_osd_client *osdc,
                          struct ceph_osd_linger_request *lreq);
+int ceph_osdc_list_watchers(struct ceph_osd_client *osdc,
+                           struct ceph_object_id *oid,
+                           struct ceph_object_locator *oloc,
+                           struct ceph_watch_item **watchers,
+                           u32 *num_watchers);
 #endif