From: Xiubo Li Date: Fri, 13 Nov 2020 08:08:31 +0000 (+0800) Subject: global: reexpand the conf meta in all the child processes X-Git-Tag: v15.2.9~127^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=3feaaee4b68a0581a6fe1da0bdaf71df46f05f54;p=ceph.git global: reexpand the conf meta in all the child processes Especially for the tools or the daemons whose config options need to expand the '$pid', they will be always expanded with the parent processes. We need to reexpand them in child processes just after the fork is done. Fixes: https://tracker.ceph.com/issues/48240 Signed-off-by: Xiubo Li (cherry picked from commit 73a48dfe8ed165cb6c8295a88f133acb30e7065e) Conflicts: PendingReleaseNotes --- diff --git a/PendingReleaseNotes b/PendingReleaseNotes index c5fb58f63e5c..68d4924a4b43 100644 --- a/PendingReleaseNotes +++ b/PendingReleaseNotes @@ -1,5 +1,8 @@ -15.2.6 +15.2.8 ------ +* $pid expansion in config paths like `admin_socket` will now properly expand + to the daemon pid for commands like `ceph-mds` or `ceph-osd`. Previously only + `ceph-fuse`/`rbd-nbd` expanded `$pid` with the actual daemon pid. * ceph-volume: The ``lvm batch` subcommand received a major rewrite. This closed a number of bugs and improves usability in terms of size specification and diff --git a/src/ceph_fuse.cc b/src/ceph_fuse.cc index b707806b6699..5ae9404d8975 100644 --- a/src/ceph_fuse.cc +++ b/src/ceph_fuse.cc @@ -167,9 +167,8 @@ int main(int argc, const char **argv, const char *envp[]) { } { - g_ceph_context->_conf.finalize_reexpand_meta(); common_init_finish(g_ceph_context); - + init_async_signal_handler(); register_async_signal_handler(SIGHUP, sighup_handler); diff --git a/src/global/global_init.cc b/src/global/global_init.cc index 0afeddb12a5f..d1dc4c5790a6 100644 --- a/src/global/global_init.cc +++ b/src/global/global_init.cc @@ -494,6 +494,9 @@ int reopen_as_null(CephContext *cct, int fd) void global_init_postfork_start(CephContext *cct) { + // reexpand the meta in child process + cct->_conf.finalize_reexpand_meta(); + // restart log thread cct->_log->start(); cct->notify_post_fork(); diff --git a/src/tools/rbd_nbd/rbd-nbd.cc b/src/tools/rbd_nbd/rbd-nbd.cc index b720b85dff74..a2a911f40a1d 100644 --- a/src/tools/rbd_nbd/rbd-nbd.cc +++ b/src/tools/rbd_nbd/rbd-nbd.cc @@ -1157,7 +1157,6 @@ static int do_map(int argc, const char *argv[], Config *cfg) global_init_postfork_start(g_ceph_context); } - g_ceph_context->_conf.finalize_reexpand_meta(); common_init_finish(g_ceph_context); global_init_chdir(g_ceph_context);