From 9cd5fa4fd7e05ac4f20e1cc83c724760331f7127 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 5 Mar 2009 10:40:20 -0800 Subject: [PATCH] synclient: optionally do a sync on object writes; wait for sync, not ack --- src/client/SyntheticClient.cc | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/client/SyntheticClient.cc b/src/client/SyntheticClient.cc index 03c4d3ae010c6..bbba5376db317 100644 --- a/src/client/SyntheticClient.cc +++ b/src/client/SyntheticClient.cc @@ -2204,6 +2204,8 @@ int SyntheticClient::object_rw(int nobj, int osize, int wrpc, bufferlist bl; bl.push_back(bp); + bool do_sync = false; + // start with odd number > nobj rjhash h; unsigned prime = nobj + 1; // this is the minimum! @@ -2254,9 +2256,22 @@ int SyntheticClient::object_rw(int nobj, int osize, int wrpc, utime_t start = g_clock.now(); if (write) { dout(10) << "write to " << oid << dendl; - client->objecter->write(oid, layout, 0, osize, snapc, bl, 0, + + ObjectMutation m; + m.ops.push_back(ceph_osd_op()); + m.ops[0].op = CEPH_OSD_OP_WRITE; + m.ops[0].offset = 0; + m.ops[0].length = osize; + if (do_sync) { + m.ops.push_back(ceph_osd_op()); + m.ops[1].op = CEPH_OSD_OP_STARTSYNC; + } + m.data = bl; + client->objecter->mutate(oid, layout, m, snapc, 0, + NULL, new C_Ref(lock, cond, &unack)); + /*client->objecter->write(oid, layout, 0, osize, snapc, bl, 0, new C_Ref(lock, cond, &unack), - new C_Ref(lock, cond, &unsafe)); + new C_Ref(lock, cond, &unsafe));*/ } else { dout(10) << "read from " << oid << dendl; bufferlist inbl; -- 2.39.5