login
Login
/
Register
Search
Search this site:
Forums
News
Blogs
Features
Site
Home
»
Mailing list archives
»
linux-kernel
»
2008
»
October
»
1
Re: [PATCH] ring_buffer: allocate buffer page pointer
view
thread
Previous message: [
thread
] [
date
] [
author
]
Next message: [
thread
] [
date
] [
author
]
[view in full thread]
From: Mathieu Desnoyers
Subject:
Re: [PATCH] ring_buffer: allocate buffer page pointer
Date: Wednesday, October 1, 2008 - 11:21 am
* Steven Rostedt (
rostedt@goodmis.org
) wrote:
quoted text
> > The current method of overlaying the page frame as the buffer page pointer > can be very dangerous and limits our ability to do other things with > a page from the buffer, like send it off to disk. > > This patch allocates the buffer_page instead of overlaying the page's > page frame. The use of the buffer_page has hardly changed due to this. > > Signed-off-by: Steven Rostedt <srostedt@redhat.com> > --- > kernel/trace/ring_buffer.c | 54 ++++++++++++++++++++++++++------------------- > 1 file changed, 32 insertions(+), 22 deletions(-) > > Index: linux-tip.git/kernel/trace/ring_buffer.c > =================================================================== > --- linux-tip.git.orig/kernel/trace/ring_buffer.c 2008-10-01 09:37:23.000000000 -0400 > +++ linux-tip.git/kernel/trace/ring_buffer.c 2008-10-01 11:03:16.000000000 -0400 > @@ -115,16 +115,10 @@ void *ring_buffer_event_data(struct ring > * Thanks to Peter Zijlstra for suggesting this idea. > */ > struct buffer_page { > - union { > - struct { > - unsigned long flags; /* mandatory */ > - atomic_t _count; /* mandatory */ > - u64 time_stamp; /* page time stamp */ > - unsigned size; /* size of page data */ > - struct list_head list; /* list of free pages */ > - }; > - struct page page; > - }; > + u64 time_stamp; /* page time stamp */ > + unsigned size; /* size of page data */ > + struct list_head list; /* list of free pages */ > + void *page; /* Actual data page */ > }; > > /* > @@ -133,9 +127,9 @@ struct buffer_page { > */ > static inline void free_buffer_page(struct buffer_page *bpage) > { > - reset_page_mapcount(&bpage->page); > - bpage->page.mapping = NULL; > - __free_page(&bpage->page); > + if (bpage->page) > + __free_page(bpage->page); > + kfree(bpage); > } > > /* > @@ -237,11 +231,16 @@ static int rb_allocate_pages(struct ring > unsigned i; > > for (i = 0; i < nr_pages; i++) { > + page = kzalloc_node(ALIGN(sizeof(*page), cache_line_size()), > + GFP_KERNEL, cpu_to_node(cpu)); > + if (!page) > + goto free_pages; > + list_add(&page->list, &pages); > + > addr = __get_free_page(GFP_KERNEL);
You could probably use alloc_pages_node instead here... Mathieu
quoted text
> if (!addr) > goto free_pages; > - page = (struct buffer_page *)virt_to_page(addr); > - list_add(&page->list, &pages); > + page->page = (void *)addr; > } > > list_splice(&pages, head); > @@ -262,6 +261,7 @@ static struct ring_buffer_per_cpu * > rb_allocate_cpu_buffer(struct ring_buffer *buffer, int cpu) > { > struct ring_buffer_per_cpu *cpu_buffer; > + struct buffer_page *page; > unsigned long addr; > int ret; > > @@ -275,10 +275,17 @@ rb_allocate_cpu_buffer(struct ring_buffe > spin_lock_init(&cpu_buffer->lock); > INIT_LIST_HEAD(&cpu_buffer->pages); > > + page = kzalloc_node(ALIGN(sizeof(*page), cache_line_size()), > + GFP_KERNEL, cpu_to_node(cpu)); > + if (!page) > + goto fail_free_buffer; > + > + cpu_buffer->reader_page = page; > addr = __get_free_page(GFP_KERNEL); > if (!addr) > - goto fail_free_buffer; > - cpu_buffer->reader_page = (struct buffer_page *)virt_to_page(addr); > + goto fail_free_reader; > + page->page = (void *)addr; > + > INIT_LIST_HEAD(&cpu_buffer->reader_page->list); > cpu_buffer->reader_page->size = 0; > > @@ -523,11 +530,16 @@ int ring_buffer_resize(struct ring_buffe > > for_each_buffer_cpu(buffer, cpu) { > for (i = 0; i < new_pages; i++) { > + page = kzalloc_node(ALIGN(sizeof(*page), > + cache_line_size()), > + GFP_KERNEL, cpu_to_node(cpu)); > + if (!page) > + goto free_pages; > + list_add(&page->list, &pages); > addr = __get_free_page(GFP_KERNEL); > if (!addr) > goto free_pages; > - page = (struct buffer_page *)virt_to_page(addr); > - list_add(&page->list, &pages); > + page->page = (void *)addr; > } > } > > @@ -567,9 +579,7 @@ static inline int rb_null_event(struct r > > static inline void *rb_page_index(struct buffer_page *page, unsigned index) > { > - void *addr = page_address(&page->page); > - > - return addr + index; > + return page->page + index; > } > > static inline struct ring_buffer_event * > >
-- Mathieu Desnoyers OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68 --
unsubscribe notice
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to
majordomo@vger.kernel.org
More majordomo info at
http://vger.kernel.org/majordomo-info.html
Please read the FAQ at
http://www.tux.org/lkml/
Previous message: [
thread
] [
date
] [
author
]
Next message: [
thread
] [
date
] [
author
]
Messages in current thread:
[RFC PATCH 1/2 v3] Unified trace buffer
, Steven Rostedt
, (Thu Sep 25, 11:51 am)
[RFC PATCH v4] Unified trace buffer
, Steven Rostedt
, (Thu Sep 25, 6:02 pm)
Re: [RFC PATCH v4] Unified trace buffer
, Masami Hiramatsu
, (Thu Sep 25, 6:52 pm)
Re: [RFC PATCH v4] Unified trace buffer
, Steven Rostedt
, (Thu Sep 25, 7:11 pm)
Re: [RFC PATCH v4] Unified trace buffer
, Masami Hiramatsu
, (Thu Sep 25, 7:47 pm)
Re: [RFC PATCH v4] Unified trace buffer
, Mathieu Desnoyers
, (Thu Sep 25, 8:20 pm)
Re: [RFC PATCH v4] Unified trace buffer
, Peter Zijlstra
, (Fri Sep 26, 12:18 am)
Re: [RFC PATCH v4] Unified trace buffer
, Steven Rostedt
, (Fri Sep 26, 3:45 am)
Re: [RFC PATCH v4] Unified trace buffer
, Steven Rostedt
, (Fri Sep 26, 3:47 am)
Re: [RFC PATCH v4] Unified trace buffer
, Peter Zijlstra
, (Fri Sep 26, 4:00 am)
Re: [RFC PATCH v4] Unified trace buffer
, Mathieu Desnoyers
, (Fri Sep 26, 9:04 am)
Re: [RFC PATCH v4] Unified trace buffer
, Masami Hiramatsu
, (Fri Sep 26, 9:57 am)
[PATCH v5] Unified trace buffer
, Steven Rostedt
, (Fri Sep 26, 10:11 am)
Re: [RFC PATCH v4] Unified trace buffer
, Steven Rostedt
, (Fri Sep 26, 10:14 am)
Re: [PATCH v5] Unified trace buffer
, Arnaldo Carvalho de Melo
, (Fri Sep 26, 10:31 am)
Re: [PATCH v5] Unified trace buffer
, Linus Torvalds
, (Fri Sep 26, 10:37 am)
Re: [PATCH v5] Unified trace buffer
, Steven Rostedt
, (Fri Sep 26, 10:46 am)
[PATCH v6] Unified trace buffer
, Steven Rostedt
, (Fri Sep 26, 11:05 am)
Re: [PATCH v6] Unified trace buffer
, Richard Holden
, (Fri Sep 26, 11:30 am)
Re: [PATCH v6] Unified trace buffer
, Steven Rostedt
, (Fri Sep 26, 11:39 am)
Re: [PATCH v6] Unified trace buffer
, Peter Zijlstra
, (Fri Sep 26, 11:59 am)
Re: [PATCH v6] Unified trace buffer
, Peter Zijlstra
, (Fri Sep 26, 12:14 pm)
Re: [PATCH v6] Unified trace buffer
, Peter Zijlstra
, (Fri Sep 26, 12:17 pm)
Re: [PATCH v6] Unified trace buffer
, Martin Bligh
, (Fri Sep 26, 12:46 pm)
Re: [PATCH v6] Unified trace buffer
, Steven Rostedt
, (Fri Sep 26, 12:52 pm)
Re: [PATCH v6] Unified trace buffer
, Peter Zijlstra
, (Fri Sep 26, 1:08 pm)
[PATCH v7] Unified trace buffer
, Steven Rostedt
, (Fri Sep 26, 2:13 pm)
Re: [PATCH v6] Unified trace buffer
, Masami Hiramatsu
, (Fri Sep 26, 2:14 pm)
Re: [PATCH v6] Unified trace buffer
, Steven Rostedt
, (Fri Sep 26, 2:26 pm)
Re: [PATCH v6] Unified trace buffer
, Steven Rostedt
, (Fri Sep 26, 2:37 pm)
Re: [PATCH v6] Unified trace buffer
, Mike Travis
, (Fri Sep 26, 3:28 pm)
Re: [PATCH v6] Unified trace buffer
, Arnaldo Carvalho de Melo
, (Fri Sep 26, 3:31 pm)
Re: [PATCH v6] Unified trace buffer
, Arjan van de Ven
, (Fri Sep 26, 4:16 pm)
Re: [PATCH v6] Unified trace buffer
, Steven Rostedt
, (Fri Sep 26, 4:56 pm)
Re: [PATCH v6] Unified trace buffer
, Steven Rostedt
, (Fri Sep 26, 4:58 pm)
Re: [PATCH v6] Unified trace buffer
, Mike Travis
, (Fri Sep 26, 5:05 pm)
Re: [PATCH v6] Unified trace buffer
, Linus Torvalds
, (Fri Sep 26, 5:13 pm)
Re: [PATCH v6] Unified trace buffer
, Steven Rostedt
, (Fri Sep 26, 5:18 pm)
Re: [PATCH v6] Unified trace buffer
, Steven Rostedt
, (Fri Sep 26, 5:23 pm)
Re: [PATCH v6] Unified trace buffer
, Steven Rostedt
, (Fri Sep 26, 5:28 pm)
Re: [PATCH v6] Unified trace buffer
, Mike Travis
, (Fri Sep 26, 5:46 pm)
Re: [PATCH v6] Unified trace buffer
, Steven Rostedt
, (Fri Sep 26, 5:52 pm)
[PATCH v8] Unified trace buffer
, Steven Rostedt
, (Fri Sep 26, 7:02 pm)
[PATCH v9] Unified trace buffer
, Steven Rostedt
, (Fri Sep 26, 11:06 pm)
Re: [PATCH v5] Unified trace buffer
, Ingo Molnar
, (Sat Sep 27, 10:02 am)
Re: [PATCH v5] Unified trace buffer
, Steven Rostedt
, (Sat Sep 27, 10:18 am)
Re: [PATCH v9] Unified trace buffer
, Ingo Molnar
, (Sat Sep 27, 11:39 am)
Re: [PATCH v9] Unified trace buffer
, Steven Rostedt
, (Sat Sep 27, 12:24 pm)
Re: [PATCH v9] Unified trace buffer
, Ingo Molnar
, (Sat Sep 27, 12:41 pm)
Re: [PATCH v9] Unified trace buffer
, Steven Rostedt
, (Sat Sep 27, 12:54 pm)
Re: [PATCH v9] Unified trace buffer
, Ingo Molnar
, (Sat Sep 27, 1:00 pm)
Re: [PATCH v9] Unified trace buffer
, Martin Bligh
, (Sat Sep 27, 1:07 pm)
Re: [PATCH v9] Unified trace buffer
, Ingo Molnar
, (Sat Sep 27, 1:34 pm)
Re: [PATCH v9] Unified trace buffer
, Steven Rostedt
, (Mon Sep 29, 8:05 am)
[PATCH v10 Golden] Unified trace buffer
, Steven Rostedt
, (Mon Sep 29, 9:10 am)
Re: [PATCH v10 Golden] Unified trace buffer
, Steven Rostedt
, (Mon Sep 29, 9:11 am)
Re: [PATCH v10 Golden] Unified trace buffer
, Mathieu Desnoyers
, (Mon Sep 29, 4:35 pm)
Re: [PATCH v10 Golden] Unified trace buffer
, Steven Rostedt
, (Mon Sep 29, 5:01 pm)
Re: [PATCH v10 Golden] Unified trace buffer
, Mathieu Desnoyers
, (Mon Sep 29, 5:03 pm)
Re: [PATCH v10 Golden] Unified trace buffer
, Steven Rostedt
, (Mon Sep 29, 5:12 pm)
Re: [PATCH v10 Golden] Unified trace buffer
, Mathieu Desnoyers
, (Mon Sep 29, 8:46 pm)
Re: [PATCH v10 Golden] Unified trace buffer
, Steven Rostedt
, (Mon Sep 29, 9:00 pm)
Re: [PATCH v10 Golden] Unified trace buffer
, Jonathan Corbet
, (Tue Sep 30, 8:20 am)
Re: [PATCH v10 Golden] Unified trace buffer
, Peter Zijlstra
, (Tue Sep 30, 8:54 am)
Re: [PATCH v10 Golden] Unified trace buffer
, Linus Torvalds
, (Tue Sep 30, 9:38 am)
Re: [PATCH v10 Golden] Unified trace buffer
, Steven Rostedt
, (Tue Sep 30, 9:48 am)
Re: [PATCH v10 Golden] Unified trace buffer
, Peter Zijlstra
, (Tue Sep 30, 10:00 am)
Re: [PATCH v10 Golden] Unified trace buffer
, Linus Torvalds
, (Tue Sep 30, 10:01 am)
Re: [PATCH v10 Golden] Unified trace buffer
, Steven Rostedt
, (Tue Sep 30, 10:41 am)
Re: [PATCH v10 Golden] Unified trace buffer
, Peter Zijlstra
, (Tue Sep 30, 10:49 am)
Re: [PATCH v10 Golden] Unified trace buffer
, Steven Rostedt
, (Tue Sep 30, 10:56 am)
Re: [PATCH v10 Golden] Unified trace buffer
, Steven Rostedt
, (Tue Sep 30, 11:02 am)
[PATCH] ring_buffer: allocate buffer page pointer
, Steven Rostedt
, (Wed Oct 1, 8:14 am)
Re: [PATCH] ring_buffer: allocate buffer page pointer
, Mathieu Desnoyers
, (Wed Oct 1, 10:36 am)
Re: [PATCH] ring_buffer: allocate buffer page pointer
, Steven Rostedt
, (Wed Oct 1, 10:49 am)
Re: [PATCH] ring_buffer: allocate buffer page pointer
, Mathieu Desnoyers
, (Wed Oct 1, 11:21 am)
Re: [PATCH] ring_buffer: allocate buffer page pointer
, Ingo Molnar
, (Thu Oct 2, 1:50 am)
Re: [PATCH] ring_buffer: allocate buffer page pointer
, Ingo Molnar
, (Thu Oct 2, 1:51 am)
[PATCH] ring-buffer: fix build error
, Ingo Molnar
, (Thu Oct 2, 2:05 am)
Re: [PATCH] ring_buffer: allocate buffer page pointer
, Andrew Morton
, (Thu Oct 2, 2:06 am)
[boot crash] Re: [PATCH] ring-buffer: fix build error
, Ingo Molnar
, (Thu Oct 2, 2:38 am)
Re: [PATCH] ring_buffer: allocate buffer page pointer
, Ingo Molnar
, (Thu Oct 2, 2:41 am)
Re: [PATCH] ring_buffer: allocate buffer page pointer
, Steven Rostedt
, (Thu Oct 2, 6:06 am)
Re: [boot crash] Re: [PATCH] ring-buffer: fix build error
, Steven Rostedt
, (Thu Oct 2, 6:16 am)
Re: [boot crash] Re: [PATCH] ring-buffer: fix build error
, Steven Rostedt
, (Thu Oct 2, 6:17 am)
Re: [boot crash] Re: [PATCH] ring-buffer: fix build error
, Ingo Molnar
, (Thu Oct 2, 8:50 am)
Re: [boot crash] Re: [PATCH] ring-buffer: fix build error
, Steven Rostedt
, (Thu Oct 2, 11:27 am)
Re: [boot crash] Re: [PATCH] ring-buffer: fix build error
, Ingo Molnar
, (Thu Oct 2, 11:55 am)
[PATCH] ring_buffer: map to cpu not page
, Steven Rostedt
, (Thu Oct 2, 4:18 pm)
Re: [PATCH] ring_buffer: map to cpu not page
, Steven Rostedt
, (Thu Oct 2, 4:36 pm)
[PATCH] x86 Topology cpu_to_node parameter check
, Mathieu Desnoyers
, (Thu Oct 2, 9:56 pm)
Re: [PATCH] x86 Topology cpu_to_node parameter check
, Steven Rostedt
, (Thu Oct 2, 10:20 pm)
Re: [PATCH] ring_buffer: map to cpu not page
, Ingo Molnar
, (Fri Oct 3, 12:27 am)
Re: [PATCH] x86 Topology cpu_to_node parameter check
, Mathieu Desnoyers
, (Fri Oct 3, 8:56 am)
Re: [PATCH] x86 Topology cpu_to_node parameter check
, Steven Rostedt
, (Fri Oct 3, 9:26 am)
Re: [PATCH] x86 Topology cpu_to_node parameter check
, Mathieu Desnoyers
, (Fri Oct 3, 10:21 am)
Re: [PATCH] x86 Topology cpu_to_node parameter check
, Steven Rostedt
, (Fri Oct 3, 10:54 am)
[PATCH] topology.h define mess fix
, Mathieu Desnoyers
, (Fri Oct 3, 11:53 am)
RE: [PATCH] topology.h define mess fix
, Luck, Tony
, (Fri Oct 3, 1:14 pm)
[PATCH] topology.h define mess fix v2
, Mathieu Desnoyers
, (Fri Oct 3, 3:47 pm)
Navigation
Mailing list archives
Recent posts
Popular discussions
linux-kernel
:
monstr
[PATCH 46/56] microblaze_v2: headers files entry.h current.h mman.h registers.h se...
Jan Engelhardt
Re: Linux Security *Module* Framework (Was: LSM conversion to static interface)
Dave Jones
Re: Why do so many machines need "noapic"?
Michael Moore
Re: underage models, pre teen models, lolita porn, young preteens, little lolitas
Lars-Peter Clausen
[PATCH v4] MMC: Add JZ4740 mmc driver
git
:
Andy Parkins
git-fetch fails with error code 128
Eli Zaretskii
Re: Switching from CVS to GIT
Jan Harkes
Re: git-svn and huge data and modifying the git-svn-HEAD branch directly
Dan Chokola
Re: how do you "force a pull"?
Johan Herland
Re: Comment on weak refs
git-commits-head
:
Linux Kernel Mailing List
No need to do lock_super() for exclusion in generic_shutdown_super()
Linux Kernel Mailing List
x86, msr: Export the register-setting MSR functions via /dev/*/msr
Linux Kernel Mailing List
MIPS: SMTC: Fix lockup in smtc_distribute_timer
Linux Kernel Mailing List
Input: gpio-keys - add support for disabling gpios through sysfs
Linux Kernel Mailing List
sh-sci: update receive error handling for muxed irqs
linux-netdev
:
Patrick McHardy
Re: no reassembly for outgoing packets on RAW socket
Ilpo Järvinen
net-next/unix: BUG: using smp_processor_id() in preemptible
Herbert Xu
Re: [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock().
Evgeniy Polyakov
Re: virt-manager broken by bind(0) in net-next.
Eric Dumazet
Re: [PATCH] conntrack: use SLAB_DESTROY_BY_RCU for nf_conn structs
openbsd-misc
:
elitdostlar
Seks partneri arayan bayanlar bu adreste - 8878xs706x6438
Marcus Andree
Re: This is what Linus Torvalds calls openBSD crowd
Lars D. Noodén
Re: sshd.config and AllowUsers
Henning Brauer
Re: Sun Blade 1000?
Laurens Vets
Re: OT: opinions on IDS / IPS solutions
Colocation donated by:
Syndicate