From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Cc: Andrew Morton <akpm@linux-foundation.org>, linux-kernel@vger.kernel.org
Subject: Re: [PATCH for 2.6.26] Markers Use RCU sched
Date: Wed, 28 May 2008 21:12:07 -0700 [thread overview]
Message-ID: <20080529041207.GC8920@linux.vnet.ibm.com> (raw)
In-Reply-To: <20080527130457.GA6814@Krystal>
On Tue, May 27, 2008 at 09:04:57AM -0400, Mathieu Desnoyers wrote:
> rcu_barrier_sched and call_rcu_sched has been introduced in 2.6.26 for the
> Markers. Change the marker code to use them.
>
> It can be seen as a fix since the marker code was using an ugly,
> temporary, #ifdef hack to work around CONFIG_PREEMPT_RCU.
Looks good!
Reviewed-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
> Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
> CC: Paul McKenney <paulmck@us.ibm.com>
> CC: Andrew Morton <akpm@linux-foundation.org>
> ---
> kernel/marker.c | 25 ++++++++-----------------
> 1 file changed, 8 insertions(+), 17 deletions(-)
>
> Index: linux-2.6-lttng/kernel/marker.c
> ===================================================================
> --- linux-2.6-lttng.orig/kernel/marker.c 2008-05-27 05:32:09.000000000 -0400
> +++ linux-2.6-lttng/kernel/marker.c 2008-05-27 05:34:22.000000000 -0400
> @@ -443,7 +443,7 @@
> hlist_del(&e->hlist);
> /* Make sure the call_rcu has been executed */
> if (e->rcu_pending)
> - rcu_barrier();
> + rcu_barrier_sched();
> kfree(e);
> return 0;
> }
> @@ -478,7 +478,7 @@
> hlist_del(&(*entry)->hlist);
> /* Make sure the call_rcu has been executed */
> if ((*entry)->rcu_pending)
> - rcu_barrier();
> + rcu_barrier_sched();
> kfree(*entry);
> *entry = e;
> trace_mark(core_marker_format, "name %s format %s",
> @@ -657,7 +657,7 @@
> * make sure it's executed now.
> */
> if (entry->rcu_pending)
> - rcu_barrier();
> + rcu_barrier_sched();
> old = marker_entry_add_probe(entry, probe, probe_private);
> if (IS_ERR(old)) {
> ret = PTR_ERR(old);
> @@ -672,10 +672,7 @@
> entry->rcu_pending = 1;
> /* write rcu_pending before calling the RCU callback */
> smp_wmb();
> -#ifdef CONFIG_PREEMPT_RCU
> - synchronize_sched(); /* Until we have the call_rcu_sched() */
> -#endif
> - call_rcu(&entry->rcu, free_old_closure);
> + call_rcu_sched(&entry->rcu, free_old_closure);
> end:
> mutex_unlock(&markers_mutex);
> return ret;
> @@ -706,7 +703,7 @@
> if (!entry)
> goto end;
> if (entry->rcu_pending)
> - rcu_barrier();
> + rcu_barrier_sched();
> old = marker_entry_remove_probe(entry, probe, probe_private);
> mutex_unlock(&markers_mutex);
> marker_update_probes(); /* may update entry */
> @@ -718,10 +715,7 @@
> entry->rcu_pending = 1;
> /* write rcu_pending before calling the RCU callback */
> smp_wmb();
> -#ifdef CONFIG_PREEMPT_RCU
> - synchronize_sched(); /* Until we have the call_rcu_sched() */
> -#endif
> - call_rcu(&entry->rcu, free_old_closure);
> + call_rcu_sched(&entry->rcu, free_old_closure);
> remove_marker(name); /* Ignore busy error message */
> ret = 0;
> end:
> @@ -788,7 +782,7 @@
> goto end;
> }
> if (entry->rcu_pending)
> - rcu_barrier();
> + rcu_barrier_sched();
> old = marker_entry_remove_probe(entry, NULL, probe_private);
> mutex_unlock(&markers_mutex);
> marker_update_probes(); /* may update entry */
> @@ -799,10 +793,7 @@
> entry->rcu_pending = 1;
> /* write rcu_pending before calling the RCU callback */
> smp_wmb();
> -#ifdef CONFIG_PREEMPT_RCU
> - synchronize_sched(); /* Until we have the call_rcu_sched() */
> -#endif
> - call_rcu(&entry->rcu, free_old_closure);
> + call_rcu_sched(&entry->rcu, free_old_closure);
> remove_marker(entry->name); /* Ignore busy error message */
> end:
> mutex_unlock(&markers_mutex);
>
> --
> Mathieu Desnoyers
> OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
prev parent reply other threads:[~2008-05-29 4:12 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-27 13:04 [PATCH for 2.6.26] Markers Use RCU sched Mathieu Desnoyers
2008-05-29 4:12 ` Paul E. McKenney [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080529041207.GC8920@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@polymtl.ca \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.