diff options
author | Guangliang Zhao <guangliang@unitedstack.com> | 2013-09-23 22:13:05 +0800 |
---|---|---|
committer | Josh Durgin <josh.durgin@inktank.com> | 2013-09-30 20:34:53 -0700 |
commit | 409aba6ff5239f40f25863da0fb603a44c1da47c (patch) | |
tree | 035f24f94d4b39dca3723a8f26d58193c34eee7e | |
parent | 56711370c3a7dfce683f73f1f4b7b5ccd66cbeb5 (diff) | |
download | ceph-409aba6ff5239f40f25863da0fb603a44c1da47c.tar.gz |
rbd.cc: add readonly option for "rbd map"
The device could only be set to rw(default) when mapping
now. This patch only handle the user space, because the
kernel part has been completed.
Signed-off-by: Guangliang Zhao <guangliang@unitedstack.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
-rw-r--r-- | doc/man/8/rbd.rst | 4 | ||||
-rw-r--r-- | man/rbd.8 | 5 | ||||
-rw-r--r-- | src/rbd.cc | 11 |
3 files changed, 19 insertions, 1 deletions
diff --git a/doc/man/8/rbd.rst b/doc/man/8/rbd.rst index f50d93eb04c..2d78748f5f2 100644 --- a/doc/man/8/rbd.rst +++ b/doc/man/8/rbd.rst @@ -113,6 +113,10 @@ Parameters Make json or xml formatted output more human-readable. +.. option:: --read-only + + Set device readonly when mapping image. + Commands ======== diff --git a/man/rbd.8 b/man/rbd.8 index 27a74aaa19a..88048674614 100644 --- a/man/rbd.8 +++ b/man/rbd.8 @@ -148,6 +148,11 @@ Specifies output formatting (default: plain, json, xml) .B \-\-pretty\-format Make json or xml formatted output more human\-readable. .UNINDENT +.INDENT 0.0 +.TP +.B \-\-read\-only +Set device readonly when mapping image. +.UNINDENT .SH COMMANDS .INDENT 0.0 .TP diff --git a/src/rbd.cc b/src/rbd.cc index eea9733c4b9..c0db7a6414e 100644 --- a/src/rbd.cc +++ b/src/rbd.cc @@ -68,6 +68,7 @@ static string dir_info_oid = RBD_INFO; bool udevadm_settle = true; bool progress = true; bool resize_allow_shrink = false; +bool read_only = false; #define dout_subsys ceph_subsys_rbd @@ -151,6 +152,7 @@ void usage() " --pretty-format make json or xml output more readable\n" " --no-settle do not wait for udevadm to settle on map/unmap\n" " --no-progress do not show progress for long-running commands\n" +" --read-only set device readonly when mapping image\n" " --allow-shrink allow shrinking of an image when resizing\n"; } @@ -1640,8 +1642,13 @@ static int do_kernel_add(const char *poolname, const char *imgname, oss << ","; } + if (read_only) + oss << " ro"; + else + oss << " rw"; + const char *user = g_conf->name.get_id().c_str(); - oss << " name=" << user; + oss << ",name=" << user; char key_name[strlen(user) + strlen("client.") + 1]; snprintf(key_name, sizeof(key_name), "client.%s", user); @@ -2200,6 +2207,8 @@ int main(int argc, const char **argv) lock_tag = strdup(val.c_str()); } else if (ceph_argparse_flag(args, i, "--no-settle", (char *)NULL)) { udevadm_settle = false; + } else if (ceph_argparse_flag(args, i, "--read-only", (char *)NULL)) { + read_only = true; } else if (ceph_argparse_flag(args, i, "--no-progress", (char *)NULL)) { progress = false; } else if (ceph_argparse_flag(args, i , "--allow-shrink", (char *)NULL)) { |