Subject: Re: [patch 2/7] CAN: Add PF_CAN core module

From: Oliver Hartkopp <[email-masked]>
Date: Fri, 18 May 2007 11:19:01 +0200

Hi Urs, Hello Paul,

i assume Paul refers to the can_rx_delete_all() function that adds each 
receive list entry for rcu removal using the can_rx_delete RCU callback, 
right?

So the idea would be to create a second RCU callback - e.g. 
can_rx_delete_list() - that removes the complete list inside the RCU 
callback?!?
The list removal would therefore be processed inside this new 
can_rx_delete_list() in RCU context and not inside can_rx_delete_all().

@Paul: Was this your intention?

Best regards,
Oliver

Paul E. McKenney wrote:
> On Wed, May 16, 2007 at 04:51:02PM +0200, Urs Thuermann wrote:
>   
>> This patch adds the CAN core functionality but no protocols or drivers.
>> No protocol implementations are included here.  They come as separate
>> patches.  Protocol numbers are already in include/linux/can.h.
>>     
>
> Interesting!  One question called out below -- why do call_rcu() on each
> piece of the struct dev_rcv_lists, instead of doing call_rcu() on the
> whole thing and having the RCU callback free up the pieces?  Given that
> all the pieces are call_rcu()ed separately, there had better not be
> persistent pointers to the pieces, right?
>
> Doing it in one chunk would make the code a bit simpler and also reduce
> the RCU overhead a bit.
>
> Or am I missing something subtle here?
>
> 						Thanx, Paul
>
>   
>