> -----Original Message----- > From: Alexey Dobriyan <adobriyan@xxxxxxxxx> > Sent: Friday, August 21, 2020 1:07 PM > To: Dmitry Fomichev <Dmitry.Fomichev@xxxxxxx> > Cc: fio@xxxxxxxxxxxxxxx > Subject: Re: [PATCH] zbd: remove reset_zone flag from fio_zone_info > > On Wed, Aug 19, 2020 at 07:35:03PM +0000, Dmitry Fomichev wrote: > > > > > > > -----Original Message----- > > > From: Alexey Dobriyan <adobriyan@xxxxxxxxx> > > > Sent: Wednesday, August 19, 2020 8:56 AM > > > To: Dmitry Fomichev <Dmitry.Fomichev@xxxxxxx> > > > Cc: fio@xxxxxxxxxxxxxxx > > > Subject: Re: [PATCH] zbd: remove reset_zone flag from fio_zone_info > > > > > > > The reset_zone flag that is defined in fio_zone_info structure is > > > > only referenced in zbd_adjust_block() function. Convert this flag > > > > to a local variable and save some room in zbd_info array which can > > > > be pretty large when running fio against high capacity zoned devices. > > > > > > This flag should be kept. > > > > > > Test can crash or be interrupted leaving hw in indeterminate state, > > > it must be restarted from clean state. Or test can be precondition and > > > zone should not be reset. > > > > This is beyond the scope of fio. Any preconditioning of zones is done > > by external scripts that have no access to this flag. Tools like blkzone, > > libzbc or nvme-cli are typically used to precondition zones before > > testing and to analyze zone state after test runs. > > If it is a matter of policy that fio doesn't do preconditioning, > then the patch is OK. > > We do preconditioning in fio, it is neat: > * don't need external programs > * everything inside one job file > * not a lot of code to add > > But to do this, flag must live in "struct fio_zone_info". > > [zra] > zone_reset_all=1 The way I understand this, this option makes ZBD code to set the reset_zone flag for all zones during init. This will force zone reset before the first write to a zone. This indeed is a neat idea and this feature looks to be pretty lightweight as you said. > zone_finish_all=1 How does this option work? Seems like you have added a new finish_zone flag and you finish every zone for which the flag is set instead of performing the first write to the zone... > rw=write > > [pre] > stonewall > zone_reset_all=0 > zone_finish_all=0 > job_max_open_zones=... > rw=write > ... > > [j] > stonewall > zone_reset_all=0 > zone_finish_all=0 > rw=randread > ... I guess we can hold off with removing the reset_zone flag if you are planning to send the patch for this. Dmitry