Commit 144cba14 authored by Yan, Zheng's avatar Yan, Zheng Committed by Ilya Dryomov

libceph: allow setting osd_req_op's flags

Signed-off-by: default avatarYan, Zheng <zyan@redhat.com>
Reviewed-by: default avatarAlex Elder <elder@linaro.org>
parent 66ba609f
...@@ -2376,7 +2376,7 @@ static void rbd_img_obj_request_fill(struct rbd_obj_request *obj_request, ...@@ -2376,7 +2376,7 @@ static void rbd_img_obj_request_fill(struct rbd_obj_request *obj_request,
} }
if (opcode == CEPH_OSD_OP_DELETE) if (opcode == CEPH_OSD_OP_DELETE)
osd_req_op_init(osd_request, num_ops, opcode); osd_req_op_init(osd_request, num_ops, opcode, 0);
else else
osd_req_op_extent_init(osd_request, num_ops, opcode, osd_req_op_extent_init(osd_request, num_ops, opcode,
offset, length, 0, 0); offset, length, 0, 0);
...@@ -2848,7 +2848,7 @@ static int rbd_img_obj_exists_submit(struct rbd_obj_request *obj_request) ...@@ -2848,7 +2848,7 @@ static int rbd_img_obj_exists_submit(struct rbd_obj_request *obj_request)
goto out; goto out;
stat_request->callback = rbd_img_obj_exists_callback; stat_request->callback = rbd_img_obj_exists_callback;
osd_req_op_init(stat_request->osd_req, 0, CEPH_OSD_OP_STAT); osd_req_op_init(stat_request->osd_req, 0, CEPH_OSD_OP_STAT, 0);
osd_req_op_raw_data_in_pages(stat_request->osd_req, 0, pages, size, 0, osd_req_op_raw_data_in_pages(stat_request->osd_req, 0, pages, size, 0,
false, false); false, false);
rbd_osd_req_format_read(stat_request); rbd_osd_req_format_read(stat_request);
......
...@@ -884,7 +884,8 @@ static int ceph_writepages_start(struct address_space *mapping, ...@@ -884,7 +884,8 @@ static int ceph_writepages_start(struct address_space *mapping,
} }
if (do_sync) if (do_sync)
osd_req_op_init(req, 1, CEPH_OSD_OP_STARTSYNC); osd_req_op_init(req, 1,
CEPH_OSD_OP_STARTSYNC, 0);
req->r_callback = writepages_finish; req->r_callback = writepages_finish;
req->r_inode = inode; req->r_inode = inode;
......
...@@ -614,7 +614,7 @@ ceph_sync_direct_write(struct kiocb *iocb, struct iov_iter *from, loff_t pos) ...@@ -614,7 +614,7 @@ ceph_sync_direct_write(struct kiocb *iocb, struct iov_iter *from, loff_t pos)
break; break;
} }
osd_req_op_init(req, 1, CEPH_OSD_OP_STARTSYNC); osd_req_op_init(req, 1, CEPH_OSD_OP_STARTSYNC, 0);
n = iov_iter_get_pages_alloc(from, &pages, len, &start); n = iov_iter_get_pages_alloc(from, &pages, len, &start);
if (unlikely(n < 0)) { if (unlikely(n < 0)) {
......
...@@ -249,7 +249,7 @@ extern void ceph_osdc_handle_map(struct ceph_osd_client *osdc, ...@@ -249,7 +249,7 @@ extern void ceph_osdc_handle_map(struct ceph_osd_client *osdc,
struct ceph_msg *msg); struct ceph_msg *msg);
extern void osd_req_op_init(struct ceph_osd_request *osd_req, extern void osd_req_op_init(struct ceph_osd_request *osd_req,
unsigned int which, u16 opcode); unsigned int which, u16 opcode, u32 flags);
extern void osd_req_op_raw_data_in_pages(struct ceph_osd_request *, extern void osd_req_op_raw_data_in_pages(struct ceph_osd_request *,
unsigned int which, unsigned int which,
......
...@@ -453,7 +453,7 @@ __CEPH_FORALL_OSD_OPS(GENERATE_CASE) ...@@ -453,7 +453,7 @@ __CEPH_FORALL_OSD_OPS(GENERATE_CASE)
*/ */
static struct ceph_osd_req_op * static struct ceph_osd_req_op *
_osd_req_op_init(struct ceph_osd_request *osd_req, unsigned int which, _osd_req_op_init(struct ceph_osd_request *osd_req, unsigned int which,
u16 opcode) u16 opcode, u32 flags)
{ {
struct ceph_osd_req_op *op; struct ceph_osd_req_op *op;
...@@ -463,14 +463,15 @@ _osd_req_op_init(struct ceph_osd_request *osd_req, unsigned int which, ...@@ -463,14 +463,15 @@ _osd_req_op_init(struct ceph_osd_request *osd_req, unsigned int which,
op = &osd_req->r_ops[which]; op = &osd_req->r_ops[which];
memset(op, 0, sizeof (*op)); memset(op, 0, sizeof (*op));
op->op = opcode; op->op = opcode;
op->flags = flags;
return op; return op;
} }
void osd_req_op_init(struct ceph_osd_request *osd_req, void osd_req_op_init(struct ceph_osd_request *osd_req,
unsigned int which, u16 opcode) unsigned int which, u16 opcode, u32 flags)
{ {
(void)_osd_req_op_init(osd_req, which, opcode); (void)_osd_req_op_init(osd_req, which, opcode, flags);
} }
EXPORT_SYMBOL(osd_req_op_init); EXPORT_SYMBOL(osd_req_op_init);
...@@ -479,7 +480,8 @@ void osd_req_op_extent_init(struct ceph_osd_request *osd_req, ...@@ -479,7 +480,8 @@ void osd_req_op_extent_init(struct ceph_osd_request *osd_req,
u64 offset, u64 length, u64 offset, u64 length,
u64 truncate_size, u32 truncate_seq) u64 truncate_size, u32 truncate_seq)
{ {
struct ceph_osd_req_op *op = _osd_req_op_init(osd_req, which, opcode); struct ceph_osd_req_op *op = _osd_req_op_init(osd_req, which,
opcode, 0);
size_t payload_len = 0; size_t payload_len = 0;
BUG_ON(opcode != CEPH_OSD_OP_READ && opcode != CEPH_OSD_OP_WRITE && BUG_ON(opcode != CEPH_OSD_OP_READ && opcode != CEPH_OSD_OP_WRITE &&
...@@ -518,7 +520,8 @@ EXPORT_SYMBOL(osd_req_op_extent_update); ...@@ -518,7 +520,8 @@ EXPORT_SYMBOL(osd_req_op_extent_update);
void osd_req_op_cls_init(struct ceph_osd_request *osd_req, unsigned int which, void osd_req_op_cls_init(struct ceph_osd_request *osd_req, unsigned int which,
u16 opcode, const char *class, const char *method) u16 opcode, const char *class, const char *method)
{ {
struct ceph_osd_req_op *op = _osd_req_op_init(osd_req, which, opcode); struct ceph_osd_req_op *op = _osd_req_op_init(osd_req, which,
opcode, 0);
struct ceph_pagelist *pagelist; struct ceph_pagelist *pagelist;
size_t payload_len = 0; size_t payload_len = 0;
size_t size; size_t size;
...@@ -555,7 +558,8 @@ int osd_req_op_xattr_init(struct ceph_osd_request *osd_req, unsigned int which, ...@@ -555,7 +558,8 @@ int osd_req_op_xattr_init(struct ceph_osd_request *osd_req, unsigned int which,
u16 opcode, const char *name, const void *value, u16 opcode, const char *name, const void *value,
size_t size, u8 cmp_op, u8 cmp_mode) size_t size, u8 cmp_op, u8 cmp_mode)
{ {
struct ceph_osd_req_op *op = _osd_req_op_init(osd_req, which, opcode); struct ceph_osd_req_op *op = _osd_req_op_init(osd_req, which,
opcode, 0);
struct ceph_pagelist *pagelist; struct ceph_pagelist *pagelist;
size_t payload_len; size_t payload_len;
...@@ -588,7 +592,8 @@ void osd_req_op_watch_init(struct ceph_osd_request *osd_req, ...@@ -588,7 +592,8 @@ void osd_req_op_watch_init(struct ceph_osd_request *osd_req,
unsigned int which, u16 opcode, unsigned int which, u16 opcode,
u64 cookie, u64 version, int flag) u64 cookie, u64 version, int flag)
{ {
struct ceph_osd_req_op *op = _osd_req_op_init(osd_req, which, opcode); struct ceph_osd_req_op *op = _osd_req_op_init(osd_req, which,
opcode, 0);
BUG_ON(opcode != CEPH_OSD_OP_NOTIFY_ACK && opcode != CEPH_OSD_OP_WATCH); BUG_ON(opcode != CEPH_OSD_OP_NOTIFY_ACK && opcode != CEPH_OSD_OP_WATCH);
...@@ -605,7 +610,8 @@ void osd_req_op_alloc_hint_init(struct ceph_osd_request *osd_req, ...@@ -605,7 +610,8 @@ void osd_req_op_alloc_hint_init(struct ceph_osd_request *osd_req,
u64 expected_write_size) u64 expected_write_size)
{ {
struct ceph_osd_req_op *op = _osd_req_op_init(osd_req, which, struct ceph_osd_req_op *op = _osd_req_op_init(osd_req, which,
CEPH_OSD_OP_SETALLOCHINT); CEPH_OSD_OP_SETALLOCHINT,
0);
op->alloc_hint.expected_object_size = expected_object_size; op->alloc_hint.expected_object_size = expected_object_size;
op->alloc_hint.expected_write_size = expected_write_size; op->alloc_hint.expected_write_size = expected_write_size;
...@@ -789,7 +795,7 @@ struct ceph_osd_request *ceph_osdc_new_request(struct ceph_osd_client *osdc, ...@@ -789,7 +795,7 @@ struct ceph_osd_request *ceph_osdc_new_request(struct ceph_osd_client *osdc,
} }
if (opcode == CEPH_OSD_OP_CREATE || opcode == CEPH_OSD_OP_DELETE) { if (opcode == CEPH_OSD_OP_CREATE || opcode == CEPH_OSD_OP_DELETE) {
osd_req_op_init(req, which, opcode); osd_req_op_init(req, which, opcode, 0);
} else { } else {
u32 object_size = le32_to_cpu(layout->fl_object_size); u32 object_size = le32_to_cpu(layout->fl_object_size);
u32 object_base = off - objoff; u32 object_base = off - objoff;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment