All of lore.kernel.org
 help / color / mirror / Atom feed
From: Robert Hancock <hancockrwd@gmail.com>
To: Neeraj Kumar <neeraj.kumar01@ymail.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: Doing a zero-copy move of data from a kernel buffer to hard disk
Date: Tue, 21 Sep 2010 19:02:29 -0600	[thread overview]
Message-ID: <4C9955A5.9080604@gmail.com> (raw)
In-Reply-To: <633175.66987.qm@web113411.mail.gq1.yahoo.com>

On 09/20/2010 02:12 PM, Neeraj Kumar wrote:
> I am trying to move data from a buffer in kernel space into the hard
> disk without having to incur any additional copies from kernel buffer to
> user buffers or any other kernel buffers. Any ideas/suggestions would be
> most helpful.
>
> The use case is basically a demux driver which collects data into a
> demux buffer in kernel space and this buffer has to be emptied
> periodically by copying the contents into a FUSE-based partition on the
> disk. As the buffer gets full, a user process is signalled which then
> determines the sector numbers on the disk the contents need to be copied
> to.
>
> I was hoping to mmap the above demux kernel buffer into user address
> space and issue a write system call to the raw partition device. But
> from what I can see, the this data is being cached by the kernel on its
> way to the Hard Disk driver. And so I am assuming that involves
> additional copies by the linux kernel.
>
> At this point I am wondering if there is any other mechansim to do this
> without involving additional copies by the kernel. I realize this is an
> unsual usage scenario for non-embedded environments, but I would
> appreciate any feedback on possible options.
>
> BTW - I have tried using O_DIRECT when opening the raw partition, but
> the subsequent write call fails if the buffer being passed is the
> mmapped buffer.

O_DIRECT would be the right way to do it - I think you'd need to figure 
out why that write is failing. Keep in mind you need to observe the 
alignment restrictions of O_DIRECT (man 2 open).

  reply	other threads:[~2010-09-22  1:02 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-09-20 20:12 Doing a zero-copy move of data from a kernel buffer to hard disk Neeraj Kumar
2010-09-22  1:02 ` Robert Hancock [this message]
2010-10-12  1:10   ` Neeraj Kumar
2010-09-22  8:54 ` Miklos Szeredi
2010-10-12  0:58   ` Neeraj Kumar

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=4C9955A5.9080604@gmail.com \
    --to=hancockrwd@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=neeraj.kumar01@ymail.com \
    /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.