Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754252AbaDYS6V (ORCPT ); Fri, 25 Apr 2014 14:58:21 -0400 Received: from mx1.redhat.com ([209.132.183.28]:57229 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751346AbaDYS6U (ORCPT ); Fri, 25 Apr 2014 14:58:20 -0400 From: Denys Vlasenko To: linux-kernel@vger.kernel.org Cc: Denys Vlasenko , Frederic Weisbecker , Hidetoshi Seto , Fernando Luis Vazquez Cao , Tetsuo Handa , Thomas Gleixner , Ingo Molnar , Peter Zijlstra , Andrew Morton , Arjan van de Ven , Oleg Nesterov Subject: [PATCH 1/2] nohz: move NOHZ code bits out of io_schedule{,_timeout} into a helper Date: Fri, 25 Apr 2014 20:57:29 +0200 Message-Id: <1398452250-6047-1-git-send-email-dvlasenk@redhat.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Signed-off-by: Denys Vlasenko Cc: Frederic Weisbecker Cc: Hidetoshi Seto Cc: Fernando Luis Vazquez Cao Cc: Tetsuo Handa Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Peter Zijlstra Cc: Andrew Morton Cc: Arjan van de Ven Cc: Oleg Nesterov --- kernel/sched/core.c | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index ffea757..3137980 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -4208,6 +4208,21 @@ EXPORT_SYMBOL_GPL(yield_to); * This task is about to go to sleep on IO. Increment rq->nr_iowait so * that process accounting knows that this is a task in IO wait state. */ +#ifdef CONFIG_NO_HZ_COMMON +static __sched void io_wait_end(struct rq *rq) +{ + if (atomic_dec_and_test(&rq->nr_iowait)) { + if (raw_smp_processor_id() != cpu_of(rq)) + tick_nohz_iowait_to_idle(cpu_of(rq)); + } +} +#else +static inline void io_wait_end(struct rq *rq) +{ + atomic_dec(&rq->nr_iowait); +} +#endif + void __sched io_schedule(void) { struct rq *rq = raw_rq(); @@ -4218,14 +4233,7 @@ void __sched io_schedule(void) current->in_iowait = 1; schedule(); current->in_iowait = 0; -#ifdef CONFIG_NO_HZ_COMMON - if (atomic_dec_and_test(&rq->nr_iowait)) { - if (raw_smp_processor_id() != cpu_of(rq)) - tick_nohz_iowait_to_idle(cpu_of(rq)); - } -#else - atomic_dec(&rq->nr_iowait); -#endif + io_wait_end(rq); delayacct_blkio_end(); } EXPORT_SYMBOL(io_schedule); @@ -4241,14 +4249,7 @@ long __sched io_schedule_timeout(long timeout) current->in_iowait = 1; ret = schedule_timeout(timeout); current->in_iowait = 0; -#ifdef CONFIG_NO_HZ_COMMON - if (atomic_dec_and_test(&rq->nr_iowait)) { - if (raw_smp_processor_id() != cpu_of(rq)) - tick_nohz_iowait_to_idle(cpu_of(rq)); - } -#else - atomic_dec(&rq->nr_iowait); -#endif + io_wait_end(rq); delayacct_blkio_end(); return ret; } -- 1.8.1.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/