On 5/6/21 7:18 AM, Niklas Cassel wrote: > From: Niklas Cassel <niklas.cassel@xxxxxxx> > > A common problem is that users upgrade their kernel to support NVMe ZNS > devices, however, they still use the kernel uapi headers provided by their > distro. > > This means that even if the kernel will populate the zone capacity fields > for each zone in the zone report returned by the ioctl, fio will not know > how to interpret that data. > > This leads to fio writing past the zone capacity, which will lead to > I/O errors. > > It is not trivial for a user to realize that the kernel uapi headers > provided by their distro is the reason for these I/O errors. > > In order to make it easier for these users, provide a copy of the current > zoned block device kernel uapi structs. > > If the kernel uapi headers installed on the system are too old to support > zone capacity, use the locally defined structs instead. > If the installed headers are new enough to support zone capacity, use the > installed headers. > > This way, fio will always be able to handle zone capacity (if the kernel > supports it). At the same time, we will not redefine any structs from the > installed headers if they are newer than our locally defined structs. Applied, thanks. -- Jens Axboe