All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jens Axboe <axboe@suse.de>
To: Peter Osterlund <petero2@telia.com>
Cc: arjanv@redhat.com, Andrew Morton <akpm@osdl.org>,
	packet-writing@suse.com, linux-kernel@vger.kernel.org
Subject: Re: ext2 on a CD-RW
Date: Fri, 2 Jan 2004 11:59:15 +0100	[thread overview]
Message-ID: <20040102105915.GO5523@suse.de> (raw)
In-Reply-To: <m2k74a8vyr.fsf@telia.com>

On Fri, Jan 02 2004, Peter Osterlund wrote:
> Arjan van de Ven <arjanv@redhat.com> writes:
> 
> > On Fri, 2004-01-02 at 02:30, Peter Osterlund wrote:
> > 
> > > The packet writing code has the restriction that a bio must not span a
> > > packet boundary. (A packet is 32*2048 bytes.) If the page when mapped
> > > to disk starts 2kb before a packet boundary, merge_bvec_fn therefore
> > > returns 2048, which is less than len, which is 4096 if the whole page
> > > is mapped, so the bio_add_page() call fails.
> > 
> > devicemapper has similar restrictions for raid0 format; in that case
> > it's device-mappers job to split the page/bio. Just as it is UDF's task
> > to do the same I suspect...
> 
> Old versions of the packet writing code did just that, but Jens told
> me that bio splitting was evil, so when the merge_bvec_fn
> functionality was added to the kernel, I started to use it.
> 
>         http://lists.suse.com/archive/packet-writing/2002-Aug/0044.html

Splitting is evil, but unfortunately it's a necessary evil... There are
a few kernel helpers to make supporting it easier (see bio_split()). Not
so sure how well that'll work for you, you may have to do the grunt work
yourself.

> If merge_bvec_fn is not supposed to be able to handle the need of the
> packet writing code, I can certainly resurrect my bio splitting code.

Only partially. Read my email: you _must_ accept a page addition to an
empty bio. You can refuse others. For the single page case, you may need
to split.

> Btw, for some reason, this bug is not triggered when using the UDF
> filesystem on a CDRW. I've only seen it with the ext2 filesystem.

Does UDF use mpage? The fact that it doesn't trigger on UDF doesn't mean
that packet writing isn't breaking the API :)

-- 
Jens Axboe


  reply	other threads:[~2004-01-02 10:59 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-01-01 23:47 ext2 on a CD-RW Peter Osterlund
2004-01-02  0:24 ` Andrew Morton
2004-01-02  1:30   ` Peter Osterlund
2004-01-02  9:06     ` Arjan van de Ven
2004-01-02 10:09       ` Jens Axboe
2004-01-02 10:51       ` Peter Osterlund
2004-01-02 10:59         ` Jens Axboe [this message]
2004-01-02 12:09           ` Peter Osterlund
2004-01-02 12:19             ` Jens Axboe
2004-01-02 13:38               ` Peter Osterlund
2004-01-02 13:59                 ` Jens Axboe
2004-01-02 16:12           ` Peter Osterlund
2004-03-29 15:38           ` Peter Osterlund
2004-01-02 10:08     ` Jens Axboe
2004-01-03 19:14 ` Pavel Machek
2004-01-03 20:32   ` Peter Osterlund

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=20040102105915.GO5523@suse.de \
    --to=axboe@suse.de \
    --cc=akpm@osdl.org \
    --cc=arjanv@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=packet-writing@suse.com \
    --cc=petero2@telia.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.