On Sep 29 11:15, Keith Busch wrote: > On Tue, Sep 29, 2020 at 08:00:04PM +0200, Klaus Jensen wrote: > > On Sep 29 10:29, Keith Busch wrote: > > > 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. > > > > > > > Oh dear - don't "spec" with me ;) > > > > NVMe v1.4 Section 7.3.1: > > > > An NVM Subsystem Reset is initiated when: > > * Main power is applied to the NVM subsystem; > > * A value of 4E564D64h ("NVMe") is written to the NSSR.NSSRC > > field; > > * Requested using a method defined in the NVMe Management > > Interface specification; or > > * A vendor specific event occurs. > > Okay. I wish the nvme twg would strip the changelog from the published > TPs. We have unhelpful statements like this in the ZNS spec: > > "Default active zones to transition to Closed state on power/controller > reset." > > > In the context of QEMU, "Main power" is tearing down QEMU and starting > > it from scratch. Just like on a "real" host, unbinding the driver, > > rebooting or shutting down the controller does not cause a subsystem > > reset (and does not cause the zones to change state). > > That can't be right. The ZNS spec says: > > The initial state of a zone state machine is set as a result of: > a) an NVM Subsystem Reset; or > b) all controllers in the NVM subsystem reporting Shutdown > processing complete ((i.e., 10b in the Shutdown Status (SHST) > register) > > So a CC.SHN had better cause an implicit transition of open zones to > their "initial" state since 'open' is not a valid initial state.
Oh snap; true, you got me there.
signature.asc
Description: PGP signature