From: Sage Weil Date: Fri, 8 Jan 2016 17:26:05 +0000 (-0500) Subject: os/bluestore: pad trailing zeros for WAL write past eof X-Git-Tag: v10.0.3~88^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8480ede414c742b8f5b456d31e912dfdafe761d5;p=ceph.git os/bluestore: pad trailing zeros for WAL write past eof If we're past EOF, we need to zero the rest of the block. Signed-off-by: Sage Weil --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 915a9086dedb..a99fda36eeb7 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -5117,6 +5117,10 @@ int BlueStore::_do_write( if (offset + length == orig_offset + orig_length && cow_rmw_tail) { op->src_rmw_tail = cow_rmw_tail; dout(20) << __func__ << " src_rmw_tail " << op->src_rmw_tail << dendl; + } else if (((offset + length) & ~block_mask) && + offset + length > o->onode.size) { + dout(20) << __func__ << " past eof, padding out tail block" << dendl; + _pad_zeros_tail(o, &bl, offset, &length, block_size); } bp->second.clear_flag(bluestore_extent_t::FLAG_COW_HEAD); bp->second.clear_flag(bluestore_extent_t::FLAG_COW_TAIL);