[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2] virtiofsd: use GDateTime for formatting timestamp for deb
From: |
Dr. David Alan Gilbert |
Subject: |
Re: [PATCH v2] virtiofsd: use GDateTime for formatting timestamp for debug messages |
Date: |
Wed, 30 Jun 2021 18:59:56 +0100 |
User-agent: |
Mutt/2.0.7 (2021-05-04) |
* Daniel P. Berrangé (berrange@redhat.com) wrote:
> The GDateTime APIs provided by GLib avoid portability pitfalls, such
> as some platforms where 'struct timeval.tv_sec' field is still 'long'
> instead of 'time_t'. When combined with automatic cleanup, GDateTime
> often results in simpler code too.
>
> Localtime is changed to UTC to avoid the need to grant extra seccomp
> permissions for GLib's access of the timezone database.
>
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Queued
> ---
> tools/virtiofsd/passthrough_ll.c | 25 ++++---------------------
> 1 file changed, 4 insertions(+), 21 deletions(-)
>
> diff --git a/tools/virtiofsd/passthrough_ll.c
> b/tools/virtiofsd/passthrough_ll.c
> index 49c21fd855..9858e961d9 100644
> --- a/tools/virtiofsd/passthrough_ll.c
> +++ b/tools/virtiofsd/passthrough_ll.c
> @@ -3559,10 +3559,6 @@ static void setup_nofile_rlimit(unsigned long
> rlimit_nofile)
> static void log_func(enum fuse_log_level level, const char *fmt, va_list ap)
> {
> g_autofree char *localfmt = NULL;
> - struct timespec ts;
> - struct tm tm;
> - char sec_fmt[sizeof "2020-12-07 18:17:54"];
> - char zone_fmt[sizeof "+0100"];
>
> if (current_log_level < level) {
> return;
> @@ -3574,23 +3570,10 @@ static void log_func(enum fuse_log_level level, const
> char *fmt, va_list ap)
> localfmt = g_strdup_printf("[ID: %08ld] %s",
> syscall(__NR_gettid),
> fmt);
> } else {
> - /* try formatting a broken-down timestamp */
> - if (clock_gettime(CLOCK_REALTIME, &ts) != -1 &&
> - localtime_r(&ts.tv_sec, &tm) != NULL &&
> - strftime(sec_fmt, sizeof sec_fmt, "%Y-%m-%d %H:%M:%S",
> - &tm) != 0 &&
> - strftime(zone_fmt, sizeof zone_fmt, "%z", &tm) != 0) {
> - localfmt = g_strdup_printf("[%s.%02ld%s] [ID: %08ld] %s",
> - sec_fmt,
> - ts.tv_nsec / (10L * 1000 * 1000),
> - zone_fmt, syscall(__NR_gettid),
> - fmt);
> - } else {
> - /* fall back to a flat timestamp */
> - localfmt = g_strdup_printf("[%" PRId64 "] [ID: %08ld] %s",
> - get_clock(), syscall(__NR_gettid),
> - fmt);
> - }
> + g_autoptr(GDateTime) now = g_date_time_new_now_utc();
> + g_autofree char *nowstr = g_date_time_format(now, "%Y-%m-%d
> %H:%M:%S.%f%z");
> + localfmt = g_strdup_printf("[%s] [ID: %08ld] %s",
> + nowstr, syscall(__NR_gettid), fmt);
> }
> fmt = localfmt;
> }
> --
> 2.31.1
>
>
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK