]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: don't crash on empty snapset 21638/head
authorMykola Golub <mgolub@suse.com>
Tue, 27 Mar 2018 07:39:47 +0000 (10:39 +0300)
committerNathan Cutler <ncutler@suse.com>
Wed, 25 Apr 2018 16:20:51 +0000 (18:20 +0200)
Signed-off-by: Igor Fedotov <ifedotov@suse.com>
Signed-off-by: Mykola Golub <mgolub@suse.com>
(cherry picked from commit 3996c0ae9c344de12eac2226e260c586ef48b09f)

Conflicts:
src/osd/PrimaryLogPG.cc - retain legacy snapshot handling in luminous -
                 i.e., do not backport 89c3439191325c2ee39ab4490985e77e5865e28a

src/osd/PrimaryLogPG.cc
src/osd/SnapMapper.cc

index 1358eefa69a9d3451dbc4d4c4bf3dc1f47e54e79..67cafe34e52de0bffd37c0bcf29f58dfb03d882b 100644 (file)
@@ -10187,6 +10187,11 @@ int PrimaryLogPG::find_object_context(const hobject_t& oid,
   } else {
     auto p = obc->ssc->snapset.clone_snaps.find(soid.snap);
     assert(p != obc->ssc->snapset.clone_snaps.end());
+    if (p->second.empty()) {
+      dout(1) << __func__ << " " << soid << " empty snapset -- DNE" << dendl;
+      assert(!cct->_conf->osd_debug_verify_snaps);
+      return -ENOENT;
+    }
     first = p->second.back();
     last = p->second.front();
   }
index 374e2429b439add892f84b47b2b76ba39c644e68..823b1428215145cbf2fd2573889dc7a3a283b603 100644 (file)
@@ -151,7 +151,10 @@ int SnapMapper::get_snaps(
     bufferlist::iterator bp = got.begin()->second.begin();
     ::decode(*out, bp);
     dout(20) << __func__ << " " << oid << " " << out->snaps << dendl;
-    assert(!out->snaps.empty());
+    if (out->snaps.empty()) {
+      dout(1) << __func__ << " " << oid << " empty snapset" << dendl;
+      assert(!cct->_conf->osd_debug_verify_snaps);
+    }
   } else {
     dout(20) << __func__ << " " << oid << " (out == NULL)" << dendl;
   }