From: Matthew Hodgson <matthew@mxtelecom.com>
To: xfs@oss.sgi.com
Subject: Zero-copy Block IO with XFS
Date: Tue, 11 Dec 2007 11:38:19 +0000 [thread overview]
Message-ID: <475E76AB.705@mxtelecom.com> (raw)
Hi all,
I'm experimenting with using XFS with a network block device (DST), and
have come up against the problem that when writing data to the network,
it uses kernel_sendpage to hand the page presented at the BIO layer to
the network stack. It then completes the block IO request.
The problem arises when XFS proceeds to then reuse that page before the
NIC actually sends it. Particularly if TX checksumming or TCP
segmentation is being offloaded to the NIC, it seems that the NIC will
try to access to page after the BIO request has returned, and so operate
on stale data. I assume the same problem might happen in the case of
TCP retransmits or similar. The motivation for using sendpage rather
than sendmsg (or using sendpage on a copy of the original page) is to
try to ensure speed by a zero-copy path through the subsystem.
Is there any way at all in which XFS would be able to (theoretically)
expose an API to allow an underlying block device to retain ownership of
pages until it's done with them, so as to avoid a potentially needless
copy? Or is there another way of achieving this?
thanks in advance,
Matthew.
--
Matthew Hodgson <matthew@mxtelecom.com>
Media & Systems Project Manager
Tel: +44 (0) 845 666 7778
http://www.mxtelecom.com
next reply other threads:[~2007-12-11 11:36 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-12-11 11:38 Matthew Hodgson [this message]
2007-12-11 16:39 ` Zero-copy Block IO with XFS Bhagi rathi
2007-12-12 1:52 ` Matthew Hodgson
2007-12-12 11:07 ` David Chinner
2007-12-12 11:20 ` Matthew Hodgson
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=475E76AB.705@mxtelecom.com \
--to=matthew@mxtelecom.com \
--cc=xfs@oss.sgi.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox