From: David Gibson <david@gibson.dropbear.id.au>
To: Stefano Brivio <sbrivio@redhat.com>
Cc: passt-dev@passt.top, Yalan Zhang <yalzhang@redhat.com>
Subject: Re: [PATCH 1/6] conf, passt: Don't try to log to stderr after we close it
Date: Wed, 19 Jun 2024 12:06:01 +1000 [thread overview]
Message-ID: <ZnI9CbIL1UU-KqBz@zatzit> (raw)
In-Reply-To: <20240618080004.5fb4e355@elisabeth>
[-- Attachment #1: Type: text/plain, Size: 3432 bytes --]
On Tue, Jun 18, 2024 at 08:00:14AM +0200, Stefano Brivio wrote:
> On Tue, 18 Jun 2024 10:36:28 +1000
> David Gibson <david@gibson.dropbear.id.au> wrote:
>
> > On Mon, Jun 17, 2024 at 02:03:14PM +0200, Stefano Brivio wrote:
> > > If we don't run in foreground, we close standard error as we
> > > daemonise, so it makes no sense to check if the controlling terminal
> > > is an interactive terminal or if --force-stderr was given, to decide
> > > if we want to log to standard error.
> > >
> > > Make --force-stderr depend on --foreground.
> > >
> > > Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
> >
> > Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
> >
> > > ---
> > > conf.c | 3 +++
> > > passt.c | 2 +-
> > > 2 files changed, 4 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/conf.c b/conf.c
> > > index 94b3ed6..dbdbb62 100644
> > > --- a/conf.c
> > > +++ b/conf.c
> > > @@ -1693,6 +1693,9 @@ void conf(struct ctx *c, int argc, char **argv)
> > >
> > > conf_ugid(runas, &uid, &gid);
> > >
> > > + if (!c->foreground && c->force_stderr)
> > > + die("Can't log to standard error if not running in foreground");
> > > +
> > > if (logfile) {
> > > logfile_init(c->mode == MODE_PASTA ? "pasta" : "passt",
> > > logfile, logsize);
> > > diff --git a/passt.c b/passt.c
> > > index a5e2c5a..aa9648a 100644
> > > --- a/passt.c
> > > +++ b/passt.c
> > > @@ -302,7 +302,7 @@ int main(int argc, char **argv)
> > > if (isolate_prefork(&c))
> > > die("Failed to sandbox process, exiting");
> > >
> > > - if (!c.force_stderr && !isatty(fileno(stderr)))
> > > + if (!c.foreground || (!c.force_stderr && !isatty(fileno(stderr))))
> >
> > What's the rationale for the isatty() check in any case?
>
> To implement the behaviour from the man page:
>
> -e, --stderr
> Log to standard error too. Default is to log to the sys‐
> tem logger only, if started from an interactive terminal,
> and to both system logger and standard error otherwise.
Hmm.. maybe I'm getting confused reading either the man page or the
code, but isn't that the opposite of what the code is doing? The code
appears to be opening the log if we're *not* on an interactive terminal.
> which was needed, in turn, because of earlier versions of passt and of
> the KubeVirt integration where passt was running in foreground, but (of
> course) not attached to a terminal, and there was no option to force
> printing to standard error.
>
> Given that KubeVirt doesn't have a system logger, it was otherwise
> impossible to get messages out of passt.
>
> It's an abomination that just adds complexity now, and I don't think
> anybody uses it that way anymore. I guess we should drop that, together
> with qrap, in a few months from now.
Right.. but what I'm after is the rationale for this depending on
whether it's an interactive terminal at all. Seems to me the logical
thing to do is to (by default) always log to stderr before
daemonization (i.e. forever when in foreground mode), then to logfile
and/or syslog after daemonization. Regardless of whether there's a
tty or not.
--
David Gibson (he or they) | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you, not the other way
| around.
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2024-06-19 2:11 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-17 12:03 [PATCH 0/6] Fixes for early logging/prints and related cleanups Stefano Brivio
2024-06-17 12:03 ` [PATCH 1/6] conf, passt: Don't try to log to stderr after we close it Stefano Brivio
2024-06-18 0:36 ` David Gibson
2024-06-18 6:00 ` Stefano Brivio
2024-06-19 2:06 ` David Gibson [this message]
2024-06-19 8:13 ` Stefano Brivio
2024-06-20 0:12 ` David Gibson
2024-06-17 12:03 ` [PATCH 2/6] conf, log: Introduce internal log flags, instead of abusing log levels Stefano Brivio
2024-06-18 0:39 ` David Gibson
2024-06-18 6:01 ` Stefano Brivio
2024-06-17 12:03 ` [PATCH 3/6] log, passt: Always print to stderr before initialisation is complete Stefano Brivio
2024-06-18 0:44 ` David Gibson
2024-06-18 6:01 ` Stefano Brivio
2024-06-19 2:10 ` David Gibson
2024-06-19 8:17 ` Stefano Brivio
2024-06-20 0:12 ` David Gibson
2024-06-17 12:03 ` [PATCH 4/6] log: Add _perror() logging function variants Stefano Brivio
2024-06-18 0:46 ` David Gibson
2024-06-18 6:02 ` Stefano Brivio
2024-06-19 2:11 ` David Gibson
2024-06-19 8:25 ` Stefano Brivio
2024-06-20 0:13 ` David Gibson
2024-06-17 12:03 ` [PATCH 5/6] treewide: Replace perror() calls with calls to logging functions Stefano Brivio
2024-06-18 0:50 ` David Gibson
2024-06-17 12:03 ` [PATCH 6/6] treewide: Replace strerror() calls Stefano Brivio
2024-06-18 0:51 ` David Gibson
2024-06-18 6:02 ` Stefano Brivio
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZnI9CbIL1UU-KqBz@zatzit \
--to=david@gibson.dropbear.id.au \
--cc=passt-dev@passt.top \
--cc=sbrivio@redhat.com \
--cc=yalzhang@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://passt.top/passt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for IMAP folder(s).