From: "Martin K. Petersen" <mkp@mkp.net>
To: Andrew Morton <akpm@zip.com.au>
Cc: Joel Becker <jlbec@evilplan.org>,
Anton Altaparmakov <aia21@cam.ac.uk>,
Jeff Garzik <jgarzik@mandrakesoft.com>,
linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org
Subject: Re: fadvise syscall?
Date: 18 Mar 2002 14:42:47 -0500 [thread overview]
Message-ID: <yq17ko9r7bc.fsf@austin.mkp.net> (raw)
In-Reply-To: <3C945635.4050101@mandrakesoft.com> <3C945A5A.9673053F@zip.com.au> <3C945D7D.8040703@mandrakesoft.com> <5.1.0.14.2.20020317131910.0522b490@pop.cus.cam.ac.uk> <20020318080531.W4836@parcelfarce.linux.theplanet.co.uk> <3C95A1DB.CA13A822@zip.com.au> <yq1bsdmq6so.fsf@austin.mkp.net> <3C963CD5.8E371FF@zip.com.au>
>>>>> "Andrew" == Andrew Morton <akpm@zip.com.au> writes:
Andrew> google fails me - where does your kiobuf-based splitter live?
It's in the kiobuf XFS patches.
Andrew> I'm curious to know how this will all work. Will it take a
Andrew> large BIO and split it into a number of smaller, newly
Andrew> allocated BIOs?
For kiobufs I walked the request, cloned a new every time I crossed a
stripe/device boundary and sent it off. I had my own completion
function with an atomic counter that would call the parent kiobuf's
end_io function when all clones had completed.
So I didn't chop the request into page sized chunks or something like
that.
Andrew> If that's really the only way in which we can solve this
Andrew> problem, would it not be better to pass information up to the
Andrew> higher layer, telling it when the BIO which is currently under
Andrew> assembly cannot be grown further? Say,
Andrew> blk_can_i_add_more_stuff_to_this_bio()?
We tried different approaches. One of them was to be able to signal
to upper layers that your I/O was too big and please submit smaller
chunks. Running with that, however, the I/O size converged against
small requests because you'd often start an I/O - say 4K - from a
stripe boundary. And that would kill it right off.
So unless the filesystem knows about stripe/device boundaries it's
really hard to get the size signalling right. And then what happens
when you stack LVM and MD?
In the end, cloning the kiobuf from the above and adjusting
offset/length in the children turned out to be the best approach.
And I suspect that's why Jens kept the clone facility around for bio
bufs :)
Andrew> Anyway. I'm interested. O_DIRECT is a bit of a weird
Andrew> curiosity, but I'm working on making these big-BIO code paths
Andrew> *the* way in which data gets to and from disk. It needs to be
Andrew> efficient ;)
*nod*
I'll try and poke at this again tonight. Will shoot you the patch
once I get the zoning evil sorted out.
--
Martin K. Petersen, Principal Linux Consultant, Linuxcare, Inc.
mkp@linuxcare.com, http://www.linuxcare.com/
SGI XFS for Linux Developer, http://oss.sgi.com/projects/xfs/
next prev parent reply other threads:[~2002-03-18 19:43 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-03-17 8:39 fadvise syscall? Jeff Garzik
2002-03-17 8:56 ` Andrew Morton
2002-03-17 9:10 ` Jeff Garzik
2002-03-17 20:18 ` Richard Gooch
2002-03-17 13:41 ` Anton Altaparmakov
2002-03-17 14:31 ` Simon Richter
2002-03-17 14:56 ` Jan Hudec
2002-03-17 15:00 ` Anton Altaparmakov
2002-03-17 19:20 ` Joel Becker
2002-03-17 23:59 ` Anton Altaparmakov
2002-03-18 7:28 ` Jeff Garzik
2002-03-18 7:55 ` Andrew Morton
2002-03-18 8:07 ` Jeff Garzik
2002-03-18 8:17 ` Andrew Morton
2002-03-18 16:41 ` Richard Gooch
2002-03-18 19:00 ` Andrew Morton
2002-03-18 19:15 ` Richard Gooch
2002-03-22 16:05 ` Pavel Machek
2002-03-24 6:38 ` Stevie O
2002-03-24 11:24 ` Pavel Machek
2002-03-24 12:52 ` Anton Altaparmakov
2002-03-25 11:12 ` Pavel Machek
2002-03-18 8:05 ` Joel Becker
2002-03-18 8:10 ` Jeff Garzik
2002-03-18 8:20 ` Joel Becker
2002-03-18 8:14 ` Andrew Morton
2002-03-18 14:39 ` Martin K. Petersen
2002-03-18 19:15 ` Andrew Morton
2002-03-18 19:42 ` Martin K. Petersen [this message]
2002-03-19 20:08 ` Eric W. Biederman
2002-03-19 23:38 ` Martin K. Petersen
2002-03-17 15:13 ` Ken Hirsch
2002-03-17 17:14 ` Anton Altaparmakov
2002-03-17 18:31 ` Mark Mielke
2002-03-17 18:35 ` Ken Hirsch
2002-03-17 19:06 ` Anton Altaparmakov
2002-03-17 20:19 ` Ken Hirsch
2002-03-18 0:12 ` Anton Altaparmakov
[not found] ` <a73ujs$5mc$1@cesium.transmeta.com>
2002-03-18 8:58 ` Jan Hudec
2002-03-18 10:08 ` Jeff Garzik
2002-03-18 17:29 ` Mark Mielke
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=yq17ko9r7bc.fsf@austin.mkp.net \
--to=mkp@mkp.net \
--cc=aia21@cam.ac.uk \
--cc=akpm@zip.com.au \
--cc=jgarzik@mandrakesoft.com \
--cc=jlbec@evilplan.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/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