[ovs-dev] [PATCH] datapath: Correctly report flow used times for first 5 minutes after boot.
Pravin Shelar
pshelar at nicira.com
Fri Feb 28 23:07:45 UTC 2014
On Fri, Feb 28, 2014 at 1:14 PM, Ben Pfaff <blp at nicira.com> wrote:
> The kernel starts out its "jiffies" timer as 5 minutes below zero, as
> shown in include/linux/jiffies.h:
>
> /*
> * Have the 32 bit jiffies value wrap 5 minutes after boot
> * so jiffies wrap bugs show up earlier.
> */
> #define INITIAL_JIFFIES ((unsigned long)(unsigned int) (-300*HZ))
>
> The loop in ovs_flow_stats_get() starts out with 'used' set to 0, then
> takes any "later" time. This means that for the first five minutes after
> boot, flows will always be reported as never used, since 0 is greater than
> any time already seen.
>
> Signed-off-by: Ben Pfaff <blp at nicira.com>
Good catch.
Acked-by: Pravin B Shelar <pshelar at nicira.com>
> ---
> datapath/flow.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/datapath/flow.c b/datapath/flow.c
> index c3e3fcb..e9a2a27 100644
> --- a/datapath/flow.c
> +++ b/datapath/flow.c
> @@ -1,5 +1,5 @@
> /*
> - * Copyright (c) 2007-2013 Nicira, Inc.
> + * Copyright (c) 2007-2014 Nicira, Inc.
> *
> * This program is free software; you can redistribute it and/or
> * modify it under the terms of version 2 of the GNU General Public
> @@ -148,7 +148,7 @@ void ovs_flow_stats_get(struct sw_flow *flow, struct ovs_flow_stats *ovs_stats,
> * block bottom-halves here.
> */
> spin_lock_bh(&stats->lock);
> - if (time_after(stats->used, *used))
> + if (!*used || time_after(stats->used, *used))
> *used = stats->used;
> *tcp_flags |= stats->tcp_flags;
> ovs_stats->n_packets += stats->packet_count;
> --
> 1.7.10.4
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
More information about the dev
mailing list