[Devel] [PATCH] ve: add ability to set offset for monotonic time
Andrew Vagin
avagin at virtuozzo.com
Mon Nov 30 08:05:46 PST 2015
On Mon, Nov 30, 2015 at 06:34:14PM +0300, Cyrill Gorcunov wrote:
> On Mon, Nov 30, 2015 at 07:16:08PM +0400, Andrew Vagin wrote:
> > Monotonic time can't be changed by users, can't go back and it starts with
> > zero when a kernel starts.
> >
> > When we migrate a container on another host, we need to save consistancy
> > of monotonic time, so we have a per-ve offset.
> >
> > This patch adds the ability to set this offset. When a container is
> > migrated, the value from ve.start_timespec on a source host should be
> > written in the same file on a destination host.
> >
> > https://jira.sw.ru/browse/PSBM-41311?jql=text%20~%20%22of%20persia%22
> >
> > Cc: Cyrill Gorcunov <gorcunov at openvz.org>
> > Signed-off-by: Andrew Vagin <avagin at openvz.org>
> > ---
> > include/linux/ve.h | 3 +++
> > kernel/posix-timers.c | 41 +++++++++++++++++++++++++++++++++++++++++
> > kernel/ve/ve.c | 36 ++++++++++++++++++++++++++++++++++++
> > 3 files changed, 80 insertions(+), 0 deletions(-)
> >
> > diff --git a/include/linux/ve.h b/include/linux/ve.h
> > index 86b95c3..5f972aa 100644
> > --- a/include/linux/ve.h
> > +++ b/include/linux/ve.h
> > @@ -222,6 +222,9 @@ extern struct tty_driver *vtty_console_driver(int *index);
> > extern int vtty_open_master(envid_t veid, int idx);
> > #endif /* CONFIG_TTY */
> >
> > +extern int get_ve_monotonic_time(struct ve_struct *ve, struct timespec *tp);
> > +extern int set_ve_monotonic_time(struct ve_struct *ve, struct timespec *tp);
> > +
> > #else /* CONFIG_VE */
> > +
> > +int set_ve_monotonic_time(struct ve_struct *ve, struct timespec *tp)
> > +{
> > + struct timespec kernel_tp;
> > + struct k_clock *kc = clockid_to_kclock(CLOCK_MONOTONIC);
> > + int error;
> > +
>
> if (!ve_is_super(get_exec_env()))
> return -EPERM;
>
> I've a few questions:
>
> - what about the rest of the clocks? Say CLOCK_BOOTTIME, CLOCK_MONOTONIC_RAW?
This offset affects all monotonic clocks:
#define clock_is_monotonic(which_clock) \
((which_clock) == CLOCK_MONOTONIC || \
(which_clock) == CLOCK_MONOTONIC_RAW || \
(which_clock) == CLOCK_MONOTONIC_COARSE)
Probably, we need to think about CLOCK_BOOTTIME, because it's monotonic
too, but it isn't about this patch.
> - who is responsible to save and restore of the offsets, criu or libvzctl,
> or maybe p.haul?
Any of these tool can handle this offset.
>
> Cyrill
More information about the Devel
mailing list