From 18f02de07c525c5b8832587f7a8e4da090322ca0 Mon Sep 17 00:00:00 2001 From: Xinze Chi Date: Thu, 12 Jan 2017 13:58:55 +0800 Subject: [PATCH] os/bluestore: nullptr in OmapIteratorImpl::valid call stack: SnapMapper::get_next_object_to_trim -> MapCacher::get_next -> OSDriver::get_next-> BlueStore::OmapIteratorImpl::valid() In OSDriver::get_next, it call iter->upper_bound(key); // this may reset it to nullptr Signed-off-by: Xinze Chi --- src/os/bluestore/BlueStore.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index e8ff586e6c533..7e9be7b76a360 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -5774,7 +5774,7 @@ int BlueStore::OmapIteratorImpl::lower_bound(const string& to) bool BlueStore::OmapIteratorImpl::valid() { RWLock::RLocker l(c->lock); - return o->onode.has_omap() && it->valid() && it->raw_key().second <= tail; + return o->onode.has_omap() && it && it->valid() && it->raw_key().second <= tail; } int BlueStore::OmapIteratorImpl::next(bool validate) -- 2.39.5