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 <l...@intel.com>

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

Reply via email to