return ops[s];
}
void add_data(int op, uint64_t off, uint64_t len, bufferlist& bl) {
- int s = ops.size();
- ops.resize(s+1);
- ops[s].op.op = op;
- ops[s].op.extent.offset = off;
- ops[s].op.extent.length = len;
- ops[s].indata.claim_append(bl);
+ OSDOp& osd_op = add_op(op);
+ osd_op.op.op = op;
+ osd_op.op.extent.offset = off;
+ osd_op.op.extent.length = len;
+ osd_op.indata.claim_append(bl);
}
void add_clone_range(int op, uint64_t off, uint64_t len, const object_t& srcoid, uint64_t srcoff, snapid_t srcsnapid) {
- int s = ops.size();
- ops.resize(s+1);
- ops[s].op.op = op;
- ops[s].op.clonerange.offset = off;
- ops[s].op.clonerange.length = len;
- ops[s].op.clonerange.src_offset = srcoff;
- ops[s].soid = sobject_t(srcoid, srcsnapid);
+ OSDOp& osd_op = add_op(op);
+ osd_op.op.op = op;
+ osd_op.op.clonerange.offset = off;
+ osd_op.op.clonerange.length = len;
+ osd_op.op.clonerange.src_offset = srcoff;
+ osd_op.soid = sobject_t(srcoid, srcsnapid);
}
void add_xattr(int op, const char *name, const bufferlist& data) {
- int s = ops.size();
- ops.resize(s+1);
- ops[s].op.op = op;
- ops[s].op.xattr.name_len = (name ? strlen(name) : 0);
- ops[s].op.xattr.value_len = data.length();
+ OSDOp& osd_op = add_op(op);
+ osd_op.op.op = op;
+ osd_op.op.xattr.name_len = (name ? strlen(name) : 0);
+ osd_op.op.xattr.value_len = data.length();
if (name)
- ops[s].indata.append(name);
- ops[s].indata.append(data);
+ osd_op.indata.append(name);
+ osd_op.indata.append(data);
}
void add_xattr_cmp(int op, const char *name, uint8_t cmp_op, uint8_t cmp_mode, const bufferlist& data) {
- int s = ops.size();
- ops.resize(s+1);
- ops[s].op.op = op;
- ops[s].op.xattr.name_len = (name ? strlen(name) : 0);
- ops[s].op.xattr.value_len = data.length();
- ops[s].op.xattr.cmp_op = cmp_op;
- ops[s].op.xattr.cmp_mode = cmp_mode;
+ OSDOp& osd_op = add_op(op);
+ osd_op.op.op = op;
+ osd_op.op.xattr.name_len = (name ? strlen(name) : 0);
+ osd_op.op.xattr.value_len = data.length();
+ osd_op.op.xattr.cmp_op = cmp_op;
+ osd_op.op.xattr.cmp_mode = cmp_mode;
if (name)
- ops[s].indata.append(name);
- ops[s].indata.append(data);
+ osd_op.indata.append(name);
+ osd_op.indata.append(data);
}
void add_call(int op, const char *cname, const char *method, bufferlist &indata) {
- int s = ops.size();
- ops.resize(s+1);
- ops[s].op.op = op;
- ops[s].op.cls.class_len = strlen(cname);
- ops[s].op.cls.method_len = strlen(method);
- ops[s].op.cls.indata_len = indata.length();
- ops[s].indata.append(cname, ops[s].op.cls.class_len);
- ops[s].indata.append(method, ops[s].op.cls.method_len);
- ops[s].indata.append(indata);
+ OSDOp& osd_op = add_op(op);
+ osd_op.op.op = op;
+ osd_op.op.cls.class_len = strlen(cname);
+ osd_op.op.cls.method_len = strlen(method);
+ osd_op.op.cls.indata_len = indata.length();
+ osd_op.indata.append(cname, osd_op.op.cls.class_len);
+ osd_op.indata.append(method, osd_op.op.cls.method_len);
+ osd_op.indata.append(indata);
}
void add_watch(int op, uint64_t cookie, uint64_t ver, uint8_t flag, bufferlist& inbl) {
- int s = ops.size();
- ops.resize(s+1);
- ops[s].op.op = op;
- ops[s].op.watch.cookie = cookie;
- ops[s].op.watch.ver = ver;
- ops[s].op.watch.flag = flag;
- ops[s].indata.append(inbl);
+ OSDOp& osd_op = add_op(op);
+ osd_op.op.op = op;
+ osd_op.op.watch.cookie = cookie;
+ osd_op.op.watch.ver = ver;
+ osd_op.op.watch.flag = flag;
+ osd_op.indata.append(inbl);
}
void add_pgls(int op, uint64_t count, collection_list_handle_t cookie, epoch_t start_epoch) {
- int s = ops.size();
- ops.resize(s+1);
- ops[s].op.op = op;
- ops[s].op.pgls.count = count;
- ops[s].op.pgls.start_epoch = start_epoch;
- ::encode(cookie, ops[s].indata);
+ OSDOp& osd_op = add_op(op);
+ osd_op.op.op = op;
+ osd_op.op.pgls.count = count;
+ osd_op.op.pgls.start_epoch = start_epoch;
+ ::encode(cookie, osd_op.indata);
}
void add_pgls_filter(int op, uint64_t count, bufferlist& filter, collection_list_handle_t cookie, epoch_t start_epoch) {
- int s = ops.size();
- ops.resize(s+1);
- ops[s].op.op = op;
- ops[s].op.pgls.count = count;
- ops[s].op.pgls.start_epoch = start_epoch;
+ OSDOp& osd_op = add_op(op);
+ osd_op.op.op = op;
+ osd_op.op.pgls.count = count;
+ osd_op.op.pgls.start_epoch = start_epoch;
string cname = "pg";
string mname = "filter";
- ::encode(cname, ops[s].indata);
- ::encode(mname, ops[s].indata);
- ::encode(cookie, ops[s].indata);
- ops[s].indata.append(filter);
+ ::encode(cname, osd_op.indata);
+ ::encode(mname, osd_op.indata);
+ ::encode(cookie, osd_op.indata);
+ osd_op.indata.append(filter);
}
// ------