From 126eae8479cd96a0d6c885f9d49ce30320d49f92 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 27 Jan 2017 16:45:50 -0500 Subject: [PATCH] os/bluestore: ExtentMap: put un-spanning in normal loop Signed-off-by: Sage Weil --- src/os/bluestore/BlueStore.cc | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 6162a7e2ae8d1..6eedbce2b6993 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -1876,14 +1876,6 @@ void BlueStore::ExtentMap::reshard( ); } - // un-span all blobs - auto p = spanning_blob_map.begin(); - while (p != spanning_blob_map.end()) { - p->second->id = -1; - dout(30) << __func__ << " un-spanning " << *p->second << dendl; - p = spanning_blob_map.erase(p); - } - unsigned bytes = 0; if (onode->onode.extent_map_shards.empty()) { bytes = inline_bl.length(); @@ -1906,7 +1898,14 @@ void BlueStore::ExtentMap::reshard( unsigned max_blob_end = 0; for (auto& e: extent_map) { dout(30) << " extent " << e << dendl; - assert(!e.blob->is_spanning()); + + // unspan spanning blobs + if (e.blob->is_spanning()) { + spanning_blob_map.erase(e.blob->id); + e.blob->id = -1; + dout(30) << __func__ << " un-spanning " << *e.blob << dendl; + } + // disfavor shard boundaries that span a blob bool would_span = (e.logical_offset < max_blob_end) || e.blob_offset; if (estimate && -- 2.39.5