From: Sage Weil Date: Mon, 26 Feb 2018 22:04:20 +0000 (-0600) Subject: rbd-nbd: fix postfork_{start,finish} callers X-Git-Tag: v12.2.6~109^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5150fd006ff9bb7771149d3a9fffd3716a622ea5;p=ceph.git rbd-nbd: fix postfork_{start,finish} callers _start is called right after the prefork(). _finish is called when we do the logical daemonize() and say goodbye to the parent. Fixes: http://tracker.ceph.com/issues/23143 Signed-off-by: Sage Weil (cherry picked from commit a350c8032af41452b8f9a200f86e7f0dc0db7345) --- diff --git a/src/tools/rbd_nbd/rbd-nbd.cc b/src/tools/rbd_nbd/rbd-nbd.cc index 098d9925ca29..3d76ece42a8a 100644 --- a/src/tools/rbd_nbd/rbd-nbd.cc +++ b/src/tools/rbd_nbd/rbd-nbd.cc @@ -595,14 +595,13 @@ static int do_map(int argc, const char *argv[], Config *cfg) cerr << err << std::endl; return r; } - if (forker.is_parent()) { - global_init_postfork_start(g_ceph_context); if (forker.parent_wait(err) != 0) { return -ENXIO; } return 0; } + global_init_postfork_start(g_ceph_context); } common_init_finish(g_ceph_context); @@ -761,9 +760,8 @@ static int do_map(int argc, const char *argv[], Config *cfg) cout << cfg->devpath << std::endl; if (g_conf->daemonize) { - forker.daemonize(); - global_init_postfork_start(g_ceph_context); global_init_postfork_finish(g_ceph_context); + forker.daemonize(); } {