libceph: introduce alloc_watch_request()
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>
This commit is contained in:
Родитель
81c65213d7
Коммит
39e58c3425
|
@ -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) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче