On Thu, 31 Jul 2014, Loic Dachary wrote:
> Hi Alexandre,
> 
> With this patch ceph-osd -f will try to create the default pid file : 
> this is a non backward compatible change. Maybe there is a way for 
> systemd to capture the pid of the process and store it instead of 
> requiring the deamon to create the pid file ?

Do we need the pid file at all when we aren't using sysinit?

sage


> 
> Cheers
> 
> On 31/07/2014 08:08, Alexandre Oliva wrote:
> > systemd wants to run daemons in foreground, but daemons wouldn't write
> > out the pid file with -f.  Fixed.
> > 
> > Signed-off-by: Alexandre Oliva <ol...@gnu.org>
> > ---
> >  src/ceph_mon.cc           |    3 +--
> >  src/common/config.cc      |    2 --
> >  src/global/global_init.cc |   10 +++++++++-
> >  3 files changed, 10 insertions(+), 5 deletions(-)
> > 
> > diff --git a/src/ceph_mon.cc b/src/ceph_mon.cc
> > index 4e84b4d..14dd6da 100644
> > --- a/src/ceph_mon.cc
> > +++ b/src/ceph_mon.cc
> > @@ -406,8 +406,7 @@ int main(int argc, const char **argv)
> >    // screwing us over
> >    Preforker prefork;
> >    if (!(flags & CINIT_FLAG_NO_DAEMON_ACTIONS)) {
> > -    if (g_conf->daemonize) {
> > -      global_init_prefork(g_ceph_context, 0);
> > +    if (global_init_prefork(g_ceph_context, 0) >= 0) {
> >        prefork.prefork();
> >        if (prefork.is_parent()) {
> >     return prefork.parent_wait();
> > diff --git a/src/common/config.cc b/src/common/config.cc
> > index 0ee7f58..4e3b6fe 100644
> > --- a/src/common/config.cc
> > +++ b/src/common/config.cc
> > @@ -389,12 +389,10 @@ int md_config_t::parse_argv(std::vector<const char*>& 
> > args)
> >      }
> >      else if (ceph_argparse_flag(args, i, "--foreground", "-f", 
> > (char*)NULL)) {
> >        set_val_or_die("daemonize", "false");
> > -      set_val_or_die("pid_file", "");
> >      }
> >      else if (ceph_argparse_flag(args, i, "-d", (char*)NULL)) {
> >        set_val_or_die("daemonize", "false");
> >        set_val_or_die("log_file", "");
> > -      set_val_or_die("pid_file", "");
> >        set_val_or_die("log_to_stderr", "true");
> >        set_val_or_die("err_to_stderr", "true");
> >        set_val_or_die("log_to_syslog", "false");
> > diff --git a/src/global/global_init.cc b/src/global/global_init.cc
> > index 7b20343..f03677c 100644
> > --- a/src/global/global_init.cc
> > +++ b/src/global/global_init.cc
> > @@ -166,8 +166,16 @@ int global_init_prefork(CephContext *cct, int flags)
> >    if (g_code_env != CODE_ENVIRONMENT_DAEMON)
> >      return -1;
> >    const md_config_t *conf = cct->_conf;
> > -  if (!conf->daemonize)
> > +  if (!conf->daemonize) {
> > +    if (atexit(pidfile_remove_void)) {
> > +      derr << "global_init_daemonize: failed to set pidfile_remove 
> > function "
> > +      << "to run at exit." << dendl;
> > +    }
> > +
> > +    pidfile_write(g_conf);
> > +
> >      return -1;
> > +  }
> >  
> >    // stop log thread
> >    g_ceph_context->_log->flush();
> > 
> 
> -- 
> Lo?c Dachary, Artisan Logiciel Libre
> 
> 
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to