ASSERT_EQ(0, ioctx.write_full("foo", blc));
ASSERT_EQ(0, ioctx.setxattr("foo", "myattr", xc));
+ version_t uv = ioctx.get_last_version();
{
+ // pass future version
ObjectWriteOperation op;
- op.copy_from("foo", ioctx, ioctx.get_last_version());
+ op.copy_from("foo", ioctx, uv + 1);
+ ASSERT_EQ(-EOVERFLOW, ioctx.operate("foo.copy", &op));
+ }
+ {
+ // pass old version
+ ObjectWriteOperation op;
+ op.copy_from("foo", ioctx, uv - 1);
+ ASSERT_EQ(-ERANGE, ioctx.operate("foo.copy", &op));
+ }
+ {
+ ObjectWriteOperation op;
+ op.copy_from("foo", ioctx, uv);
ASSERT_EQ(0, ioctx.operate("foo.copy", &op));
bufferlist bl2, x2;