Thread (14 messages) 14 messages, 6 authors, 2012-10-10

Re: btrfs send/receive review by vfs folks

From: Martin Steigerwald <hidden>
Date: 2012-10-07 12:59:42

Am Sonntag, 7. Oktober 2012 schrieb Alex Lyakas:
On Sun, Oct 7, 2012 at 12:53 PM, Martin Steigerwald 
[off-list ref] wrote:
quoted
Am Sonntag, 7. Oktober 2012 schrieb Alex Lyakas:
[…]
quoted
quoted
On Sat, Oct 6, 2012 at 11:40 AM, Martin Steigerwald
[off-list ref] wrote:
quoted
quoted
Am Donnerstag, 4. Oktober 2012 schrieb Alex Lyakas:
quoted
Hi Jan,
as I promised, here is some code for you to look at.

First I will describe the approach in general.

# Get rid of the pipe. Instead, user-space passes a buffer and
kernel fills the specified user-space buffer with commands.
# When the buffer is full, kernel stops generating commands and
returns a checkpoint to the user-space.
Can it just fill a second buffer while userspace command handles
the first?
No, at this point kernel receives only one buffer and fills it up.
Can you pls elaborate more what improvement you have in mind? Like
user-space sending a list of buffers to the kernel in one shot? Or
that user-space handles kind of producer-consumer pool of buffers
and works on full buffers while kernel fills the empty ones (this,
of course, can work).

In general, my direction was to make the kernel call stateless,
which makes the user-space part more flexible.
Hmmm, okay. So the kernel has only one buffer.

Well I had some kind of double buffering in mind. The kernel fills
one buffer while the userspace application handles the other buffer.
Then kernel and userspace swap buffers.

Just an idea of mine. I do not do kernel development, so I do not
know whether its feasible. Was happy enough that I wrote a C program
that uses some kernel functions some weeks ago that actually worked
:)

So would using two buffers and swapping them make sense?
Martin,
I apologize for misspelling your name.
No problem.
Yes, user-space can handle a buffer pool of any number of buffers,
like one thread fetching a free buffer, handling it to the kernel,
then putting it on some ready-buffer queue and signalling to a another
thread that fetches ready (full) buffers and handles them. After it is
done with the buffer, it puts it back on a free-buffer queue and
signals the first thread. This is exactly producer-consumer.
Ah, so the kernel does not need to have anything to do with it. Nice.

Thanks,
-- 
Martin 'Helios' Steigerwald - http://www.Lichtvoll.de
GPG: 03B0 0D6C 0040 0710 4AFA  B82F 991B EAAC A599 84C7
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help