]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
tools: Don't export temporary objects until we have persistent-temp objects
authorDavid Zafman <dzafman@redhat.com>
Mon, 22 Jun 2015 18:15:58 +0000 (11:15 -0700)
committerSage Weil <sage@redhat.com>
Fri, 10 Jul 2015 15:30:14 +0000 (11:30 -0400)
Signed-off-by: David Zafman <dzafman@redhat.com>
src/tools/ceph_objectstore_tool.cc

index 43f6b2224640ff9459fcc167e5dac204a42b935e..67cce7fa908a079ed03ebbc84a4a5199a954ef01 100644 (file)
@@ -699,7 +699,8 @@ int ObjectStoreTool::export_files(ObjectStore *store, coll_t coll)
     for (vector<ghobject_t>::iterator i = objects.begin();
         i != objects.end();
         ++i) {
-      if (i->is_pgmeta()) {
+      assert(!i->hobj.is_meta());
+      if (i->is_pgmeta() || i->hobj.is_temp()) {
        continue;
       }
       r = export_file(store, coll, *i);
@@ -872,6 +873,10 @@ int ObjectStoreTool::get_object(ObjectStore *store, coll_t coll,
   coll.is_pg_prefix(&pg);
   SnapMapper mapper(&driver, 0, 0, 0, pg.shard);
 
+  if (ob.hoid.hobj.is_temp()) {
+    cerr << "ERROR: Export contains temporary object '" << ob.hoid << "'" << std::endl;
+    return -EFAULT;
+  }
   assert(g_ceph_context);
   if (ob.hoid.hobj.nspace != g_ceph_context->_conf->osd_hit_set_namespace) {
     object_t oid = ob.hoid.hobj.oid;