os/bluestore: fix lack of blob unshare if 'root' onode is not present

in cache.

Signed-off-by: Igor Fedotov <ifedotov@suse.com>
This commit is contained in:
Igor Fedotov 2020-10-08 21:54:21 +03:00
parent 2e9a804d9e
commit 7801dc2909

View File

@ -13786,7 +13786,7 @@ void BlueStore::_wctx_finish(
auto& r = lo.r;
txc->statfs_delta.stored() -= lo.e.length;
if (!r.empty()) {
dout(20) << __func__ << " blob release " << r << dendl;
dout(20) << __func__ << " blob " << *b << " release " << r << dendl;
if (blob.is_shared()) {
PExtentVector final;
c->load_shared_blob(b->shared_blob);
@ -14319,7 +14319,7 @@ int BlueStore::_do_remove(
<< maybe_unshared_blobs << dendl;
ghobject_t nogen = o->oid;
nogen.generation = ghobject_t::NO_GEN;
OnodeRef h = c->onode_map.lookup(nogen);
OnodeRef h = c->get_onode(nogen, false);
if (!h || !h->exists) {
return 0;