From: Kanchan Joshi <joshi.k@samsung.com>
To: axboe@kernel.dk, viro@zeniv.linux.org.uk, bcrl@kvack.org
Cc: willy@infradead.org, hch@infradead.org, Damien.LeMoal@wdc.com,
asml.silence@gmail.com, linux-fsdevel@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-aio@kvack.org,
io-uring@vger.kernel.org, linux-block@vger.kernel.org,
linux-api@vger.kernel.org, Kanchan Joshi <joshi.k@samsung.com>
Subject: [PATCH v4 0/6] zone-append support in io-uring and aio
Date: Fri, 24 Jul 2020 21:19:16 +0530 [thread overview]
Message-ID: <1595605762-17010-1-git-send-email-joshi.k@samsung.com> (raw)
In-Reply-To: CGME20200724155244epcas5p2902f57e36e490ee8772da19aa9408cdc@epcas5p2.samsung.com
Changes since v3:
- Return absolute append offset in bytes, in both io_uring and aio
- Repurpose cqe's res/flags and introduce res64 to send 64bit append-offset
- Change iov_iter_truncate to report whether it actually truncated
- Prevent short write and return failure if zone-append is spanning
beyond end-of-device
- Change ki_complete(...,long ret2) interface to support 64bit ret2
v3: https://lore.kernel.org/lkml/1593974870-18919-1-git-send-email-joshi.k@samsung.com/
Changes since v2:
- Use file append infra (O_APPEND/RWF_APPEND) to trigger zone-append
(Christoph, Wilcox)
- Added Block I/O path changes (Damien). Avoided append split into multi-bio.
- Added patch to extend zone-append in block-layer to support bvec iov_iter.
Append using io-uring fixed-buffer is enabled with this.
- Made io-uring support code more concise, added changes mentioned by Pavel.
v2: https://lore.kernel.org/io-uring/1593105349-19270-1-git-send-email-joshi.k@samsung.com/
Changes since v1:
- No new opcodes in uring or aio. Use RWF_ZONE_APPEND flag instead.
- linux-aio changes vanish because of no new opcode
- Fixed the overflow and other issues mentioned by Damien
- Simplified uring support code, fixed the issues mentioned by Pavel
- Added error checks for io-uring fixed-buffer and sync kiocb
v1: https://lore.kernel.org/io-uring/1592414619-5646-1-git-send-email-joshi.k@samsung.com/
Cover letter (updated):
This patchset enables zone-append using io-uring/linux-aio, on block IO path.
Purpose is to provide zone-append consumption ability to applications which are
using zoned-block-device directly.
Application can send write with existing O/RWF_APPEND;On a zoned-block-device
this will trigger zone-append. On regular block device, existing file-append
behavior is retained. However, infra allows zone-append to be triggered on
any file if FMODE_ZONE_APPEND (new kernel-only fmode) is set during open.
With zone-append, written-location within zone is known only after completion.
So apart from the usual return value of write, additional means are
needed to obtain the actual written-location.
In aio, 64bit append-offset is returned to application using res2
field of io_event -
struct io_event {
__u64 data; /* the data field from the iocb */
__u64 obj; /* what iocb this event came from */
__s64 res; /* result code for this event */
__s64 res2; /* secondary result */
};
In io-uring, [cqe->res, cqq->flags] repurposed into res64 to return
64bit append-offset to user-space.
struct io_uring_cqe {
__u64 user_data; /* sqe->data submission passed back */
union {
struct {
__s32 res; /* result code for this event */
__u32 flags;
};
__s64 res64; /* appending offset for zone append */
};
};
Zone-append write is ensured not to be a short-write.
Kanchan Joshi (3):
fs: introduce FMODE_ZONE_APPEND and IOCB_ZONE_APPEND
block: add zone append handling for direct I/O path
block: enable zone-append for iov_iter of bvec type
SelvaKumar S (3):
fs: change ki_complete interface to support 64bit ret2
uio: return status with iov truncation
io_uring: add support for zone-append
block/bio.c | 31 ++++++++++++++++++++---
drivers/block/loop.c | 2 +-
drivers/nvme/target/io-cmd-file.c | 2 +-
drivers/target/target_core_file.c | 2 +-
fs/aio.c | 2 +-
fs/block_dev.c | 51 +++++++++++++++++++++++++++++--------
fs/io_uring.c | 53 +++++++++++++++++++++++++++++++--------
fs/overlayfs/file.c | 2 +-
include/linux/fs.h | 16 +++++++++---
include/linux/uio.h | 7 ++++--
include/uapi/linux/io_uring.h | 9 +++++--
11 files changed, 142 insertions(+), 35 deletions(-)
--
2.7.4
next parent reply other threads:[~2020-07-24 16:22 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20200724155244epcas5p2902f57e36e490ee8772da19aa9408cdc@epcas5p2.samsung.com>
2020-07-24 15:49 ` Kanchan Joshi [this message]
[not found] ` <CGME20200724155258epcas5p1a75b926950a18cd1e6c8e7a047e6c589@epcas5p1.samsung.com>
2020-07-24 15:49 ` [PATCH v4 1/6] fs: introduce FMODE_ZONE_APPEND and IOCB_ZONE_APPEND Kanchan Joshi
2020-07-24 16:34 ` Jens Axboe
2020-07-26 15:18 ` Christoph Hellwig
2020-07-28 1:49 ` Matthew Wilcox
2020-07-28 7:26 ` Christoph Hellwig
[not found] ` <CGME20200724155324epcas5p18e1d3b4402d1e4a8eca87d0b56a3fa9b@epcas5p1.samsung.com>
2020-07-24 15:49 ` [PATCH v4 2/6] fs: change ki_complete interface to support 64bit ret2 Kanchan Joshi
2020-07-26 15:18 ` Christoph Hellwig
[not found] ` <CGME20200724155329epcas5p345ba6bad0b8fe18056bb4bcd26c10019@epcas5p3.samsung.com>
2020-07-24 15:49 ` [PATCH v4 3/6] uio: return status with iov truncation Kanchan Joshi
[not found] ` <CGME20200724155341epcas5p15bfc55927f2abb60f19784270fe8e377@epcas5p1.samsung.com>
2020-07-24 15:49 ` [PATCH v4 4/6] block: add zone append handling for direct I/O path Kanchan Joshi
2020-07-26 15:19 ` Christoph Hellwig
[not found] ` <CGME20200724155346epcas5p2cfb383fe9904a45280c6145f4c13e1b4@epcas5p2.samsung.com>
2020-07-24 15:49 ` [PATCH v4 5/6] block: enable zone-append for iov_iter of bvec type Kanchan Joshi
2020-07-26 15:20 ` Christoph Hellwig
[not found] ` <CGME20200724155350epcas5p3b8f1d59eda7f8fbb38c828f692d42fd6@epcas5p3.samsung.com>
2020-07-24 15:49 ` [PATCH v4 6/6] io_uring: add support for zone-append Kanchan Joshi
2020-07-24 16:29 ` Jens Axboe
2020-07-27 19:16 ` Kanchan Joshi
2020-07-27 20:34 ` Jens Axboe
2020-07-30 16:08 ` Pavel Begunkov
2020-07-30 16:13 ` Jens Axboe
2020-07-30 16:26 ` Pavel Begunkov
2020-07-30 17:16 ` Jens Axboe
2020-07-30 17:38 ` Pavel Begunkov
2020-07-30 17:51 ` Kanchan Joshi
2020-07-30 17:54 ` Jens Axboe
2020-07-30 18:25 ` Kanchan Joshi
2020-07-31 6:42 ` Damien Le Moal
2020-07-31 6:45 ` hch
2020-07-31 6:59 ` Damien Le Moal
2020-07-31 7:58 ` Kanchan Joshi
2020-07-31 8:14 ` Damien Le Moal
2020-07-31 9:14 ` hch
2020-07-31 9:34 ` Damien Le Moal
2020-07-31 9:41 ` hch
2020-07-31 10:16 ` Damien Le Moal
2020-07-31 12:51 ` hch
2020-07-31 13:08 ` hch
2020-07-31 15:07 ` Kanchan Joshi
2022-03-02 20:47 ` Luis Chamberlain
2020-08-05 7:35 ` Damien Le Moal
2020-08-14 8:14 ` hch
2020-08-14 8:27 ` Damien Le Moal
2020-08-14 12:04 ` hch
2020-08-14 12:20 ` Damien Le Moal
2020-09-07 7:01 ` Kanchan Joshi
2020-09-08 15:18 ` hch
2020-09-24 17:19 ` Kanchan Joshi
2020-09-25 2:52 ` Damien Le Moal
2020-09-28 18:58 ` Kanchan Joshi
2020-09-29 1:24 ` Damien Le Moal
2020-09-29 18:49 ` Kanchan Joshi
2022-03-02 20:43 ` Luis Chamberlain
2020-07-31 9:38 ` Kanchan Joshi
2022-03-02 20:51 ` Luis Chamberlain
2020-07-31 7:08 ` Kanchan Joshi
2020-07-30 15:57 ` Pavel Begunkov
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=1595605762-17010-1-git-send-email-joshi.k@samsung.com \
--to=joshi.k@samsung.com \
--cc=Damien.LeMoal@wdc.com \
--cc=asml.silence@gmail.com \
--cc=axboe@kernel.dk \
--cc=bcrl@kvack.org \
--cc=hch@infradead.org \
--cc=io-uring@vger.kernel.org \
--cc=linux-aio@kvack.org \
--cc=linux-api@vger.kernel.org \
--cc=linux-block@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=viro@zeniv.linux.org.uk \
--cc=willy@infradead.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.