The motivation and description are contained in the last patch in this set. Will copy paste it here for convenience:
In order to evaluate write amplification factor (WAF) within the storage stack it is important to know the number of bytes written to the controller. The existing SMART log value of Data Units Written is too coarse (given in units of 500 Kb) and so we add the SMART health information extended from the OCP specification (given in units of bytes). To accommodate different vendor specific specifications like OCP, we add a multiplexing function (nvme_vendor_specific_log) which will route to the different log functions based on arguments and log ids. We only return the OCP extended smart log when the command is 0xC0 and ocp has been turned on in the args. Though we add the whole nvme smart log extended structure, we only populate the physical_media_units_{read,written}, log_page_version and log_page_uuid. V1 changes: 1. I moved the ocp parameter from the namespace to the subsystem as it is defined there in the OCP specification 2. I now accumulate statistics from all namespaces and report them back on the extended log as per the spec. 3. I removed the default case in the switch in nvme_vendor_specific_log as it does not have any special function. Joel Granados (3): nvme: Move adjustment of data_units{read,written} nvme: Add ocp to the subsys nvme: Add physical writes/reads from OCP log hw/nvme/ctrl.c | 70 ++++++++++++++++++++++++++++++++++++++++---- hw/nvme/nvme.h | 1 + hw/nvme/subsys.c | 4 +-- include/block/nvme.h | 36 +++++++++++++++++++++++ 4 files changed, 103 insertions(+), 8 deletions(-) -- 2.30.2