diff options
author | Yehuda Sadeh <yehuda@inktank.com> | 2013-05-08 12:18:49 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-05-08 14:56:56 -0700 |
commit | e0c0a5c1a711263d234b70b454aca07c23e98243 (patch) | |
tree | bb6a7eb8430c93bab509a97365e6b6e1c09087fd | |
parent | 82b9299512537b8d921caa044107472adacbdabe (diff) | |
download | ceph-e0c0a5c1a711263d234b70b454aca07c23e98243.tar.gz |
osd: don't assert if get_omap_iterator() returns NULL
Fixes: #4949
This can happen if the object does not exist and it's
a write operation. Just return -ENOENT.
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
(cherry picked from commit 36ec6f9bce63641f4fc2e4ab04d03d3ec1638ea0)
-rw-r--r-- | src/osd/ReplicatedPG.cc | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 708e4153ca8..c751437671d 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -2922,7 +2922,10 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops) ObjectMap::ObjectMapIterator iter = osd->store->get_omap_iterator( coll, soid ); - assert(iter); + if (!iter) { + result = -ENOENT; + goto fail; + } iter->upper_bound(start_after); if (filter_prefix >= start_after) iter->lower_bound(filter_prefix); for (uint64_t i = 0; |