Re: [PATCH v5 0/3] time namespace aware system boot time

From: Christian Brauner
Date: Thu Oct 29 2020 - 11:33:21 EST


On Tue, Oct 27, 2020 at 09:42:55PM +0100, Michael Weiß wrote:
> Time namespaces make it possible to virtualize time inside of
> containers, e.g., it is feasible to reset the uptime of a container
> to zero by setting the time namespace offset for boottime to the
> negated current value of the CLOCK_BOOTTIME.
>
> However, the boot time stamp provided by getboottime64() does not
> take care of time namespaces. The resulting boot time stamp 'btime'
> provided by /proc/stat does not show a plausible time stamp inside
> the time namespace of a container.
>
> We address this by shifting the value returned by getboottime64()
> by subtracting the boottime offset of the time namespace.
> (A selftest to check the expected /proc/stat 'btime' inside the
> namespace is provided.)
>
> Further, to avoid to show processes as time travelers inside of the
> time namespace the boottime offset then needs to be added to the
> start_boottime provided by the task_struct.
>
> v5 Changes:
> Added tags, Thanks Andrei and Thomas for reviews and comments.
> Updated commit message of [2/3] as indicated by Thomas.
>
> v4 Changes:
> Avoid type conversions back and forth between timespec64 and ktime_t
> in 'proc/stat.c' as suggested by Andrei.
> Introduced timens_sub_boottime() in 'time_namespace.h' to provide
> better coder readability/consistency.
>
> v3 Changes:
> leave getboottime64() unchanged and shift the boot timestamp in
> 'fs/proc/stat.c' as result of the discussion with Andrei and Thomas.
>
> v2 Changes:
> Fixed compile errors with TIME_NS not set in config

Thank you Michael,

Acked-by: Christian Brauner <christian.brauner@xxxxxxxxxx>

As discussed with Thomas, I'm picking this up now!

Thanks!
Christian