From 03b9c6608098a31adb7d075b6e680f9dc2ace4b3 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 11 Jul 2019 17:20:19 -0500 Subject: [PATCH] ceph-objectstore-tool: fix use of SnapSet::snaps Instead, use clone_snaps to identify clones. Signed-off-by: Sage Weil --- .../special/ceph_objectstore_tool.py | 2 +- src/tools/ceph_objectstore_tool.cc | 21 ++++++++++--------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/qa/standalone/special/ceph_objectstore_tool.py b/qa/standalone/special/ceph_objectstore_tool.py index 15ad54e61ec..a17102e1659 100755 --- a/qa/standalone/special/ceph_objectstore_tool.py +++ b/qa/standalone/special/ceph_objectstore_tool.py @@ -618,7 +618,7 @@ def test_removeall(CFSD_PREFIX, db, OBJREPPGS, REP_POOL, CEPH_BIN, OSDDIR, REP_N if int(basename.split(REP_NAME)[1]) <= int(NUM_CLONED_REP_OBJECTS): cmd = (CFSD_PREFIX + "'{json}' remove").format(osd=osd, json=JSON) - errors += test_failure(cmd, "Snapshots are present, use removeall to delete everything") + errors += test_failure(cmd, "Clones are present, use removeall to delete everything") cmd = (CFSD_PREFIX + " --force --dry-run '{json}' remove").format(osd=osd, json=JSON) logging.debug(cmd) diff --git a/src/tools/ceph_objectstore_tool.cc b/src/tools/ceph_objectstore_tool.cc index 27242aea2d2..58554d650f4 100644 --- a/src/tools/ceph_objectstore_tool.cc +++ b/src/tools/ceph_objectstore_tool.cc @@ -1951,14 +1951,16 @@ int do_remove_object(ObjectStore *store, coll_t coll, cerr << "Can't get snapset error " << cpp_strerror(r) << std::endl; return r; } - if (!ss.snaps.empty() && !all) { +// cout << "snapset " << ss << std::endl; + if (!ss.clone_snaps.empty() && !all) { if (force) { cout << "WARNING: only removing " << (ghobj.hobj.is_head() ? "head" : "snapdir") - << " with snapshots present" << std::endl; - ss.snaps.clear(); + << " with clones present" << std::endl; + ss.clone_snaps.clear(); } else { - cerr << "Snapshots are present, use removeall to delete everything" << std::endl; + cerr << "Clones are present, use removeall to delete everything" + << std::endl; return -EINVAL; } } @@ -1968,10 +1970,9 @@ int do_remove_object(ObjectStore *store, coll_t coll, OSDriver::OSTransaction _t(driver.get_transaction(&t)); ghobject_t snapobj = ghobj; - for (vector::iterator i = ss.snaps.begin() ; - i != ss.snaps.end() ; ++i) { - snapobj.hobj.snap = *i; - cout << "remove " << snapobj << std::endl; + for (auto& p : ss.clone_snaps) { + snapobj.hobj.snap = p.first; + cout << "remove clone " << snapobj << std::endl; if (!dry_run) { r = remove_object(coll, snapobj, mapper, &_t, &t, type); if (r < 0) @@ -2634,9 +2635,9 @@ int clear_snapset(ObjectStore *store, coll_t coll, ghobject_t &ghobj, // Use "seq" to just corrupt SnapSet.seq if (arg == "corrupt" || arg == "seq") ss.seq = 0; - // Use "snaps" to just clear SnapSet.snaps + // Use "snaps" to just clear SnapSet.clone_snaps if (arg == "corrupt" || arg == "snaps") - ss.snaps.clear(); + ss.clone_snaps.clear(); // By default just clear clone, clone_overlap and clone_size if (arg == "corrupt") arg = ""; -- 2.39.5