From: Oren Laadan <orenl-RdfvBDnrOixBDgjK7y7TUQ@public.gmane.org>
To: "Serge E. Hallyn" <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
Cc: Linux Containers <containers-qjLDD68F18O7TbgM5vRIOg@public.gmane.org>
Subject: Re: [PATCH user-cr] Allow for logfile for kernel debug messages (v2)
Date: Wed, 21 Oct 2009 17:46:40 -0400 [thread overview]
Message-ID: <4ADF8140.3010102@librato.com> (raw)
In-Reply-To: <20091021210533.GA2165-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
Serge E. Hallyn wrote:
> If unspecified, -1 will be sent for logfd to the kernel, and there
> will be no debug log. If specified, then checkpoint and restart
> debug msgs will be sent to the logfile.
The new interface will cover error reporting, so when run without '-l'
both 'checkpoint' and 'restart' (unless asked to run extra silently)
need to provide a pipe to the syscall, and if an error occurs, display
pull the error reason from the pipe and print it.
>
> Logfile is specified using -l LOGFILE or --logfile=LOGFILE, i.e.
>
> checkpoint $pid -o ckpt.out -l ckpt.debug
> restart -l rstr.debug -i ckpt.out
>
> Changelog:
> oct 21: take a --logall flag
>
> Signed-off-by: Serge E. Hallyn <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
> ---
> checkpoint.c | 34 ++++++++++++++++++++++++++++++----
> restart.c | 47 +++++++++++++++++++++++++++++++++++++++++------
> 2 files changed, 71 insertions(+), 10 deletions(-)
>
> diff --git a/checkpoint.c b/checkpoint.c
> index c116daf..553132c 100644
> --- a/checkpoint.c
> +++ b/checkpoint.c
> @@ -32,6 +32,8 @@ static char usage_str[] =
> "\tOptions:\n"
> " -h,--help print this help message\n"
> " -o,--output=FILE write data to FILE instead of standard output\n"
> +" -l,--logfile=FILE write kernel debug data to FILE (default=nowhere)\n"
Can the user ask to append the data to a file ?
Also, I'm thinking of adding --output-fd=FD (and then --logfile-fd=FD)
to allow a user to first create suitable fds and then exec the program
(that will allow to easily redirect input/output without adding endless
options).
> +" -a,--logall have kernel output all debug data, not just errors\n"
Maybe use '-d'/'-D', or some --debug-log instead ?
> " -c,--container require the PID is a container-init\n"
> " -v,--verbose verbose output\n"
> "";
> @@ -40,11 +42,13 @@ struct args {
> char *output;
> int container;
> int verbose;
> + int logall;
> + char *logfile;
> };
>
> -inline static int checkpoint(pid_t pid, int fd, unsigned long flags)
> +inline static int checkpoint(pid_t pid, int fd, unsigned long flags, int logfd)
> {
> - return syscall(__NR_checkpoint, pid, fd, flags);
> + return syscall(__NR_checkpoint, pid, fd, flags, logfd);
> }
>
> static void usage(char *str)
> @@ -59,10 +63,12 @@ static void parse_args(struct args *args, int argc, char *argv[])
> { "help", no_argument, NULL, 'h' },
> { "output", required_argument, NULL, 'o' },
> { "container", no_argument, NULL, 'c' },
> + { "logfile", required_argument, NULL, 'l' },
> + { "logall", required_argument, NULL, 'a' },
> { "verbose", no_argument, NULL, 'v' },
> { NULL, 0, NULL, 0 }
> };
> - static char optc[] = "hvco:";
> + static char optc[] = "ahvco:l:";
>
> while (1) {
> int c = getopt_long(argc, argv, optc, opts, NULL);
> @@ -73,12 +79,18 @@ static void parse_args(struct args *args, int argc, char *argv[])
> exit(1);
> case 'h':
> usage(usage_str);
> + case 'a':
> + args->logall = 1;
> + break;
> case 'o':
> args->output = optarg;
> break;
> case 'c':
> args->container = 1;
> break;
> + case 'l':
> + args->logfile = optarg;
> + break;
> case 'v':
> args->verbose = 1;
> break;
> @@ -94,6 +106,7 @@ int main(int argc, char *argv[])
> unsigned long flags = 0;
> pid_t pid;
> int ret;
> + int logfd;
>
> memset(&args, 0, sizeof(args));
> parse_args(&args, argc, argv);
> @@ -125,8 +138,21 @@ int main(int argc, char *argv[])
> if (ret != STDOUT_FILENO)
> close(ret);
> }
> + if (args.logfile) {
> + logfd = open(args.logfile, O_RDWR | O_CREAT, 0600);
What if the file exists -- always overwrite ?
> + if (logfd < 0) {
> + perror("open logfile");
> + exit(1);
> + }
> + }
[...]
The comments above also apply to the 'restart' part.
Thanks,
Oren.
next prev parent reply other threads:[~2009-10-21 21:46 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-21 21:05 [PATCH RFC] Send checkpoint and restart debug info to a log file (v2) Serge E. Hallyn
[not found] ` <20091021210507.GA2098-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-21 21:05 ` [PATCH user-cr] Allow for logfile for kernel debug messages (v2) Serge E. Hallyn
[not found] ` <20091021210533.GA2165-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-21 21:46 ` Oren Laadan [this message]
[not found] ` <4ADF8140.3010102-RdfvBDnrOixBDgjK7y7TUQ@public.gmane.org>
2009-10-21 22:02 ` Serge E. Hallyn
[not found] ` <20091021220245.GA8994-A9i7LUbDfNHQT0dZR+AlfA@public.gmane.org>
2009-10-21 22:18 ` Oren Laadan
[not found] ` <4ADF88BD.20400-RdfvBDnrOixBDgjK7y7TUQ@public.gmane.org>
2009-10-22 5:56 ` Matt Helsley
2009-10-22 5:48 ` Matt Helsley
[not found] ` <20091022054853.GC7757-52DBMbEzqgQ/wnmkkaCWp/UQ3DHhIser@public.gmane.org>
2009-10-23 18:59 ` Oren Laadan
2009-10-21 22:03 ` [PATCH RFC] Send checkpoint and restart debug info to a log file (v2) Oren Laadan
[not found] ` <4ADF853F.6080807-RdfvBDnrOixBDgjK7y7TUQ@public.gmane.org>
2009-10-21 22:49 ` Serge E. Hallyn
[not found] ` <20091021224922.GA5827-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-21 23:14 ` Oren Laadan
[not found] ` <4ADF95D0.8060806-RdfvBDnrOixBDgjK7y7TUQ@public.gmane.org>
2009-10-22 0:51 ` Serge E. Hallyn
[not found] ` <20091022005157.GA11608-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-22 6:04 ` Matt Helsley
[not found] ` <20091022060400.GE7757-52DBMbEzqgQ/wnmkkaCWp/UQ3DHhIser@public.gmane.org>
2009-10-23 18:48 ` Oren Laadan
[not found] ` <4AE1FA7A.5030702-RdfvBDnrOixBDgjK7y7TUQ@public.gmane.org>
2009-10-23 20:06 ` Serge E. Hallyn
2009-10-26 21:52 ` Serge E. Hallyn
[not found] ` <20091026215238.GA10900-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-10-26 23:39 ` Oren Laadan
2009-10-22 18:25 ` Serge E. Hallyn
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=4ADF8140.3010102@librato.com \
--to=orenl-rdfvbdnroixbdgjk7y7tuq@public.gmane.org \
--cc=containers-qjLDD68F18O7TbgM5vRIOg@public.gmane.org \
--cc=serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org \
/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.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.