Re: [PATCH v4 6/6] io_uring: add support for zone-append
From: Kanchan Joshi <hidden>
Date: 2020-07-31 07:58:58
Also in:
io-uring, linux-block, linux-fsdevel, lkml
On Fri, Jul 31, 2020 at 12:29 PM Damien Le Moal [off-list ref] wrote:
On 2020/07/31 15:45, hch@infradead.org wrote:quoted
On Fri, Jul 31, 2020 at 06:42:10AM +0000, Damien Le Moal wrote:quoted
quoted
- We may not be able to use RWF_APPEND, and need exposing a new type/flag (RWF_INDIRECT_OFFSET etc.) user-space. Not sure if this sounds outrageous, but is it OK to have uring-only flag which can be combined with RWF_APPEND?Why ? Where is the problem ? O_APPEND/RWF_APPEND is currently meaningless for raw block device accesses. We could certainly define a meaning for these in the context of zoned block devices.We can't just add a meaning for O_APPEND on block devices now, as it was previously silently ignored. I also really don't think any of these semantics even fit the block device to start with. If you want to work on raw zones use zonefs, that's what is exists for.Which is fine with me. Just trying to say that I think this is exactly the discussion we need to start with. What interface do we implement... Allowing zone append only through zonefs as the raw block device equivalent, all the O_APPEND/RWF_APPEND semantic is defined and the "return written offset" implementation in VFS would be common for all file systems, including regular ones. Beside that, there is I think the question of short writes... Not sure if short writes can currently happen with async RWF_APPEND writes to regular files. I think not but that may depend on the FS.
generic_write_check_limits (called by generic_write_checks, used by most FS) may make it short, and AFAIK it does not depend on async/sync. This was one of the reason why we chose to isolate the operation by a different IOCB flag and not by IOCB_APPEND alone. For block-device these checks are not done, but there is another place when it receives writes spanning beyond EOF and iov_iter_truncate() adjusts it before sending it down. And we return failure for that case in V4- "Ref: [PATCH v4 3/6] uio: return status with iov truncation" -- Joshi