hw/block/nvme: add smart_critical_warning property
commit4714791b66ae39bea6b6e3c3e84aaed8dcb005c7
authorzhenwei pi <pizhenwei@bytedance.com>
Fri, 15 Jan 2021 03:27:01 +0000 (15 11:27 +0800)
committerKlaus Jensen <k.jensen@samsung.com>
Mon, 8 Feb 2021 20:15:53 +0000 (8 21:15 +0100)
treea51153b89bdf15428ca9338242e55c20209ab240
parentc6d1b5c13bf937d3314f4bad596ced52f32106c5
hw/block/nvme: add smart_critical_warning property

There is a very low probability that hitting physical NVMe disk
hardware critical warning case, it's hard to write & test a monitor
agent service.

For debugging purposes, add a new 'smart_critical_warning' property
to emulate this situation.

The orignal version of this change is implemented by adding a fixed
property which could be initialized by QEMU command line. Suggested
by Philippe & Klaus, rework like current version.

Test with this patch:
1, change smart_critical_warning property for a running VM:
 #virsh qemu-monitor-command nvme-upstream '{ "execute": "qom-set",
  "arguments": { "path": "/machine/peripheral-anon/device[0]",
  "property": "smart_critical_warning", "value":16 } }'
2, run smartctl in guest
 #smartctl -H -l error /dev/nvme0n1

  === START OF SMART DATA SECTION ===
  SMART overall-health self-assessment test result: FAILED!
  - volatile memory backup device has failed

Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
hw/block/nvme.c
hw/block/nvme.h
include/block/nvme.h