Re: [PATCH v3 4/4] io_uring: add support for zone-append
From: Matthew Wilcox <willy@infradead.org>
Date: 2020-07-10 13:48:38
Also in:
io-uring, linux-fsdevel, lkml
From: Matthew Wilcox <willy@infradead.org>
Date: 2020-07-10 13:48:38
Also in:
io-uring, linux-fsdevel, lkml
On Fri, Jul 10, 2020 at 02:10:54PM +0100, Christoph Hellwig wrote:
On Fri, Jul 10, 2020 at 12:35:43AM +0530, Kanchan Joshi wrote:quoted
Append required special treatment (conversion for sector to bytes) for io_uring. And we were planning a user-space wrapper to abstract that. But good part (as it seems now) was: append result went along with cflags at virtually no additional cost. And uring code changes became super clean/minimal with further revisions. While indirect-offset requires doing allocation/mgmt in application, io-uring submission and in completion path (which seems trickier), and those CQE flags still get written user-space and serve no purpose for append-write.I have to say that storing the results in the CQE generally make so much more sense. I wonder if we need a per-fd "large CGE" flag that adds two extra u64s to the CQE, and some ops just require this version.
If we're going to go the route of changing the CQE, how about:
struct io_uring_cqe {
__u64 user_data; /* sqe->data submission passed back */
- __s32 res; /* result code for this event */
- __u32 flags;
+ union {
+ struct {
+ __s32 res; /* result code for this event */
+ __u32 flags;
+ };
+ __s64 res64;
+ };
};
then we don't need to change the CQE size and it just depends on the SQE
whether the CQE for it uses res+flags or res64.