From: Thomas Gleixner <tglx@linutronix.de>
To: David Howells <dhowells@redhat.com>
Cc: linux-afs@lists.infradead.org, linux-fsdevel@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH 04/11] Add a function to start/reduce a timer
Date: Fri, 20 Oct 2017 14:20:27 +0200 (CEST) [thread overview]
Message-ID: <alpine.DEB.2.20.1710201359480.2908@nanos> (raw)
In-Reply-To: <150428047736.25051.11186891058355974569.stgit@warthog.procyon.org.uk>
On Fri, 1 Sep 2017, David Howells wrote:
> Add a function, similar to mod_timer(), that will start a timer it isn't
s/it /if it /
> running and will modify it if it is running and has an expiry time longer
> than the new time. If the timer is running with an expiry time that's the
> same or sooner, no change is made.
>
> The function looks like:
>
> int reduce_timer(struct timer_list *timer, unsigned long expires);
Well, yes. But what's the purpose of this function? You explain the what,
but not the why.
> +extern int reduce_timer(struct timer_list *timer, unsigned long expires);
For new timer functions we really should use the timer_xxxx()
convention. The historic naming convention is horrible.
Aside of that timer_reduce() is kinda ugly but I failed to come up with
something reasonable as well.
> static inline int
> -__mod_timer(struct timer_list *timer, unsigned long expires, bool pending_only)
> +__mod_timer(struct timer_list *timer, unsigned long expires, unsigned int options)
> {
> struct timer_base *base, *new_base;
> unsigned int idx = UINT_MAX;
> @@ -938,8 +941,13 @@ __mod_timer(struct timer_list *timer, unsigned long expires, bool pending_only)
> * same array bucket then just return:
> */
> if (timer_pending(timer)) {
> - if (timer->expires == expires)
> - return 1;
> + if (options & MOD_TIMER_REDUCE) {
> + if (time_before_eq(timer->expires, expires))
> + return 1;
> + } else {
> + if (timer->expires == expires)
> + return 1;
> + }
This hurts the common networking optimzation case. Please keep that check
first:
if (timer->expires == expires)
return 1;
if ((options & MOD_TIMER_REDUCE) &&
time_before(timer->expires, expires))
return 1;
Also please check whether it's more efficient code wise to have that option
thing or if an additional 'bool reduce' argument cerates better code.
Thanks,
tglx
next prev parent reply other threads:[~2017-10-20 12:20 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-01 15:40 [RFC PATCH 01/11] workqueue: Add a decrement-after-return and wake if 0 facility David Howells
2017-09-01 15:41 ` [RFC PATCH 02/11] refcount: Implement inc/decrement-and-return functions David Howells
2017-09-01 16:42 ` Peter Zijlstra
2017-09-01 21:15 ` David Howells
2017-09-01 21:50 ` Peter Zijlstra
2017-09-01 22:03 ` Peter Zijlstra
2017-09-01 22:51 ` David Howells
2017-09-04 7:30 ` Peter Zijlstra
2017-09-04 15:36 ` Christoph Hellwig
2017-09-04 16:08 ` David Howells
2017-09-05 6:45 ` Christoph Hellwig
2017-09-01 15:41 ` [RFC PATCH 03/11] Pass mode to wait_on_atomic_t() action funcs and provide default actions David Howells
2017-09-01 15:41 ` [RFC PATCH 04/11] Add a function to start/reduce a timer David Howells
2017-10-20 12:20 ` Thomas Gleixner [this message]
2017-11-09 0:33 ` David Howells
2017-09-01 15:41 ` [RFC PATCH 05/11] afs: Lay the groundwork for supporting network namespaces David Howells
2017-09-01 15:41 ` [RFC PATCH 06/11] afs: Add some protocol defs David Howells
2017-09-01 15:41 ` [RFC PATCH 07/11] afs: Update the cache index structure David Howells
2017-09-01 15:41 ` [RFC PATCH 08/11] afs: Keep and pass sockaddr_rxrpc addresses rather than in_addr David Howells
2017-09-01 15:41 ` [RFC PATCH 09/11] afs: Allow IPv6 address specification of VL servers David Howells
2017-09-01 15:42 ` [RFC PATCH 10/11] afs: Overhaul cell database management David Howells
2017-09-01 15:42 ` [RFC PATCH 11/11] afs: Retry rxrpc calls with address rotation on network error David Howells
2017-09-01 15:52 ` [RFC PATCH 00/11] AFS: Namespacing part 1 David Howells
2017-09-05 13:29 ` [RFC PATCH 01/11] workqueue: Add a decrement-after-return and wake if 0 facility Tejun Heo
2017-09-05 14:50 ` David Howells
2017-09-06 14:51 ` Tejun Heo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=alpine.DEB.2.20.1710201359480.2908@nanos \
--to=tglx@linutronix.de \
--cc=dhowells@redhat.com \
--cc=linux-afs@lists.infradead.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®