From: Christoph Hellwig <hch@lst.de>
To: Jens Axboe <axboe@kernel.dk>
Cc: linux-fsdevel@vger.kernel.org, linux-aio@kvack.org, hch@lst.de,
viro@zeniv.linux.org.uk
Subject: Re: [PATCH 07/22] aio: support for IO polling
Date: Fri, 21 Dec 2018 12:25:33 +0100 [thread overview]
Message-ID: <20181221112533.GC7319@lst.de> (raw)
In-Reply-To: <20181218154230.3120-8-axboe@kernel.dk>
On Tue, Dec 18, 2018 at 08:42:15AM -0700, Jens Axboe wrote:
> Add polled variants of PREAD/PREADV and PWRITE/PWRITEV. These act
> like their non-polled counterparts, except we expect to poll for
> completion of them. The polling happens at io_getevent() time, and
> works just like non-polled IO.
This description is highly misleading as it doesn't match the code.
Also needs a Cc to linux-api and a man page addition.
> +#define AIO_IOPOLL_BATCH 8
We later rename this to AIO_POLL batch and move it up the file,
it would be great if we could that fold in here.
> + /*
> + * Handle EAGAIN from resource limits with polled IO inline, don't
> + * pass the event back to userspace.
> + */
This comment looks confusing. I think this is the RWF_NOWAIT failure?
I'd say either explain it way better or not at all.
> + if (unlikely(res == -EAGAIN))
> + set_bit(KIOCB_F_POLL_EAGAIN, &iocb->ki_flags);
> + else {
> + aio_fill_event(&iocb->ki_ev, iocb, res, res2);
> + set_bit(KIOCB_F_POLL_COMPLETED, &iocb->ki_flags);
> + }
Please always use braces on both sides of the else.
> + if (iocb->aio_flags & IOCB_FLAG_HIPRI) {
> + /* shares space in the union, and is rather pointless.. */
> + ret = -EINVAL;
> + if (iocb->aio_flags & IOCB_FLAG_RESFD)
> + goto out_fput;
> +
> + /* can't submit polled IO to a non-polled ctx */
> + if (!(ctx->flags & IOCTX_FLAG_IOPOLL))
> + goto out_fput;
Given that we can't mix and match polled and non-polled I/O we
should drop IOCB_FLAG_HIPRI entirely.
next prev parent reply other threads:[~2018-12-21 11:25 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-18 15:42 [PATCHSET v9] Support for polled and buffered aio (and more) Jens Axboe
2018-12-18 15:42 ` [PATCH 01/22] fs: add an iopoll method to struct file_operations Jens Axboe
2018-12-18 15:42 ` [PATCH 02/22] block: add REQ_HIPRI_ASYNC Jens Axboe
2018-12-21 11:20 ` Christoph Hellwig
2018-12-21 14:33 ` Jens Axboe
2018-12-18 15:42 ` [PATCH 03/22] block: wire up block device iopoll method Jens Axboe
2018-12-18 15:42 ` [PATCH 04/22] block: use REQ_HIPRI_ASYNC for non-sync polled IO Jens Axboe
2018-12-18 15:42 ` [PATCH 05/22] iomap: wire up the iopoll method Jens Axboe
2018-12-18 15:42 ` [PATCH 06/22] aio: add io_setup2() system call Jens Axboe
2018-12-21 11:21 ` Christoph Hellwig
2018-12-18 15:42 ` [PATCH 07/22] aio: support for IO polling Jens Axboe
2018-12-21 11:25 ` Christoph Hellwig [this message]
2018-12-21 14:28 ` Jens Axboe
2018-12-18 15:42 ` [PATCH 08/22] aio: add submission side request cache Jens Axboe
2018-12-21 11:28 ` Christoph Hellwig
2018-12-21 15:37 ` Jens Axboe
2018-12-21 15:42 ` Jens Axboe
2018-12-18 15:42 ` [PATCH 09/22] fs: add fget_many() and fput_many() Jens Axboe
2018-12-18 15:42 ` [PATCH 10/22] aio: use fget/fput_many() for file references Jens Axboe
2018-12-18 15:42 ` [PATCH 11/22] aio: split iocb init from allocation Jens Axboe
2018-12-18 15:42 ` [PATCH 12/22] aio: batch aio_kiocb allocation Jens Axboe
2018-12-18 15:42 ` [PATCH 13/22] aio: split old ring complete out from aio_complete() Jens Axboe
2018-12-18 15:42 ` [PATCH 14/22] aio: pass in user index to __io_submit_one() Jens Axboe
2018-12-18 15:42 ` [PATCH 15/22] aio: add support for submission/completion rings Jens Axboe
2018-12-18 15:42 ` [PATCH 16/22] block: add BIO_HOLD_PAGES flag Jens Axboe
2018-12-21 11:30 ` Christoph Hellwig
2018-12-21 14:22 ` Jens Axboe
2018-12-18 15:42 ` [PATCH 17/22] block: implement bio helper to add iter bvec pages to bio Jens Axboe
2018-12-21 11:32 ` Christoph Hellwig
2018-12-21 14:21 ` Jens Axboe
2018-12-18 15:42 ` [PATCH 18/22] aio: add support for pre-mapped user IO buffers Jens Axboe
2018-12-18 15:42 ` [PATCH 19/22] aio: support kernel side submission for aio with SCQRING Jens Axboe
2018-12-18 15:42 ` [PATCH 20/22] aio: enable polling for IOCTX_FLAG_SQTHREAD Jens Axboe
2018-12-18 15:42 ` [PATCH 21/22] aio: utilize io_event->res2 for CQ ring Jens Axboe
2018-12-18 15:42 ` [PATCH 22/22] aio: add my copyright Jens Axboe
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=20181221112533.GC7319@lst.de \
--to=hch@lst.de \
--cc=axboe@kernel.dk \
--cc=linux-aio@kvack.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=viro@zeniv.linux.org.uk \
/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.