diff options
author | Dan Mick <dan.mick@inktank.com> | 2012-11-15 14:52:39 -0800 |
---|---|---|
committer | Dan Mick <dan.mick@inktank.com> | 2012-11-26 21:37:47 -0800 |
commit | 08f47a42b5dcf77c40e3c1472739554452993412 (patch) | |
tree | cacf70d241dfe1fd5b95cb219dd05cf912a43828 | |
parent | e452df6dadd443d135527b49784a47ad21429cc1 (diff) | |
download | ceph-08f47a42b5dcf77c40e3c1472739554452993412.tar.gz |
rbd: --size fixes
* require --size/-s for both create *and* resize
* explicitly permit create with size 0.
Signed-off-by: Dan Mick <dan.mick@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
-rw-r--r-- | src/rbd.cc | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/rbd.cc b/src/rbd.cc index bac2d3fae9c..57614a65dc8 100644 --- a/src/rbd.cc +++ b/src/rbd.cc @@ -1386,6 +1386,8 @@ static bool set_conf_param(const char *param, const char **var1, return true; } +bool size_set; + int main(int argc, const char **argv) { librados::Rados rados; @@ -1452,10 +1454,11 @@ int main(int argc, const char **argv) return EXIT_FAILURE; } if (sizell < 0) { - cerr << "rbd: size must be > 0" << std::endl; + cerr << "rbd: size must be >= 0" << std::endl; return EXIT_FAILURE; } size = sizell << 20; // bytes to MB + size_set = true; } else if (ceph_argparse_flag(args, i, "-l", "--long", (char*)NULL)) { lflag = true; } else if (ceph_argparse_withlonglong(args, i, &stripe_unit, &err, "--stripe-unit", (char*)NULL)) { @@ -1745,6 +1748,13 @@ if (!set_conf_param(v, p1, p2, p3)) { \ } } + if (opt_cmd == OPT_CREATE || opt_cmd == OPT_RESIZE) { + if (!size_set) { + cerr << "rbd: must specify --size <MB>" << std::endl; + return EXIT_FAILURE; + } + } + switch (opt_cmd) { case OPT_LIST: r = do_list(rbd, io_ctx, lflag); @@ -1762,11 +1772,6 @@ if (!set_conf_param(v, p1, p2, p3)) { \ break; case OPT_CREATE: - if (!size) { - cerr << "rbd: must specify size in MB to create an rbd image" - << std::endl; - return EXIT_FAILURE; - } if (order && (order < 12 || order > 25)) { cerr << "rbd: order must be between 12 (4 KB) and 25 (32 MB)" << std::endl; |