From: Jens Axboe <axboe@kernel.dk>
To: linux-block@vger.kernel.org, linux-aio@kvack.org,
linux-fsdevel@vger.kernel.org
Cc: Jens Axboe <axboe@kernel.dk>
Subject: [PATCH 5/5] aio: add support for file based polled IO
Date: Sat, 17 Nov 2018 16:53:17 -0700 [thread overview]
Message-ID: <20181117235317.7366-6-axboe@kernel.dk> (raw)
In-Reply-To: <20181117235317.7366-1-axboe@kernel.dk>
Needs further work, but this should work fine on normal setups
with a file system on a pollable block device.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
fs/aio.c | 2 ++
fs/direct-io.c | 4 +++-
fs/iomap.c | 7 +++++--
3 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/fs/aio.c b/fs/aio.c
index 500da3ffc376..e02085fe10d7 100644
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -1310,6 +1310,8 @@ static struct block_device *aio_bdev_host(struct kiocb *req)
if (S_ISBLK(inode->i_mode))
return I_BDEV(inode);
+ else if (inode->i_sb && inode->i_sb->s_bdev)
+ return inode->i_sb->s_bdev;
return NULL;
}
diff --git a/fs/direct-io.c b/fs/direct-io.c
index a5a4e5a1423e..34de494e9061 100644
--- a/fs/direct-io.c
+++ b/fs/direct-io.c
@@ -477,8 +477,10 @@ static inline void dio_bio_submit(struct dio *dio, struct dio_submit *sdio)
if (sdio->submit_io) {
sdio->submit_io(bio, dio->inode, sdio->logical_offset_in_bio);
dio->bio_cookie = BLK_QC_T_NONE;
- } else
+ } else {
dio->bio_cookie = submit_bio(bio);
+ WRITE_ONCE(dio->iocb->ki_blk_qc, dio->bio_cookie);
+ }
sdio->bio = NULL;
sdio->boundary = 0;
diff --git a/fs/iomap.c b/fs/iomap.c
index 74c1f37f0fd6..4cf412b6230a 100644
--- a/fs/iomap.c
+++ b/fs/iomap.c
@@ -1555,6 +1555,7 @@ iomap_dio_zero(struct iomap_dio *dio, struct iomap *iomap, loff_t pos,
struct page *page = ZERO_PAGE(0);
int flags = REQ_SYNC | REQ_IDLE;
struct bio *bio;
+ blk_qc_t qc;
bio = bio_alloc(GFP_KERNEL, 1);
bio_set_dev(bio, iomap->bdev);
@@ -1570,7 +1571,9 @@ iomap_dio_zero(struct iomap_dio *dio, struct iomap *iomap, loff_t pos,
bio_set_op_attrs(bio, REQ_OP_WRITE, flags);
atomic_inc(&dio->ref);
- return submit_bio(bio);
+ qc = submit_bio(bio);
+ WRITE_ONCE(dio->iocb->ki_blk_qc, qc);
+ return qc;
}
static loff_t
@@ -1680,7 +1683,7 @@ iomap_dio_bio_actor(struct inode *inode, loff_t pos, loff_t length,
atomic_inc(&dio->ref);
dio->submit.last_queue = bdev_get_queue(iomap->bdev);
- dio->submit.cookie = submit_bio(bio);
+ dio->iocb->ki_blk_qc = dio->submit.cookie = submit_bio(bio);
} while (nr_pages);
if (need_zeroout) {
--
2.17.1
next prev parent reply other threads:[~2018-11-18 10:11 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-17 23:53 [PATCHSET 0/5] Support for polled aio Jens Axboe
2018-11-17 23:53 ` [PATCH 1/5] aio: use assigned completion handler Jens Axboe
2018-11-19 8:06 ` Christoph Hellwig
2018-11-17 23:53 ` [PATCH 2/5] aio: fix failure to put the file pointer Jens Axboe
2018-11-19 8:07 ` Christoph Hellwig
2018-11-19 15:39 ` Jens Axboe
2018-11-17 23:53 ` [PATCH 3/5] aio: add iocb->ki_blk_qc field Jens Axboe
2018-11-19 1:59 ` Dave Chinner
2018-11-19 2:59 ` Jens Axboe
2018-11-17 23:53 ` [PATCH 4/5] aio: support for IO polling Jens Axboe
2018-11-19 8:11 ` Christoph Hellwig
2018-11-19 13:32 ` Christoph Hellwig
2018-11-19 16:07 ` Jens Axboe
2018-11-17 23:53 ` Jens Axboe [this message]
2018-11-19 1:57 ` [PATCH 5/5] aio: add support for file based polled IO Dave Chinner
2018-11-19 2:58 ` Jens Axboe
2018-11-19 8:12 ` Christoph Hellwig
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=20181117235317.7366-6-axboe@kernel.dk \
--to=axboe@kernel.dk \
--cc=linux-aio@kvack.org \
--cc=linux-block@vger.kernel.org \
--cc=linux-fsdevel@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;
as well as URLs for NNTP newsgroup(s).