From: xie xingguo Date: Wed, 12 Oct 2016 08:12:14 +0000 (+0800) Subject: os/bluestore: avoid polluting shard info if need resharding X-Git-Tag: v11.1.0~658^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F11439%2Fhead;p=ceph.git os/bluestore: avoid polluting shard info if need resharding Signed-off-by: xie xingguo --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 1090f7a10717..d534aa16cdb5 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -1495,6 +1495,7 @@ bool BlueStore::ExtentMap::update(Onode *o, KeyValueDB::Transaction t, dout(20) << __func__ << " inline shard " << len << " bytes from " << n << " extents" << dendl; if (!force && len > g_conf->bluestore_extent_map_shard_max_size) { + inline_bl.clear(); return true; } } @@ -1516,18 +1517,19 @@ bool BlueStore::ExtentMap::update(Onode *o, KeyValueDB::Transaction t, if (encode_some(p->offset, endoff - p->offset, bl, &n)) { return true; } + size_t len = bl.length(); dout(20) << __func__ << " shard 0x" << std::hex - << p->offset << std::dec << " is " << bl.length() + << p->offset << std::dec << " is " << len << " bytes (was " << p->shard_info->bytes << ") from " << n << " extents" << dendl; + if (!force && + (len > g_conf->bluestore_extent_map_shard_max_size || + len < g_conf->bluestore_extent_map_shard_min_size)) { + return true; + } assert(p->shard_info->offset == p->offset); - p->shard_info->bytes = bl.length(); + p->shard_info->bytes = len; p->shard_info->extents = n; - if (!force && - (bl.length() > g_conf->bluestore_extent_map_shard_max_size || - bl.length() < g_conf->bluestore_extent_map_shard_min_size)) { - return true; - } t->set(PREFIX_OBJ, p->key, bl); p->dirty = false; }