mirror of
https://github.com/ceph/ceph
synced 2025-02-18 00:17:37 +00:00
rbd-nbd: allow user to specify cookie at map
Allow user to specify cookie of choice at the time of map $ rbd device attach rbd-pool/image --device /dev/nbd0 \ --cookie 6f85d970-10b2-456b-8baf-676aa4d782e4 --options try-netlink Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
This commit is contained in:
parent
6df06c7a62
commit
16404dede8
@ -255,7 +255,7 @@ Commands
|
||||
Show the rbd images that are mapped via the rbd kernel module
|
||||
(default) or other supported device.
|
||||
|
||||
:command:`device map` [-t | --device-type *device-type*] [--show-cookie] [--read-only] [--exclusive] [-o | --options *device-options*] *image-spec* | *snap-spec*
|
||||
:command:`device map` [-t | --device-type *device-type*] [--cookie *device-cookie*] [--show-cookie] [--read-only] [--exclusive] [-o | --options *device-options*] *image-spec* | *snap-spec*
|
||||
Map the specified image to a block device via the rbd kernel module
|
||||
(default) or other supported device (*nbd* on Linux or *ggate* on
|
||||
FreeBSD).
|
||||
@ -270,7 +270,7 @@ Commands
|
||||
The --options argument is a comma separated list of device type
|
||||
specific options (opt1,opt2=val,...).
|
||||
|
||||
:command:`device attach` [-t | --device-type *device-type*] --device *device-path* [--cookie *device-cookie*] [--read-only] [--exclusive] [--force] [-o | --options *device-options*] *image-spec* | *snap-spec*
|
||||
:command:`device attach` [-t | --device-type *device-type*] --device *device-path* [--cookie *device-cookie*] [--show-cookie] [--read-only] [--exclusive] [--force] [-o | --options *device-options*] *image-spec* | *snap-spec*
|
||||
Attach the specified image to the specified block device (currently only
|
||||
`nbd` on Linux). This operation is unsafe and should not be normally used.
|
||||
In particular, specifying the wrong image or the wrong block device may
|
||||
|
@ -576,8 +576,9 @@
|
||||
rbd help device attach
|
||||
usage: rbd device attach [--device-type <device-type>] [--pool <pool>]
|
||||
[--namespace <namespace>] [--image <image>]
|
||||
[--snap <snap>] --device <device> [--cookie <cookie>]
|
||||
[--read-only] [--force] [--exclusive] [--quiesce]
|
||||
[--snap <snap>] --device <device> [--show-cookie]
|
||||
[--cookie <cookie>] [--read-only] [--force]
|
||||
[--exclusive] [--quiesce]
|
||||
[--quiesce-hook <quiesce-hook>] [--options <options>]
|
||||
<image-or-snap-spec>
|
||||
|
||||
@ -596,6 +597,7 @@
|
||||
--image arg image name
|
||||
--snap arg snapshot name
|
||||
--device arg specify device path
|
||||
--show-cookie show device cookie
|
||||
--cookie arg specify device cookie
|
||||
--read-only attach read-only
|
||||
--force force attach
|
||||
@ -638,8 +640,8 @@
|
||||
rbd help device map
|
||||
usage: rbd device map [--device-type <device-type>] [--pool <pool>]
|
||||
[--namespace <namespace>] [--image <image>]
|
||||
[--snap <snap>] [--show-cookie] [--read-only]
|
||||
[--exclusive] [--quiesce]
|
||||
[--snap <snap>] [--show-cookie] [--cookie <cookie>]
|
||||
[--read-only] [--exclusive] [--quiesce]
|
||||
[--quiesce-hook <quiesce-hook>] [--options <options>]
|
||||
<image-or-snap-spec>
|
||||
|
||||
@ -658,6 +660,7 @@
|
||||
--image arg image name
|
||||
--snap arg snapshot name
|
||||
--show-cookie show device cookie
|
||||
--cookie arg specify device cookie
|
||||
--read-only map read-only
|
||||
--exclusive disable automatic exclusive lock transitions
|
||||
--quiesce use quiesce hooks
|
||||
|
@ -176,6 +176,7 @@ void get_map_arguments(po::options_description *positional,
|
||||
at::ARGUMENT_MODIFIER_NONE);
|
||||
options->add_options()
|
||||
("show-cookie", po::bool_switch(), "show device cookie")
|
||||
("cookie", po::value<std::string>(), "specify device cookie")
|
||||
("read-only", po::bool_switch(), "map read-only")
|
||||
("exclusive", po::bool_switch(), "disable automatic exclusive lock transitions")
|
||||
("quiesce", po::bool_switch(), "use quiesce hooks")
|
||||
@ -213,6 +214,7 @@ void get_attach_arguments(po::options_description *positional,
|
||||
at::ARGUMENT_MODIFIER_NONE);
|
||||
options->add_options()
|
||||
("device", po::value<std::string>()->required(), "specify device path")
|
||||
("show-cookie", po::bool_switch(), "show device cookie")
|
||||
("cookie", po::value<std::string>(), "specify device cookie")
|
||||
("read-only", po::bool_switch(), "attach read-only")
|
||||
("force", po::bool_switch(), "force attach")
|
||||
|
@ -163,6 +163,10 @@ int execute_attach(const po::variables_map &vm,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (vm["show-cookie"].as<bool>()) {
|
||||
args.push_back("--show-cookie");
|
||||
}
|
||||
|
||||
if (vm.count("cookie")) {
|
||||
args.push_back("--cookie");
|
||||
args.push_back(vm["cookie"].as<std::string>());
|
||||
@ -266,6 +270,11 @@ int execute_map(const po::variables_map &vm,
|
||||
args.push_back("--show-cookie");
|
||||
}
|
||||
|
||||
if (vm.count("cookie")) {
|
||||
args.push_back("--cookie");
|
||||
args.push_back(vm["cookie"].as<std::string>());
|
||||
}
|
||||
|
||||
if (vm["read-only"].as<bool>()) {
|
||||
args.push_back("--read-only");
|
||||
}
|
||||
|
@ -167,7 +167,7 @@ static void usage()
|
||||
<< " (default: " << Config().reattach_timeout << ")\n"
|
||||
<< " --try-netlink Use the nbd netlink interface\n"
|
||||
<< " --show-cookie Show device cookie\n"
|
||||
<< " --cookie Specify device cookie for attach\n"
|
||||
<< " --cookie Specify device cookie\n"
|
||||
<< "\n"
|
||||
<< "List options:\n"
|
||||
<< " --format plain|json|xml Output format (default: plain)\n"
|
||||
@ -1743,7 +1743,8 @@ static int do_map(int argc, const char *argv[], Config *cfg, bool reconnect)
|
||||
|
||||
use_netlink = cfg->try_netlink || reconnect;
|
||||
if (use_netlink) {
|
||||
if (!reconnect) {
|
||||
// generate when the cookie is not supplied at CLI
|
||||
if (!reconnect && cfg->cookie.empty()) {
|
||||
uuid_d uuid_gen;
|
||||
uuid_gen.generate_random();
|
||||
cfg->cookie = uuid_gen.to_string();
|
||||
@ -1791,9 +1792,9 @@ static int do_map(int argc, const char *argv[], Config *cfg, bool reconnect)
|
||||
goto close_nbd;
|
||||
|
||||
std::string cookie;
|
||||
if (use_netlink && !cfg->cookie.empty()) {
|
||||
if (use_netlink) {
|
||||
cookie = get_cookie(cfg->devpath);
|
||||
ceph_assert(cookie == cfg->cookie);
|
||||
ceph_assert(cookie == cfg->cookie || cookie.empty());
|
||||
}
|
||||
if (cfg->show_cookie && !cookie.empty()) {
|
||||
cout << cfg->devpath << " " << cookie << std::endl;
|
||||
|
Loading…
Reference in New Issue
Block a user