void cmpxattr(const char *name, uint8_t op, const bufferlist& bl);
void cmpxattr(const char *name, uint8_t op, uint64_t v);
+ void src_cmpxattr(const std::string& src_oid,
+ const char *name, const bufferlist& val, int op, int mode);
protected:
ObjectOperationImpl *impl;
void clone_range(uint64_t dst_off,
const std::string& src_oid, uint64_t src_off,
size_t len);
- void src_cmpxattr(const std::string& src_oid,
- const char *name, const bufferlist& val, int op, int mode);
-
};
/*
r = io_ctx.setxattr(oid, "foo", val);
assert(r >= 0);
{
- ObjectOperation o;
- o.cmpxattr("foo", val, CEPH_OSD_CMPXATTR_OP_EQ, CEPH_OSD_CMPXATTR_MODE_STRING);
+ ObjectReadOperation o;
+ o.cmpxattr("foo", CEPH_OSD_CMPXATTR_OP_EQ, val);
r = io_ctx.operate(oid, &o, &bl2);
cout << " got " << r << " wanted >= 0" << std::endl;
assert(r >= 0);
}
val.append("...");
{
- ObjectOperation o;
- o.cmpxattr("foo", val, CEPH_OSD_CMPXATTR_OP_EQ, CEPH_OSD_CMPXATTR_MODE_STRING);
+ ObjectReadOperation o;
+ o.cmpxattr("foo", CEPH_OSD_CMPXATTR_OP_EQ, val);
r = io_ctx.operate(oid, &o, &bl2);
cout << " got " << r << " wanted ECANCELED" << std::endl;
assert(r == -ECANCELED);
cout << "src_cmpxattr" << std::endl;
const char *oidb = "bar-clone";
{
- ObjectOperation o;
+ ObjectWriteOperation o;
o.src_cmpxattr(oid, "foo", val, CEPH_OSD_CMPXATTR_OP_EQ, CEPH_OSD_CMPXATTR_MODE_STRING);
io_ctx.locator_set_key(oid);
o.write_full(val);
assert(r == -ECANCELED);
}
{
- ObjectOperation o;
+ ObjectWriteOperation o;
o.src_cmpxattr(oid, "foo", val, CEPH_OSD_CMPXATTR_OP_NE, CEPH_OSD_CMPXATTR_MODE_STRING);
io_ctx.locator_set_key(oid);
o.write_full(val);