From: Sage Weil Date: Sun, 25 Aug 2013 18:12:44 +0000 (-0700) Subject: osd, objecter: clean up assert_ver() X-Git-Tag: v0.69~27^2~12 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=c6d0b10ed705aa682668943e4b5e4111d1c6fa1e;p=ceph.git osd, objecter: clean up assert_ver() Create a separate union in the args and clean up the code a bit so that this doesn't reuse the (unrelated) watch helpers. No change in protocol. Signed-off-by: Sage Weil --- diff --git a/src/include/rados.h b/src/include/rados.h index de9b449ed157f..9037606d154a9 100644 --- a/src/include/rados.h +++ b/src/include/rados.h @@ -397,6 +397,10 @@ struct ceph_osd_op { __le64 ver; __u8 flag; /* 0 = unwatch, 1 = watch */ } __attribute__ ((packed)) watch; + struct { + __le64 unused; + __le64 ver; + } __attribute__ ((packed)) assert_ver; struct { __le64 offset, length; __le64 src_offset; diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index e5d50ef28b445..6e047fb636725 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -2536,7 +2536,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) case CEPH_OSD_OP_ASSERT_SRC_VERSION: ++ctx->num_read; { - uint64_t ver = op.watch.ver; + uint64_t ver = op.assert_ver.ver; if (!ver) result = -EINVAL; else if (ver < src_obc->obs.oi.user_version) diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index fafea2c816e64..6511d802952b0 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -3416,6 +3416,9 @@ ostream& operator<<(ostream& out, const OSDOp& op) case CEPH_OSD_OP_LIST_WATCHERS: case CEPH_OSD_OP_LIST_SNAPS: break; + case CEPH_OSD_OP_ASSERT_VER: + out << " v" << op.op.assert_ver.ver; + break; case CEPH_OSD_OP_TRUNCATE: out << " " << op.op.extent.offset; break; diff --git a/src/osdc/Objecter.h b/src/osdc/Objecter.h index be75605449761..4fdaa407a58bb 100644 --- a/src/osdc/Objecter.h +++ b/src/osdc/Objecter.h @@ -647,8 +647,8 @@ struct ObjectOperation { } void assert_version(uint64_t ver) { - bufferlist bl; - add_watch(CEPH_OSD_OP_ASSERT_VER, 0, ver, 0, bl); + OSDOp& osd_op = add_op(CEPH_OSD_OP_ASSERT_VER); + osd_op.op.assert_ver.ver = ver; } void assert_src_version(const object_t& srcoid, snapid_t srcsnapid, uint64_t ver) { bufferlist bl;