Re: [PATCH v2 0/4] time namespace aware system boot time

From: Christian Brauner
Date: Fri Oct 09 2020 - 09:21:35 EST


On Thu, Oct 08, 2020 at 07:39:40AM +0200, 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_bootime provided by the task_struct.
>
> v2 Changes:
> Fixed compile errors with TIME_NS not set in config
> Reported-by: kernel test robot <lkp@xxxxxxxxx>

Hey Michael,

Thanks for the patches. This looks like a good idea to me. Since
/proc/uptime is now virtualized according to the timens the caller is in
btime has to be virtualized too.

Christian