]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph_test_rados: update for copy_from in begin, not finish
authorSage Weil <sage@inktank.com>
Fri, 27 Sep 2013 17:57:46 +0000 (10:57 -0700)
committerSage Weil <sage@inktank.com>
Fri, 27 Sep 2013 18:23:09 +0000 (11:23 -0700)
Signed-off-by: Sage Weil <sage@inktank.com>
src/test/osd/RadosModel.h

index 5c6c685c2384f786afe79a3be4718d6789f24933..e246f639786603218d2b1e5b87d9e01f47513b91 100644 (file)
@@ -1441,6 +1441,8 @@ public:
       snap = -1;
     }
     context->find_object(oid_src, &src_value, snap);
+    if (!src_value.deleted())
+      context->update_object_full(oid, src_value);
 
     string src = context->prefix+oid_src;
     op.copy_from(src.c_str(), context->io_ctx, src_value.version);
@@ -1463,6 +1465,7 @@ public:
                                librados::SNAP_HEAD,
                                librados::OPERATION_ORDER_READS_WRITES,  // order wrt previous write/update
                                NULL);
+
   }
 
   void _finish(CallbackInfo *info)
@@ -1478,14 +1481,16 @@ public:
       assert(comp->is_complete());
       cout << num << ":  finishing copy_from to " << context->prefix + oid << std::endl;
       if ((r = comp->get_return_value())) {
-       if (!(r == -ENOENT && src_value.deleted())) {
+       if (r == -ENOENT && src_value.deleted()) {
+         cout << num << ":  got expected ENOENT (src dne)" << std::endl;
+       } else {
          cerr << "Error: oid " << oid << " copy_from " << oid_src << " returned error code "
               << r << std::endl;
+         assert(0);
        }
       } else {
        assert(!version || comp->get_version64() == version);
        version = comp->get_version64();
-       context->update_object_full(oid, src_value);
        context->update_object_version(oid, comp->get_version64());
       }
     } else if (info->id == 1) {