On 2020/04/08 10:08, Vincent Fu wrote: > On 4/7/20 9:00 PM, Damien Le Moal wrote: >> On 2020/04/08 9:07, Vincent Fu wrote: >>> On 4/7/20 4:48 PM, Jens Axboe wrote: >>> > On 4/6/20 6:58 PM, Damien Le Moal wrote: >>> >> This series extend support for zonemode=zbd beyond Linux only and as is >>> >> allows the use of this zonemode on any platform with regular block >>> >> devices. The same also applies to Linux systems that do not have zoned >>> >> block device support (e.g. enterprise distributions with kernels version >>> >> lower than 4.10). For zoned block device support, Linux implementation >>> >> is preserved. Other OS specific code can be added with automatic >>> >> configuration with the configure script to add zoned block device >>> >> support. >>> >> >>> >> Additionally, ioengine operations are updated to allow an IO engine to >>> >> provide implementations for the zone operations needed to support zoned >>> >> block devices. This is convenient for cases where the system OS/kernel >>> >> does not have any support implementation available. >>> >> >>> >> Finally, the libzbc IO engine is introduced to support zoned block >>> >> devices on Linux distributions without native kernel level support (E.g. >>> >> RedHat/CentOS). SImilarly to the sg ioengine, this new IO engine usesi >>> >> passthrough commands implemeted by libzbc API to directly access SMR >>> >> drives. >>> > >>> > Looks ok to me, I've applied it. But please send a job file that uses >>> > it as well to put in examples/, thanks. >>> > >>> >>> The AppVeyor Windows builds fail due to the zbd changes: >>> >>> https://ci.appveyor.com/project/axboe/fio/builds/32024485 >>> >>> configure reports: >>> >>> Zoned block device support no >>> libzbc engine no >>> >>> but nevertheless an attempt is made to build the zbd code. >> >> With the changes, zbd.c should be compiled for any OS to enable zonemode=zbd >> with regular block devices. But oslib/linux-blkzoned.c should not be compiled. >> What is the compilation error ? Is it something in zbd.c ? >> I do not have any Windows machine to test builds. >> >> > > This is the error: > > CC zbd.o > In file included from zbd.c:10:0: > os/windows/posix/include/dirent.h:8:2: error: unknown type name ‘ino_t’ > ino_t d_ino; /* File serial number */ zbd.c includes dirent.h which I think result in this error for windows. But zbd.c actually does not use d_ino anywhere and removing the dirent.h include from it is fine (just checked on Linux). > ^~~~~ > zbd.c: In function ‘zbd_unaligned_write’: > zbd.c:1242:7: error: ‘EREMOTEIO’ undeclared (first use in this function) > case EREMOTEIO: > ^~~~~~~~~ > zbd.c:1242:7: note: each undeclared identifier is reported only once for > each function it appears in OK. This one should be easy to fix. > > Here is the automated Windows build: > > https://ci.appveyor.com/project/axboe/fio/builds/32024485/job/wmff344x9q4j09iq > > The macOS build now also fails with a similar error: > > https://travis-ci.org/github/axboe/fio/jobs/672273652 Sending a patch right away. If you could test builds with it, that would be great. Thanks ! -- Damien Le Moal Western Digital Research