]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/PrimaryLogPG: do_osd_ops: drop legacy snapset handling from LIST_SNAPS
authorSage Weil <sage@redhat.com>
Fri, 1 Sep 2017 16:42:16 +0000 (12:42 -0400)
committerSage Weil <sage@redhat.com>
Thu, 21 Sep 2017 18:29:33 +0000 (14:29 -0400)
This is so much simpler, yay!

Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/PrimaryLogPG.cc

index b2831f877d144ec68aee446c0b3ad3e9aa363d28..54fd044186f4b12265cd01a2967c1c553c300c2d 100644 (file)
@@ -5434,58 +5434,17 @@ int PrimaryLogPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
          hobject_t clone_oid = soid;
          clone_oid.snap = *clone_iter;
 
-         if (!ssc->snapset.is_legacy()) {
-           auto p = ssc->snapset.clone_snaps.find(*clone_iter);
-           if (p == ssc->snapset.clone_snaps.end()) {
-             osd->clog->error() << "osd." << osd->whoami
-                                << ": inconsistent clone_snaps found for oid "
-                                << soid << " clone " << *clone_iter
-                                << " snapset " << ssc->snapset;
-             result = -EINVAL;
-             break;
-           }
-           for (auto q = p->second.rbegin(); q != p->second.rend(); ++q) {
-             ci.snaps.push_back(*q);
-           }
-         } else {
-           /* No need to take a lock here.  We are only inspecting state cached on
-            * in the ObjectContext, so we aren't performing an actual read unless
-            * the clone obc is not already loaded (in which case, it cannot have
-            * an in progress write).  We also do not risk exposing uncommitted
-            * state since we do have a read lock on the head object,
-            * which we would have to write lock in order to make user visible
-            * modifications to the snapshot state (snap trim related mutations
-            * are not user visible).
-            */
-           if (is_missing_object(clone_oid)) {
-             dout(20) << "LIST_SNAPS " << clone_oid << " missing" << dendl;
-             wait_for_unreadable_object(clone_oid, ctx->op);
-             result = -EAGAIN;
-             break;
-           }
-
-           ObjectContextRef clone_obc = get_object_context(clone_oid, false);
-           if (!clone_obc) {
-             if (maybe_handle_cache(
-                   ctx->op, true, clone_obc, -ENOENT, clone_oid, true)) {
-               // promoting the clone
-               result = -EAGAIN;
-             } else {
-               osd->clog->error() << "osd." << osd->whoami
-                                  << ": missing clone " << clone_oid
-                                  << " for oid "
-                                  << soid;
-               // should not happen
-               result = -ENOENT;
-             }
-             break;
-           }
-           for (vector<snapid_t>::reverse_iterator p =
-                  clone_obc->obs.oi.legacy_snaps.rbegin();
-                p != clone_obc->obs.oi.legacy_snaps.rend();
-                ++p) {
-             ci.snaps.push_back(*p);
-           }
+         auto p = ssc->snapset.clone_snaps.find(*clone_iter);
+         if (p == ssc->snapset.clone_snaps.end()) {
+           osd->clog->error() << "osd." << osd->whoami
+                              << ": inconsistent clone_snaps found for oid "
+                              << soid << " clone " << *clone_iter
+                              << " snapset " << ssc->snapset;
+           result = -EINVAL;
+           break;
+         }
+         for (auto q = p->second.rbegin(); q != p->second.rend(); ++q) {
+           ci.snaps.push_back(*q);
          }
 
           dout(20) << " clone " << *clone_iter << " snaps " << ci.snaps << dendl;