From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <56C49CCA.7090805@hpe.com> Date: Wed, 17 Feb 2016 11:16:10 -0500 From: Waiman Long MIME-Version: 1.0 To: Peter Zijlstra CC: Dave Chinner , Alexander Viro , Jan Kara , Jeff Layton , "J. Bruce Fields" , Tejun Heo , Christoph Lameter , , , Ingo Molnar , Andi Kleen , Dave Chinner , Scott J Norton , Douglas Hatch Subject: Re: [RFC PATCH 1/2] lib/percpu-list: Per-cpu list with associated per-cpu locks References: <1455672680-7153-1-git-send-email-Waiman.Long@hpe.com> <1455672680-7153-2-git-send-email-Waiman.Long@hpe.com> <20160217095318.GO14668@dastard> <20160217110040.GB6357@twins.programming.kicks-ass.net> <20160217110520.GN6375@twins.programming.kicks-ass.net> In-Reply-To: <20160217110520.GN6375@twins.programming.kicks-ass.net> Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: On 02/17/2016 06:05 AM, Peter Zijlstra wrote: > On Wed, Feb 17, 2016 at 12:00:40PM +0100, Peter Zijlstra wrote: >> On Wed, Feb 17, 2016 at 08:53:18PM +1100, Dave Chinner wrote: >>>> +/** >>>> + * for_all_percpu_list_entries - iterate over all the per-cpu list with locking > But the locking is 'pointless'. You only lock one per-cpu sublist at a > time, therefore the list can be modified concurrently anyhow. For each per-cpu list, there can be only 1 task allowed to make changes. If you are talking about all the per-cpu lists within the group, operations can happen in parallel. > So why not use RCU for the list iteration and avoid potentially large > lock hold times? > I know we can use RCU for singly linked list, but I don't think we can use that for doubly linked list as there is no easy way to make atomic changes to both prev and next pointers simultaneously unless you are taking about 16b cmpxchg which is only supported in some architecture. Cheers, Longman