From: Scot McKinley <scot.mckinley@oracle.com>
To: John Myers <jgmyers@netscape.com>
Cc: Joel Becker <jlbec@evilplan.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
"linux-aio@kvack.org" <linux-aio@kvack.org>
Subject: Re: [PATCH 2.5.71-mm1] aio process hang on EINVAL
Date: Wed, 18 Jun 2003 18:48:18 -0700 [thread overview]
Message-ID: <3EF11662.2060102@oracle.com> (raw)
In-Reply-To: 3EF104D7.5050905@netscape.com
> The kernel would have to be substantially more complex to report all
> errors that could possibly be detected during queuing.
It doesn't have to report all of them...obviously the application CAN
handle async completions, otherwise it wouldn't be io_submit'ing aio.
However, for the one that it can report, it is a nice optimization TO
actually report them.
> The kernel could
> even detect success during queuing if it really tried.
Yes, this is also a good thing, as i mentioned in my earlier message.
ie, if the io has ALREADY completed, return it immediately.
> This is not a reasonable requirement. A correctly written program has
> to be able to handle errors reported asynchronously. Why else would
> they be using an asynchronous API?
Yes, the program WILL be able to handle async completions, obviously, since
it attempting aio submissions. However, it MAY also be able to handle
synchronous/immediate completions of its aio submissions.
> So? That is a miniscule amount of resources used by an extremely rare
> condition. Such a picayune optimization hardly justifies the necessary
> increase in complexity.
It may not be miniscule. As we expand the ability to do aio to network
descriptors, the transport that we are utilizing could easily have a
"bcopy threshold" (a bcopy thresheld, for those that don't know, is the
threshold under which all io will be done synchronously. ie, it MAY be
more efficient to actually copy the data, instead of doing async io,
if the data is small). Thus, all transfers below the bcopy threshold will
incur this extra queuing overhead (etc), even tho they have ALREADY
completed! This will be for the NORMAL io path, NOT an error condition.
Also, there is no need for the app to have keep this memory around til
the async completion is returned, if the io already completed synchronously
(either a synchronous error, or an immediate/synchronous *successful* io
operation). This memory could be substantial, if the presentation protocol
the app has to adhere to requires a substantial amount of small packets
and/or there all many connections being serviced.
next prev parent reply other threads:[~2003-06-19 1:33 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-06-17 0:43 [PATCH 2.5.71-mm1] aio process hang on EINVAL Daniel McNeil
2003-06-17 1:33 ` John Myers
2003-06-17 3:24 ` Suparna Bhattacharya
2003-06-17 18:31 ` John Myers
2003-06-17 21:06 ` Daniel McNeil
2003-06-18 0:03 ` John Myers
2003-06-18 0:15 ` Joel Becker
2003-06-18 0:25 ` John Myers
2003-06-18 0:42 ` Joel Becker
2003-06-19 0:33 ` John Myers
2003-06-19 0:41 ` Joel Becker
2003-06-19 0:58 ` John Myers
2003-06-19 1:48 ` Scot McKinley [this message]
2003-06-19 20:54 ` John Myers
2003-06-19 22:42 ` Scot McKinley
2003-06-18 5:11 ` Scot McKinley
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=3EF11662.2060102@oracle.com \
--to=scot.mckinley@oracle.com \
--cc=jgmyers@netscape.com \
--cc=jlbec@evilplan.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox