From 65e9252d73c15b95b2ca9ab5bc0811d1acc0262d Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 28 Mar 2016 15:36:38 -0400 Subject: [PATCH] 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 --- src/os/bluestore/BlueStore.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 64d3a992dd57d..cc300816be57b 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; -- 2.39.5