public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] list_replace_rcu() in include/linux/list.h
@ 2004-09-17 10:19 Kaigai Kohei
  2004-09-17 10:44 ` Dipankar Sarma
  0 siblings, 1 reply; 3+ messages in thread
From: Kaigai Kohei @ 2004-09-17 10:19 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-kernel, kaigai, paulmck, dipankar

Hi Andrew.

* list_replace_rcu-2.6.9-rc2.patch
This attached patch adds list_replace_rcu() to include/linux/list.h
for atomic updating operations according to RCU-model.

void list_replace_rcu(struct list_head *old, struct list_head *new)

The 'old' element is detached from the linked list, and the 'new'
element is inserted to the same point of the linked list concurrently.

This patch is necessary for the performance improvement of SELinux.
See, http://lkml.org/lkml/2004/8/16/54
       (Subject: RCU issue with SELinux)
     http://lkml.org/lkml/2004/8/30/63
       (Subject: [PATCH]SELinux performance improvement by RCU)

Please apply.

Signed-off-by: KaiGai, Kohei <kaigai@ak.jp.nec.com>
--------
Kai Gai <kaigai@ak.jp.nec.com>


--- linux-2.6.9-rc2/include/linux/list.h	2004-09-13 14:32:48.000000000 +0900
+++ linux-2.6.9-rc2.rcu/include/linux/list.h	2004-09-16 14:53:39.000000000 +0900
@@ -194,8 +194,23 @@
 	__list_del(entry->prev, entry->next);
 	entry->prev = LIST_POISON2;
 }
 
+/*
+ * list_replace_rcu - replace old entry by new onw from list
+ * @old : the element to be replaced from the list.
+ * @new : the new element to insert to the list.
+ * 
+ * The old entry will be replaced to the new entry atomically.
+ */
+static inline void list_replace_rcu(struct list_head *old, struct list_head *new){
+	new->next = old->next;
+	new->prev = old->prev;
+	smp_wmb();
+	new->next->prev = new;
+	new->prev->next = new;
+}
+
 /**
  * list_del_init - deletes entry from list and reinitialize it.
  * @entry: the element to delete from the list.
  */

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] list_replace_rcu() in include/linux/list.h
  2004-09-17 10:19 [PATCH] list_replace_rcu() in include/linux/list.h Kaigai Kohei
@ 2004-09-17 10:44 ` Dipankar Sarma
  2004-09-17 15:07   ` Paul E. McKenney
  0 siblings, 1 reply; 3+ messages in thread
From: Dipankar Sarma @ 2004-09-17 10:44 UTC (permalink / raw)
  To: Kaigai Kohei; +Cc: Andrew Morton, linux-kernel, paulmck

On Fri, Sep 17, 2004 at 07:19:42PM +0900, Kaigai Kohei wrote:
> Hi Andrew.
> 
> +/*
> + * list_replace_rcu - replace old entry by new onw from list

Apart from the spelling mistake in this line, it looks good. In fact,
the whole selinux scalability work is really important and I hope will
go to mainline soon.

Thanks
Dipankar

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] list_replace_rcu() in include/linux/list.h
  2004-09-17 10:44 ` Dipankar Sarma
@ 2004-09-17 15:07   ` Paul E. McKenney
  0 siblings, 0 replies; 3+ messages in thread
From: Paul E. McKenney @ 2004-09-17 15:07 UTC (permalink / raw)
  To: Dipankar Sarma; +Cc: Kaigai Kohei, Andrew Morton, linux-kernel

On Fri, Sep 17, 2004 at 04:14:10PM +0530, Dipankar Sarma wrote:
> On Fri, Sep 17, 2004 at 07:19:42PM +0900, Kaigai Kohei wrote:
> > Hi Andrew.
> > 
> > +/*
> > + * list_replace_rcu - replace old entry by new onw from list
> 
> Apart from the spelling mistake in this line, it looks good. In fact,
> the whole selinux scalability work is really important and I hope will
> go to mainline soon.

What he said!  ;-)

The patch looks good to me, and the improved selinux scalability is
quite valuable.

							Thanx, Paul

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2004-09-17 15:49 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-09-17 10:19 [PATCH] list_replace_rcu() in include/linux/list.h Kaigai Kohei
2004-09-17 10:44 ` Dipankar Sarma
2004-09-17 15:07   ` Paul E. McKenney

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox