]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rbd.cc: add readonly option for "rbd map"
authorGuangliang Zhao <guangliang@unitedstack.com>
Mon, 23 Sep 2013 14:13:05 +0000 (22:13 +0800)
committerJosh Durgin <josh.durgin@inktank.com>
Tue, 1 Oct 2013 03:34:53 +0000 (20:34 -0700)
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>
doc/man/8/rbd.rst
man/rbd.8
src/rbd.cc

index f50d93eb04c4a9df5ab2cd29bfbae69b7281ccf4..2d78748f5f21dca5b770a87f3f027139ced9b362 100644 (file)
@@ -113,6 +113,10 @@ Parameters
 
    Make json or xml formatted output more human-readable.
 
+.. option:: --read-only
+
+   Set device readonly when mapping image.
+
 
 Commands
 ========
index 27a74aaa19ae79c9f1ca7cca17c249632dd44a53..88048674614e3e7bf018dd685659d44058183462 100644 (file)
--- 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
index eea9733c4b98f424b920c3a3b950a70a23e1e677..c0db7a6414ead6894cc279b58b1d486bfa3f6087 100644 (file)
@@ -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)) {