On Tue, Sep 29, 2020 at 12:46:33PM +0200, Klaus Jensen wrote: > It is unmistakably clear that you are invalidating my arguments about > portability and endianness issues by suggesting that we just remove > persistent state and deal with it later, but persistence is the killer > feature that sets the QEMU emulated device apart from other emulation > options. It is not about using emulation in production (because yeah, > why would you?), but persistence is what makes it possible to develop > and test "zoned FTLs" or something that requires recovery at power up. > This is what allows testing of how your host software deals with opened > zones being transitioned to FULL on power up and the persistent tracking > of LBA allocation (in my series) can be used to properly test error > recovery if you lost state in the app.
Hold up -- why does an OPEN zone transition to FULL on power up? The spec suggests it should be CLOSED. The spec does appear to support going to FULL on a NVM Subsystem Reset, though. Actually, now that I'm looking at this part of the spec, these implicit transitions seem a bit less clear than I expected. I'm not sure it's clear enough to evaluate qemu's compliance right now. But I don't see what testing these transitions has to do with having a persistent state. You can reboot your VM without tearing down the running QEMU instance. You can also unbind the driver or shutdown the controller within the running operating system. That should make those implicit state transitions reachable in order to exercise your FTL's recovery. I agree the persistent state provides conveniences for developers. I just don't want to gate ZNS enabling on it either since the core design doesn't depend on it.