<< " " << offset << "~" << length
<< dendl;
RWLock::WLocker l(c->lock);
- OnodeRef o = c->get_onode(oid, true);
- _assign_nid(txc, o);
+ OnodeRef o = c->get_onode(oid, false);
+ if (!o) {
+ o = c->get_onode(oid, true);
+ _assign_nid(txc, o);
+ }
int r = _do_write(txc, c, o, offset, length, bl, fadvise_flags);
txc->write_onode(o);
RWLock::WLocker l(c->lock);
EnodeRef enode;
- OnodeRef o = c->get_onode(oid, true);
- _dump_onode(o);
- _assign_nid(txc, o);
+ OnodeRef o = c->get_onode(oid, false);
+ if (o) {
+ _dump_onode(o);
+ } else {
+ o = c->get_onode(oid, true);
+ _assign_nid(txc, o);
+ }
// overlay
_do_overlay_trim(txc, o, offset, length);