]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
mds: set ceph-mds name uncond for external tools 14673/head
authorPatrick Donnelly <pdonnell@redhat.com>
Fri, 17 Mar 2017 01:45:46 +0000 (21:45 -0400)
committerNathan Cutler <ncutler@suse.com>
Mon, 19 Jun 2017 21:38:36 +0000 (23:38 +0200)
commita4c181fa7ab6ced676b9ff4f1381555215d77152
treed741624c90b91aed5ce6bbc91e80bac85b3964c7
parent2469085d57a05933589165f6f99a67b2e28c7022
mds: set ceph-mds name uncond for external tools

External tools like logrotate which use killall rely on the "ceph-mds" name to
find it in /proc/*/comm. This is normally the case but when ceph-mds respawns
using /proc/self/exe (on Linux), its name will change to "exe". This makes
logrotate fail to signal ceph-mds the log needs to be reopened and will lead to
the log growing until the disk is full.

This patch unconditionally sets the name so on respawn the name is correct (and
in any other possible scenario, such as a misnamed executable).  Note, there is
still a very small race between execve and ceph_pthread_setname where the
process name is wrong.

Problem was introduced by 66a122025f6cf023cf7b2f3d8fbe4964fb7568a7.

Fixes: http://tracker.ceph.com/issues/19291
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
(cherry picked from commit 4f177bb6b72cf9c8eb363051b27496c026b345f0)

Conflicts:
    src/ceph_mds.cc - use pthread_setname_np() instead of
        ceph_pthread_setname(), drop compat.h include
src/ceph_mds.cc