aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Rostedt <srostedt@redhat.com>2009-09-03 15:33:41 -0400
committerSteven Rostedt <rostedt@goodmis.org>2009-09-04 11:36:19 -0400
commitdc892f7339af2d125478b800edb9081d6149665b (patch)
tree3377439556b600c7bd3d53cbc0a893dd75bed634
parent7e9391cfedce34eb9786bfa69d7d545dc93ef930 (diff)
ring-buffer: remove ring_buffer_event_discard
The function ring_buffer_event_discard can be used on any item in the ring buffer, even after the item was committed. This function provides no safety nets and is very race prone. An item may be safely removed from the ring buffer before it is committed with the ring_buffer_discard_commit. Since there are currently no users of this function, and because this function is racey and error prone, this patch removes it altogether. Note, removing this function also allows the counters to ignore all discarded events (patches will follow). Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r--include/linux/ring_buffer.h14
-rw-r--r--kernel/trace/ring_buffer.c27
2 files changed, 6 insertions, 35 deletions
diff --git a/include/linux/ring_buffer.h b/include/linux/ring_buffer.h
index 7fca71693ae7..e061b4ecdc3a 100644
--- a/include/linux/ring_buffer.h
+++ b/include/linux/ring_buffer.h
@@ -75,20 +75,6 @@ ring_buffer_event_time_delta(struct ring_buffer_event *event)
75} 75}
76 76
77/* 77/*
78 * ring_buffer_event_discard can discard any event in the ring buffer.
79 * it is up to the caller to protect against a reader from
80 * consuming it or a writer from wrapping and replacing it.
81 *
82 * No external protection is needed if this is called before
83 * the event is commited. But in that case it would be better to
84 * use ring_buffer_discard_commit.
85 *
86 * Note, if an event that has not been committed is discarded
87 * with ring_buffer_event_discard, it must still be committed.
88 */
89void ring_buffer_event_discard(struct ring_buffer_event *event);
90
91/*
92 * ring_buffer_discard_commit will remove an event that has not 78 * ring_buffer_discard_commit will remove an event that has not
93 * ben committed yet. If this is used, then ring_buffer_unlock_commit 79 * ben committed yet. If this is used, then ring_buffer_unlock_commit
94 * must not be called on the discarded event. This function 80 * must not be called on the discarded event. This function
diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
index 9d939e7ca924..092fe0c8fdae 100644
--- a/kernel/trace/ring_buffer.c
+++ b/kernel/trace/ring_buffer.c
@@ -2328,31 +2328,16 @@ static inline void rb_event_discard(struct ring_buffer_event *event)
2328} 2328}
2329 2329
2330/** 2330/**
2331 * ring_buffer_event_discard - discard any event in the ring buffer
2332 * @event: the event to discard
2333 *
2334 * Sometimes a event that is in the ring buffer needs to be ignored.
2335 * This function lets the user discard an event in the ring buffer
2336 * and then that event will not be read later.
2337 *
2338 * Note, it is up to the user to be careful with this, and protect
2339 * against races. If the user discards an event that has been consumed
2340 * it is possible that it could corrupt the ring buffer.
2341 */
2342void ring_buffer_event_discard(struct ring_buffer_event *event)
2343{
2344 rb_event_discard(event);
2345}
2346EXPORT_SYMBOL_GPL(ring_buffer_event_discard);
2347
2348/**
2349 * ring_buffer_commit_discard - discard an event that has not been committed 2331 * ring_buffer_commit_discard - discard an event that has not been committed
2350 * @buffer: the ring buffer 2332 * @buffer: the ring buffer
2351 * @event: non committed event to discard 2333 * @event: non committed event to discard
2352 * 2334 *
2353 * This is similar to ring_buffer_event_discard but must only be 2335 * Sometimes an event that is in the ring buffer needs to be ignored.
2354 * performed on an event that has not been committed yet. The difference 2336 * This function lets the user discard an event in the ring buffer
2355 * is that this will also try to free the event from the ring buffer 2337 * and then that event will not be read later.
2338 *
2339 * This function only works if it is called before the the item has been
2340 * committed. It will try to free the event from the ring buffer
2356 * if another event has not been added behind it. 2341 * if another event has not been added behind it.
2357 * 2342 *
2358 * If another event has been added behind it, it will set the event 2343 * If another event has been added behind it, it will set the event