From 570615b63abbbccd4beaaf4a09a206006b3e86c1 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 30 Sep 2016 17:06:47 -0400 Subject: [PATCH] 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 --- src/os/bluestore/BlueStore.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 51c836454fa..92ce9f5d905 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)