From 72352653d585ef89043a4ece371b5c0cb3f6f32a Mon Sep 17 00:00:00 2001 From: Pan Liu Date: Thu, 16 Feb 2017 22:17:52 +0800 Subject: [PATCH] rbd-nbd: no need create asok file for unmap and list-mapped commands. Fixes: http://tracker.ceph.com/issues/17951 Signed-off-by: Pan Liu --- src/tools/rbd_nbd/rbd-nbd.cc | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/tools/rbd_nbd/rbd-nbd.cc b/src/tools/rbd_nbd/rbd-nbd.cc index f49ea6ade5a93..9e2a8f82031f0 100644 --- a/src/tools/rbd_nbd/rbd-nbd.cc +++ b/src/tools/rbd_nbd/rbd-nbd.cc @@ -493,7 +493,7 @@ static int check_device_size(int nbd_index, unsigned long expected_size) return 0; } -static int do_map() +static int do_map(int argc, const char *argv[]) { int r; @@ -514,6 +514,15 @@ static int do_map() Preforker forker; + vector args; + argv_to_vec(argc, argv, args); + env_to_vec(args); + + auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, + CODE_ENVIRONMENT_DAEMON, + CINIT_FLAG_UNPRIVILEGED_DAEMON_DEFAULTS); + g_ceph_context->_conf->set_val_or_die("pid_file", ""); + if (global_init_prefork(g_ceph_context) >= 0) { std::string err; r = forker.prefork(err); @@ -707,8 +716,6 @@ close_ret: static int do_unmap() { - common_init_finish(g_ceph_context); - int nbd = open_device(devpath.c_str()); if (nbd < 0) { cerr << "rbd-nbd: failed to open device: " << devpath << std::endl; @@ -750,8 +757,6 @@ static int do_list_mapped_devices() int m = 0; int fd[2]; - common_init_finish(g_ceph_context); - if (socketpair(AF_UNIX, SOCK_STREAM, 0, fd) == -1) { int r = -errno; cerr << "rbd-nbd: socketpair failed: " << cpp_strerror(-r) << std::endl; @@ -790,11 +795,7 @@ static int rbd_nbd(int argc, const char *argv[]) vector args; argv_to_vec(argc, argv, args); - env_to_vec(args); - auto cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, - CODE_ENVIRONMENT_DAEMON, - CINIT_FLAG_UNPRIVILEGED_DAEMON_DEFAULTS); - g_ceph_context->_conf->set_val_or_die("pid_file", ""); + md_config_t().parse_argv(args); std::vector::iterator i; std::ostringstream err; @@ -885,7 +886,7 @@ static int rbd_nbd(int argc, const char *argv[]) return EXIT_FAILURE; } - r = do_map(); + r = do_map(argc, argv); if (r < 0) return EXIT_FAILURE; break; -- 2.39.5