summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-09-24 11:59:17 -0700
committerSage Weil <sage@inktank.com>2013-09-24 12:48:09 -0700
commitafa2468ead859d62da1260568769d5ba32d3d21d (patch)
treece73a8353806634953472e16082945d8c5750493
parent3faf08f5f96ced6eecb3c2bc3a6b7bf4fc5a1b73 (diff)
downloadceph-wip-rworder.tar.gz
ceph_test_rados: order racing read wrt to the COPY_FROMwip-rworder
The prevents: - send COPY_FROM, blocks on recovering object - send stat, procedes to return old object version - COPY_FROM succeeds with new version -> fail Signed-off-by: Sage Weil <sage@inktank.com>
-rw-r--r--src/test/osd/RadosModel.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/test/osd/RadosModel.h b/src/test/osd/RadosModel.h
index ab0b13d73e4..7bda0fe9a56 100644
--- a/src/test/osd/RadosModel.h
+++ b/src/test/osd/RadosModel.h
@@ -1402,6 +1402,7 @@ public:
string oid, oid_src;
ObjectDesc src_value;
librados::ObjectWriteOperation op;
+ librados::ObjectReadOperation rd_op;
librados::AioCompletion *comp;
librados::AioCompletion *comp_racing_read;
int snap;
@@ -1456,7 +1457,11 @@ public:
new TestOp::CallbackInfo(1));
comp_racing_read = context->rados.aio_create_completion((void*) read_cb_arg, &write_callback,
NULL);
- context->io_ctx.aio_stat(context->prefix+oid, comp_racing_read, NULL, NULL);
+ rd_op.stat(NULL, NULL, NULL);
+ context->io_ctx.aio_operate(context->prefix+oid, comp_racing_read, &rd_op,
+ librados::SNAP_HEAD,
+ librados::OPERATION_ORDER_READS_WRITES, // order wrt previous write/update
+ NULL);
}
void _finish(CallbackInfo *info)