From: Sage Weil Date: Fri, 30 Sep 2016 21:06:47 +0000 (-0400) Subject: os/bluestore: fix gc when blob extends past eof X-Git-Tag: v11.0.1~46^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=570615b63abbbccd4beaaf4a09a206006b3e86c1;p=ceph.git os/bluestore: fix gc when blob extends past eof This can happen if we aren't referencing the bob. Don't try to read what isn't logically referenced. Signed-off-by: Sage Weil --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 51c836454fa5..92ce9f5d905b 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -7571,6 +7571,9 @@ bool BlueStore::_do_write_check_depth( *gc_end_offset = tp->logical_offset + tp_prev->length; } } + if (*gc_end_offset > o->onode.size) { + *gc_end_offset = MAX(end_offset, o->onode.size); + } dout(20) << __func__ << " depth " << (int)depth << ", gc 0x" << std::hex << *gc_start_offset << "~" << (*gc_end_offset - *gc_start_offset)