From: Sage Weil Date: Mon, 22 Dec 2008 17:01:48 +0000 (-0800) Subject: osd: inc_lock attr is optional X-Git-Tag: v0.6~16 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=58522622eb647ee4d8cce5f39d24275ac210e723;p=ceph.git osd: inc_lock attr is optional --- diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index ea410e0d6990..9cdba6dd737a 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -726,13 +726,15 @@ void ReplicatedPG::op_read(MOSDOp *op) bufferlist b; __u32 cur = 0; osd->store->getattr(info.pgid.to_coll(), poid, "inc_lock", b); - bufferlist::iterator bp = b.begin(); - ::decode(cur, bp); - if (cur > op->get_inc_lock()) { - dout(10) << " inc_lock " << cur << " > " << op->get_inc_lock() - << " on " << poid << dendl; - result = -EINCLOCKED; - goto done; + if (b.length()) { + bufferlist::iterator bp = b.begin(); + ::decode(cur, bp); + if (cur > op->get_inc_lock()) { + dout(10) << " inc_lock " << cur << " > " << op->get_inc_lock() + << " on " << poid << dendl; + result = -EINCLOCKED; + goto done; + } } } @@ -1551,14 +1553,16 @@ void ReplicatedPG::op_modify(MOSDOp *op) if (op->get_inc_lock() > 0) { bufferlist b; osd->store->getattr(info.pgid.to_coll(), poid, "inc_lock", b); - bufferlist::iterator bp = b.begin(); - __u32 cur = 0; - ::decode(cur, bp); - if (cur > op->get_inc_lock()) { - dout(10) << " inc_lock " << cur << " > " << op->get_inc_lock() - << " on " << poid << dendl; - osd->reply_op_error(op, -EINCLOCKED); - return; + if (b.length()) { + bufferlist::iterator bp = b.begin(); + __u32 cur = 0; + ::decode(cur, bp); + if (cur > op->get_inc_lock()) { + dout(10) << " inc_lock " << cur << " > " << op->get_inc_lock() + << " on " << poid << dendl; + osd->reply_op_error(op, -EINCLOCKED); + return; + } } }