All of lore.kernel.org
 help / color / mirror / Atom feed
From: Suparna Bhattacharya <suparna@in.ibm.com>
To: Daniel McNeil <daniel@osdl.org>
Cc: akpm@osdl.org, linux-kernel@vger.kernel.org, linux-aio@kvack.org
Subject: Re: 2.6.0-test6-mm4 - oops in __aio_run_iocbs()
Date: Thu, 9 Oct 2003 18:29:02 +0530	[thread overview]
Message-ID: <20031009125902.GA11697@in.ibm.com> (raw)
In-Reply-To: <20031009111624.GA11549@in.ibm.com>

On Thu, Oct 09, 2003 at 04:46:24PM +0530, Suparna Bhattacharya wrote:
> On Wed, Oct 08, 2003 at 04:18:15PM -0700, Daniel McNeil wrote:
> > I'm been testing AIO on test6-mm4 using a ext3 file system and
> > copying a 88MB file to an already existing preallocated file of 88MB.
> > I been using my aiocp program to copy the file using i/o sizes of
> > 1k to 512k and outstanding aio requests of between 1 and 64 using
> > O_DIRECT, O_SYNC and O_DIRECT & O_SYNC.  Everything works as long
> > as the file is pre-allocated.  When copying the file to a new file
> > (O_CREAT|O_DIRECT), I get the following oops:
> 
> What are the i/o sizes and block sizes for which you get the oops ?
> Is this only for large i/o sizes ?
> 
> __aio_run_iocbs should have been called only for buffered i/o, 
> so this sounds like an O_DIRECT fallback to buffered i/o.
> Possibly after already submitting some blocks direct to BIO,
> the i/o completion path for which ends up calling aio_complete
> releasing the iocb. That could explain the use-after-free situation
> you see.
> 
> But, O_DIRECT write should fallback to buffered i/o only if it 
> encounters holes in the middle of the file, not for simple appends 
> as in your case. Need to figure out how this could have happened ...

Took a quick look at aiocp.c - wondering if its possible that
some of the later read requests complete earlier and trigger
a write to higher offset first. Resulting in the file being
extended with holes in between - holes which get overwritten
at a later point as the earlier read requests complete.

Though I don't yet see how a situation could arise in the 
single threaded case where part of the request gets submitted 
direct to BIO and the rest falls back to buffered-io ... Need 
to think about it a bit more. 
Are your writes all block aligned ?

Regards
Suparna

-- 
Suparna Bhattacharya (suparna@in.ibm.com)
Linux Technology Center
IBM Software Labs, India


  reply	other threads:[~2003-10-09 12:53 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-10-05  8:33 2.6.0-test6-mm4 Andrew Morton
2003-10-05  8:33 ` 2.6.0-test6-mm4 Andrew Morton
2003-10-05  9:26 ` 2.6.0-test6-mm4 Daniele Bellucci
2003-10-05  9:26   ` 2.6.0-test6-mm4 Daniele Bellucci
2003-10-08 23:18 ` 2.6.0-test6-mm4 - oops in __aio_run_iocbs() Daniel McNeil
2003-10-09 11:16   ` Suparna Bhattacharya
2003-10-09 12:59     ` Suparna Bhattacharya [this message]
2003-10-09 17:42       ` Daniel McNeil
2003-10-09 17:38     ` Daniel McNeil
2003-10-10  8:34       ` Suparna Bhattacharya
2003-10-10 11:48         ` Suparna Bhattacharya
2003-10-10 22:11           ` Daniel McNeil
2003-10-09 19:24     ` bill davidsen

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=20031009125902.GA11697@in.ibm.com \
    --to=suparna@in.ibm.com \
    --cc=akpm@osdl.org \
    --cc=daniel@osdl.org \
    --cc=linux-aio@kvack.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 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.