From mboxrd@z Thu Jan 1 00:00:00 1970 From: zwu.kernel@gmail.com Subject: [PATCH v3 05/13] VFS hot tracking, rcu: introduce one rcu macro for list Date: Fri, 21 Jun 2013 20:17:14 +0800 Message-ID: <1371817042-8556-6-git-send-email-zwu.kernel@gmail.com> References: <1371817042-8556-1-git-send-email-zwu.kernel@gmail.com> Cc: viro@zeniv.linux.org.uk, sekharan@us.ibm.com, linuxram@us.ibm.com, david@fromorbit.com, chris.mason@fusionio.com, jbacik@fusionio.com, Zhi Yong Wu To: linux-fsdevel@vger.kernel.org Return-path: Received: from e31.co.us.ibm.com ([32.97.110.149]:53676 "EHLO e31.co.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1161077Ab3FUM2j (ORCPT ); Fri, 21 Jun 2013 08:28:39 -0400 Received: from /spool/local by e31.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 21 Jun 2013 06:18:37 -0600 Received: from d03relay03.boulder.ibm.com (d03relay03.boulder.ibm.com [9.17.195.228]) by d03dlp03.boulder.ibm.com (Postfix) with ESMTP id 1A92C19D803E for ; Fri, 21 Jun 2013 06:18:26 -0600 (MDT) Received: from d03av04.boulder.ibm.com (d03av04.boulder.ibm.com [9.17.195.170]) by d03relay03.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id r5LCIZik126668 for ; Fri, 21 Jun 2013 06:18:35 -0600 Received: from d03av04.boulder.ibm.com (loopback [127.0.0.1]) by d03av04.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id r5LCIWPS028769 for ; Fri, 21 Jun 2013 06:18:34 -0600 In-Reply-To: <1371817042-8556-1-git-send-email-zwu.kernel@gmail.com> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: From: Zhi Yong Wu This rcu macro for list will be used in seq_list rcu interfaces. Signed-off-by: Chandra Seetharaman Signed-off-by: Zhi Yong Wu --- include/linux/rculist.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/linux/rculist.h b/include/linux/rculist.h index f4b1001..380b9be 100644 --- a/include/linux/rculist.h +++ b/include/linux/rculist.h @@ -218,6 +218,11 @@ static inline void list_splice_init_rcu(struct list_head *list, at->prev = last; } +#define __list_for_each_rcu(pos, head) \ + for (pos = rcu_dereference(list_next_rcu(head)); \ + pos != head; \ + pos = rcu_dereference(list_next_rcu(pos))) + /** * list_entry_rcu - get the struct for this entry * @ptr: the &struct list_head pointer. -- 1.7.11.7