From: Zach Brown <zab@zabbo.net>
To: Yi Yang <yang.y.yi@gmail.com>
Cc: linux-kernel@vger.kernel.org, Andrew Morton <akpm@osdl.org>,
linux-aio <linux-aio@kvack.org>
Subject: Re: [2.6.18-rc* PATCH RFC]: Correct ambiguous errno of aio
Date: Tue, 29 Aug 2006 11:32:05 -0700 [thread overview]
Message-ID: <44F48825.4050408@zabbo.net> (raw)
In-Reply-To: <44F43F46.1070702@gmail.com>
Sorry, we shouldn't merge this patch in its current form.
> In the current implementation of AIO, for the operation IOCB_CMD_FDSYNC
> and IOCB_CMD_FSYNC, the returned errno is -EINVAL although the kernel
> does know them, I think the correct errno should be -EOPNOTSUPP which
> means they aren't be implemented or supported.
Like it or not, the sys_io_submit() interface returns -EINVAL when the
file descriptor doesn't support the requested command. Changing the
binary interface is a big deal and should not be done lightly. What is
the motivation for making this change?
Even if we decided to, we'd want to do it for all the commands. This
patch only addresses F{D,}SYNC. All the other commands would still
return -EINVAL if the descriptor doesn't have the corresponding ->aio_
method, leaving userspace do deal with more complexity.
> -static ssize_t aio_fdsync(struct kiocb *iocb)
> -{
> - struct file *file = iocb->ki_filp;
> - ssize_t ret = -EINVAL;
> -
> - if (file->f_op->aio_fsync)
> - ret = file->f_op->aio_fsync(iocb, 1);
> - return ret;
> -}
> -
> static ssize_t aio_fsync(struct kiocb *iocb)
> {
> struct file *file = iocb->ki_filp;
> - ssize_t ret = -EINVAL;
> + ssize_t ret = -EOPNOTSUPP;
>
> if (file->f_op->aio_fsync)
> ret = file->f_op->aio_fsync(iocb, 0);
> case IOCB_CMD_FDSYNC:
> - ret = -EINVAL;
> + ret = -EOPNOTSUPP;
> if (file->f_op->aio_fsync)
> - kiocb->ki_retry = aio_fdsync;
> + kiocb->ki_retry = aio_fsync;
Hmm, your most recent patch didn't mention this aio_f{d,}sync() change
though the earlier one did. Please make sure all patch submissions have
complete descriptions.
These calls are not the same, notice that they differ in the second
argument to their ->aio_fsync() calls. Cleaning up the ->aio_fsync()
interface might well be reasonable. Missing that subtle difference
suggests that it should be more clear and there are precisely zero
merged ->aio_fsync() users. But that kind of cleanup belongs in a
separate patch with its own justification.
Are you working with an ->aio_fsync() user that might be merged?
- z
next prev parent reply other threads:[~2006-08-29 18:32 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-29 13:21 [2.6.18-rc* PATCH RFC]: Correct ambiguous errno of aio Yi Yang
2006-08-29 18:32 ` Zach Brown [this message]
2006-08-29 19:04 ` Benjamin LaHaise
2006-08-30 14:19 ` [2.6.18-rc5 PATCH]: aio cleanup Yi Yang
2006-08-30 16:30 ` Zach Brown
[not found] ` <4c4443230608300651n34e8dbbdn8749c6874ce8791@mail.gmail.com>
2006-08-30 16:35 ` [2.6.18-rc* PATCH RFC]: Correct ambiguous errno of aio Zach Brown
-- strict thread matches above, loose matches on Subject: below --
2006-08-30 13:55 Yi Yang
2006-08-28 13:28 Yi Yang
2006-08-28 15:42 ` Randy.Dunlap
2006-08-28 16:08 ` Frederik Deweerdt
2006-08-28 14:55 ` Yi Yang
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=44F48825.4050408@zabbo.net \
--to=zab@zabbo.net \
--cc=akpm@osdl.org \
--cc=linux-aio@kvack.org \
--cc=linux-kernel@vger.kernel.org \
--cc=yang.y.yi@gmail.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