From: Sage Weil Date: Mon, 28 Mar 2016 19:36:38 +0000 (-0400) Subject: os/bluestore: _do_write_zero: preserve onode size X-Git-Tag: v10.1.1~28^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=65e9252d73c15b95b2ca9ab5bc0811d1acc0262d;p=ceph.git os/bluestore: _do_write_zero: preserve onode size Instead of handling this in each caller, make the helper keep onode.size intact. Signed-off-by: Sage Weil --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 64d3a992dd5..cc300816be5 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -5723,7 +5723,11 @@ int BlueStore::_do_write_zero( { bufferlist zl; zl.append_zero(length); - return _do_write(txc, c, o, offset, length, zl, 0); + uint64_t old_size = o->onode.size; + int r = _do_write(txc, c, o, offset, length, zl, 0); + // we do not modify onode size + o->onode.size = old_size; + return r; } int BlueStore::_zero(TransContext *txc, @@ -5956,7 +5960,6 @@ int BlueStore::_do_truncate( int r = _do_write_zero(txc, c, o, old_size, x_len); if (r < 0) return r; - o->onode.size = offset; // we (maybe) just wrote past eof; reset size } else { bluestore_wal_op_t *op = _get_wal_op(txc, o); op->op = bluestore_wal_op_t::OP_ZERO;