|
@@ -4492,6 +4492,23 @@ alloc_linger_request(struct ceph_osd_linger_request *lreq)
|
|
return req;
|
|
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.
|
|
* 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;
|
|
lreq->t.flags = CEPH_OSD_FLAG_WRITE;
|
|
ktime_get_real_ts64(&lreq->mtime);
|
|
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) {
|
|
if (!lreq->reg_req) {
|
|
ret = -ENOMEM;
|
|
ret = -ENOMEM;
|
|
goto err_put_lreq;
|
|
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) {
|
|
if (!lreq->ping_req) {
|
|
ret = -ENOMEM;
|
|
ret = -ENOMEM;
|
|
goto err_put_lreq;
|
|
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);
|
|
linger_submit(lreq);
|
|
ret = linger_reg_commit_wait(lreq);
|
|
ret = linger_reg_commit_wait(lreq);
|
|
if (ret) {
|
|
if (ret) {
|