]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: fix crash in decode_some() 11312/head
authorSage Weil <sage@redhat.com>
Tue, 4 Oct 2016 16:52:27 +0000 (12:52 -0400)
committerSage Weil <sage@redhat.com>
Tue, 4 Oct 2016 16:52:27 +0000 (12:52 -0400)
shared_blob must be non-null when we call Extent::assign_blob().

Signed-off-by: Sage Weil <sage@redhat.com>
src/os/bluestore/BlueStore.cc

index 7c48cdc5d8f005f82dd50b1aec2d8e529da5076e..1e963e3e523748479907ab53f3caec92dbcc6748 100644 (file)
@@ -1726,10 +1726,11 @@ void BlueStore::ExtentMap::decode_some(bufferlist& bl)
        le->assign_blob(blobs[blobid - 1]);
        assert(le->blob);
       } else {
-       le->assign_blob(new Blob());
-       le->blob->decode(p);
-       blobs[n] = le->blob;
-       onode->c->open_shared_blob(le->blob);
+       Blob *b = new Blob();
+       b->decode(p);
+       blobs[n] = b;
+       onode->c->open_shared_blob(b);
+       le->assign_blob(b);
       }
       // we build ref_map dynamically for non-spanning blobs
       le->blob->ref_map.get(le->blob_offset, le->length);