From patchwork Fri Apr 26 01:45:07 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Horman X-Patchwork-Id: 239615 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 509132C00C7 for ; Fri, 26 Apr 2013 11:46:28 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759075Ab3DZBp3 (ORCPT ); Thu, 25 Apr 2013 21:45:29 -0400 Received: from kirsty.vergenet.net ([202.4.237.240]:47729 "EHLO kirsty.vergenet.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757061Ab3DZBp2 (ORCPT ); Thu, 25 Apr 2013 21:45:28 -0400 Received: from ayumi.akashicho.tokyo.vergenet.net (p5212-ipbfp1903kobeminato.hyogo.ocn.ne.jp [114.172.132.212]) by kirsty.vergenet.net (Postfix) with ESMTP id BE979266CF1; Fri, 26 Apr 2013 11:45:26 +1000 (EST) Received: by ayumi.akashicho.tokyo.vergenet.net (Postfix, from userid 7100) id 5BDF6EDE087; Fri, 26 Apr 2013 10:45:25 +0900 (JST) From: Simon Horman To: Eric Dumazet , Julian Anastasov , Ingo Molnar , Peter Zijlstra Cc: lvs-devel@vger.kernel.org, netdev@vger.kernel.org, netfilter-devel@vger.kernel.org, linux-kernel@vger.kernel.org, Pablo Neira Ayuso , Dipankar Sarma , "Paul E. McKenney" , Simon Horman Subject: [PATCH 1/2] sched: Add cond_resched_rcu_lock() helper Date: Fri, 26 Apr 2013 10:45:07 +0900 Message-Id: <1366940708-10180-2-git-send-email-horms@verge.net.au> X-Mailer: git-send-email 1.8.2.1 In-Reply-To: <1366940708-10180-1-git-send-email-horms@verge.net.au> References: <1366940708-10180-1-git-send-email-horms@verge.net.au> Sender: netfilter-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netfilter-devel@vger.kernel.org This is intended for use in loops which read data protected by RCU and may have a large number of iterations. Such an example is dumping the list of connections known to IPVS: ip_vs_conn_array() and ip_vs_conn_seq_next(). As suggested by Eric Dumazet. Cc: Eric Dumazet Cc: Julian Anastasov Signed-off-by: Simon Horman Acked-by: Ingo Molnar --- include/linux/sched.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/include/linux/sched.h b/include/linux/sched.h index e692a02..7eec4c7 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -2787,3 +2787,12 @@ static inline unsigned long rlimit_max(unsigned int limit) } #endif + +static void inline cond_resched_rcu_lock(void) +{ + if (need_resched()) { + rcu_read_unlock(); + cond_resched(); + rcu_read_lock(); + } +}