]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rbdtool: fix add-snap
authorYehuda Sadeh <yehuda@hq.newdream.net>
Sat, 10 Jul 2010 00:07:47 +0000 (17:07 -0700)
committerYehuda Sadeh <yehuda@hq.newdream.net>
Sat, 10 Jul 2010 00:07:47 +0000 (17:07 -0700)
src/rbdtool.cc

index 4cf02653a850084c705df20a6dc7badb5a96c7da..9fca3093810fef7851a40c7b6634163bccffbd14 100644 (file)
@@ -57,7 +57,7 @@ void usage()
        << "  --export [image name]        export image to file\n"
        << "  --import <file>              import image from file (dest defaults as the filename\n"
        << "                               part of file)\n"
-       << "  --copy <image name>          copy image to dest\n"
+       << "  --copy [image name]          copy image to dest\n"
        << "\n"
        << "Other input options:\n"
        << "  -p, --pool <pool>            source pool name\n"
@@ -541,16 +541,16 @@ static int do_get_snapc(pools_t& pp, string& md_oid, const char *snapname,
     snapc.snaps.push_back(id);
     snaps.push_back(id);
   }
-  if (!snapid) {
-    cerr << "snapshot not found: " << snapname << std::endl;
-    return -ENOENT;
-  }
 
   if (!snapc.is_valid()) {
     cerr << "image snap context is invalid! can't rollback" << std::endl;
     return -EIO;
   }
 
+  if (!snapid) {
+    return -ENOENT;
+  }
+
   return 0;
 }
 
@@ -955,6 +955,12 @@ int main(int argc, const char **argv)
   pp.data = pool;
   if (snapname) {
     r = do_get_snapc(pp, md_oid, snapname, snapc, snaps, snapid);
+    if (r == -ENOENT) {
+      if (opt_add_snap)
+        r = 0;
+      else
+        cerr << "snapshot not found: " << snapname << std::endl;
+    }
     if (r < 0) {
       cerr << "error searching for snapshot: " << strerror(-r) << std::endl;
       err_exit(pp);