From 58522622eb647ee4d8cce5f39d24275ac210e723 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 22 Dec 2008 09:01:48 -0800 Subject: [PATCH] osd: inc_lock attr is optional --- src/osd/ReplicatedPG.cc | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index ea410e0d69903..9cdba6dd737ac 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; + } } } -- 2.39.5