On 2020/10/02 22:39, Martin K. Petersen wrote: > > Naohiro/Johannes, > >> Add bio_add_zone_append_page(), a wrapper around bio_add_hw_page() which >> is intended to be used by file systems that directly add pages to a bio >> instead of using bio_iov_iter_get_pages(). > > Why use the hardware limit? For filesystem I/O we generally use the > queue soft limit to prevent I/Os getting too big which can lead to very > unpredictable latency in mixed workloads. max_zone_append_sectors is already gated by max_hw_sectors, but it is not gated by max_sectors/BLK_DEF_MAX_SECTORS. If we add such gating to blk_queue_max_zone_append_sectors(), max_zone_append_sectors would become a soft limit too. So should we have max_zone_append_sectors and max_hw_zone_append_sectors ? Which also means that we should tweak queue_max_sectors_store() to gate max_zone_append_sectors to that limit upon a user change. > > max_zone_append_sectors also appears to be gated exclusively by hardware > constraints. Is there user-controllable limit in place for append > operations? No, none that I know of. At the HW level, max_zone_append_sectors is basically max_hw_sectors. That is gated by the zone size in blk_queue_max_zone_append_sectors(). If as mentioned above we tweak queue_max_sectors_store() to change max_zone_append_sectors too if needed, we would then have an indirect user-controllable limit. Or we could implement a queue_zone_append_max_store() too I guess. Yet, having everything indirectly controlled through queue_max_sectors_store() is probably simpler I think. -- Damien Le Moal Western Digital Research