Christoph, On 2/21/18 11:39, Christoph Hellwig wrote: > On Tue, Feb 20, 2018 at 03:06:10PM +0900, Damien Le Moal wrote: >> For a zoned block device mount, an array of zone types for the device is >> allocated and initialized in order to determine if a section is stored >> on a sequential zone (zone reset needed) or a conventional zone (no zone >> reset needed and regular discard applies). Considering this usage, the >> zone types stored in memory can be replaced with a bitmap to indicate >> equivalent information, that is, if a zone is sequential or not. This >> reduces the memory usage for the device mount by roughly 8 (on a 14TB >> disk with zones of 256 MB, the zone type array consumes 13x4KB pages >> while the bitmap uses only 2x4KB pages. >> >> This patch changes the f2fs_dev_info structure blkz_type field to the >> bitmap blkz_seq. Access to this bitmap is done using the function >> f2fs_blkz_is_seq(), which is a rewrite of the function get_blkz_type(). > > Is there any way we could just provide a block layer helper to > figure this out so that the file system code could be simplified even > more? I thought about that before sending the patch... For a physical drive, the block device queue already has the bitmap indicating sequential zones, and a helper could be used in that case. But that is not true if the FS block device is a logical device provided by something like dm. E.g. if the FS mounts a zoned block device that is a part of a real disk split by dm-linear, then there is no sequential zone bitmap available, and the FS has to discover that by itself. Currently, the sequential zone bitmap is initialized in the scsi driver only. We could move that initialization to the block device layer at some point when the bdev is created and requests can be sent to the underlying dev, but before the bdev is exposed. Any suggestion of an appropriate place to do that ? I do not see any obvious path that works in all cases (real disks and dm). -- Damien Le Moal, Western Digital