]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
libceph: introduce alloc_watch_request()
authorIlya Dryomov <idryomov@gmail.com>
Mon, 15 Oct 2018 13:26:27 +0000 (15:26 +0200)
committerIlya Dryomov <idryomov@gmail.com>
Mon, 22 Oct 2018 08:28:22 +0000 (10:28 +0200)
ceph_osdc_alloc_messages() call will be moved out of
alloc_linger_request() in the next commit, which means that
ceph_osdc_watch() will need to call ceph_osdc_alloc_messages()
twice.  Add a helper for that.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
net/ceph/osd_client.c

index 17d1d2a04a7af37dca832dd2efa80de0af08d8e6..a5fbb38086b69e8293386961b608069df96cc691 100644 (file)
@@ -4492,6 +4492,23 @@ alloc_linger_request(struct ceph_osd_linger_request *lreq)
        return req;
 }
 
+static struct ceph_osd_request *
+alloc_watch_request(struct ceph_osd_linger_request *lreq, u8 watch_opcode)
+{
+       struct ceph_osd_request *req;
+
+       req = alloc_linger_request(lreq);
+       if (!req)
+               return NULL;
+
+       /*
+        * Pass 0 for cookie because we don't know it yet, it will be
+        * filled in by linger_submit().
+        */
+       osd_req_op_watch_init(req, 0, 0, watch_opcode);
+       return req;
+}
+
 /*
  * Returns a handle, caller owns a ref.
  */
@@ -4521,25 +4538,18 @@ ceph_osdc_watch(struct ceph_osd_client *osdc,
        lreq->t.flags = CEPH_OSD_FLAG_WRITE;
        ktime_get_real_ts64(&lreq->mtime);
 
-       lreq->reg_req = alloc_linger_request(lreq);
+       lreq->reg_req = alloc_watch_request(lreq, CEPH_OSD_WATCH_OP_WATCH);
        if (!lreq->reg_req) {
                ret = -ENOMEM;
                goto err_put_lreq;
        }
 
-       lreq->ping_req = alloc_linger_request(lreq);
+       lreq->ping_req = alloc_watch_request(lreq, CEPH_OSD_WATCH_OP_PING);
        if (!lreq->ping_req) {
                ret = -ENOMEM;
                goto err_put_lreq;
        }
 
-       /*
-        * Pass 0 for cookie because we don't know it yet, it will be
-        * filled in by linger_submit().
-        */
-       osd_req_op_watch_init(lreq->reg_req, 0, 0, CEPH_OSD_WATCH_OP_WATCH);
-       osd_req_op_watch_init(lreq->ping_req, 0, 0, CEPH_OSD_WATCH_OP_PING);
-
        linger_submit(lreq);
        ret = linger_reg_commit_wait(lreq);
        if (ret) {