return 0;
}
-static int do_map()
+static int do_map(int argc, const char *argv[])
{
int r;
Preforker forker;
+ vector<const char*> 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);
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;
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;
vector<const char*> 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<const char*>::iterator i;
std::ostringstream err;
return EXIT_FAILURE;
}
- r = do_map();
+ r = do_map(argc, argv);
if (r < 0)
return EXIT_FAILURE;
break;