From 2b02afd68c66221b5ed934668a88c05518646a1c Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Fri, 9 Jul 2010 15:50:58 -0700 Subject: [PATCH] rbdtool: rename should first check source that is, source image doesn't exist error should have priority over destination already exists. --- src/rbdtool.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/rbdtool.cc b/src/rbdtool.cc index 11eaa50c5ca7d..0349946ac8a84 100644 --- a/src/rbdtool.cc +++ b/src/rbdtool.cc @@ -362,17 +362,17 @@ static int do_rename(pools_t& pp, string& md_oid, const char *imgname, const cha dst_md_oid += RBD_SUFFIX; string dstname_str = dstname; string imgname_str = imgname; - int r = rados.stat(pp.md, dst_md_oid, NULL, NULL); - if (r == 0) { - cerr << "rbd image header " << dst_md_oid << " already exists" << std::endl; - return -EEXIST; - } bufferlist header; - r = read_header_bl(pp.md, md_oid, header); + int r = read_header_bl(pp.md, md_oid, header); if (r < 0) { cerr << "error reading header: " << md_oid << ": " << strerror(-r) << std::endl; return r; } + r = rados.stat(pp.md, dst_md_oid, NULL, NULL); + if (r == 0) { + cerr << "rbd image header " << dst_md_oid << " already exists" << std::endl; + return -EEXIST; + } r = write_header(pp, dst_md_oid, header); if (r < 0) { cerr << "error writing header: " << dst_md_oid << ": " << strerror(-r) << std::endl; -- 2.39.5