Damien Le Moal <dlemoal@xxxxxxxxxx> writes: > On 6/27/23 03:23, Andreas Hindborg (Samsung) wrote: >> >> Johannes Thumshirn <Johannes.Thumshirn@xxxxxxx> writes: >> >>> On 26.06.23 18:47, Andreas Hindborg wrote: >>>> From: "Andreas Hindborg (Samsung)" <nmi@xxxxxxxxxxxx> >>>> >>>> Zonefs will try to use `zonefs_file_dio_append()` for direct sync writes even if >>>> device `max_zone_append_sectors` is zero. This will cause the IO to fail as the >>>> io vector is truncated to zero. It also causes a call to >>>> `invalidate_inode_pages2_range()` with end set to UINT_MAX, which is probably >>>> not intentional. Thus, do not use append when device does not support it. >>>> >>> >>> I'm sorry but I think it has been stated often enough that for Linux Zone Append >>> is a mandatory feature for a Zoned Block Device. Therefore this path is essentially >>> dead code as max_zone_append_sectors will always be greater than zero. >>> >>> So this is a clear NAK from my side. >> >> OK, thanks for clarifying 👍 I came across this bugging out while >> playing around with zone append for ublk. The code makes sense if the >> stack expects append to always be present. >> >> I didn't follow the discussion, could you reiterate why the policy is >> that zoned devices _must_ support append? > > To avoid support fragmentation and for performance. btrfs zoned block device > support requires zone append and using that command makes writes much faster as > we do not have to go through zone locking. > Note that for zonefs, I plan to add async zone append support as well, linked > with O_APPEND use to further improve write performance with ZNS drives. > Thanks for clarifying, Damien 👍 BR Andreas