aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/ceph/osd_client.c28
1 files changed, 19 insertions, 9 deletions
diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c
index 17d1d2a04a7a..a5fbb38086b6 100644
--- a/net/ceph/osd_client.c
+++ b/net/ceph/osd_client.c
@@ -4492,6 +4492,23 @@ alloc_linger_request(struct ceph_osd_linger_request *lreq)
4492 return req; 4492 return req;
4493} 4493}
4494 4494
4495static struct ceph_osd_request *
4496alloc_watch_request(struct ceph_osd_linger_request *lreq, u8 watch_opcode)
4497{
4498 struct ceph_osd_request *req;
4499
4500 req = alloc_linger_request(lreq);
4501 if (!req)
4502 return NULL;
4503
4504 /*
4505 * Pass 0 for cookie because we don't know it yet, it will be
4506 * filled in by linger_submit().
4507 */
4508 osd_req_op_watch_init(req, 0, 0, watch_opcode);
4509 return req;
4510}
4511
4495/* 4512/*
4496 * Returns a handle, caller owns a ref. 4513 * Returns a handle, caller owns a ref.
4497 */ 4514 */
@@ -4521,25 +4538,18 @@ ceph_osdc_watch(struct ceph_osd_client *osdc,
4521 lreq->t.flags = CEPH_OSD_FLAG_WRITE; 4538 lreq->t.flags = CEPH_OSD_FLAG_WRITE;
4522 ktime_get_real_ts64(&lreq->mtime); 4539 ktime_get_real_ts64(&lreq->mtime);
4523 4540
4524 lreq->reg_req = alloc_linger_request(lreq); 4541 lreq->reg_req = alloc_watch_request(lreq, CEPH_OSD_WATCH_OP_WATCH);
4525 if (!lreq->reg_req) { 4542 if (!lreq->reg_req) {
4526 ret = -ENOMEM; 4543 ret = -ENOMEM;
4527 goto err_put_lreq; 4544 goto err_put_lreq;
4528 } 4545 }
4529 4546
4530 lreq->ping_req = alloc_linger_request(lreq); 4547 lreq->ping_req = alloc_watch_request(lreq, CEPH_OSD_WATCH_OP_PING);
4531 if (!lreq->ping_req) { 4548 if (!lreq->ping_req) {
4532 ret = -ENOMEM; 4549 ret = -ENOMEM;
4533 goto err_put_lreq; 4550 goto err_put_lreq;
4534 } 4551 }
4535 4552
4536 /*
4537 * Pass 0 for cookie because we don't know it yet, it will be
4538 * filled in by linger_submit().
4539 */
4540 osd_req_op_watch_init(lreq->reg_req, 0, 0, CEPH_OSD_WATCH_OP_WATCH);
4541 osd_req_op_watch_init(lreq->ping_req, 0, 0, CEPH_OSD_WATCH_OP_PING);
4542
4543 linger_submit(lreq); 4553 linger_submit(lreq);
4544 ret = linger_reg_commit_wait(lreq); 4554 ret = linger_reg_commit_wait(lreq);
4545 if (ret) { 4555 if (ret) {