Spdk/scripts
Shuhei Matsumoto e33ae4a6d5 bdev/nvme: Count number of NVMe errors per type or code
Error counters for NVMe error was added in the generic bdev layer but
we want to know more detailed information for some use cases.

Add NVMe error counters per type and per code as module specific
statistics.

For status codes, the first idea was to have different named member
for each status code value. However, it was bad and too hard to test,
review, and maintain.

Instead, we have just two dimensional uint32_t arrays, and increment
one of these uint32_t values based on the status code type and status
code. Then, when dump the JSON, we use spdk_nvme_cpl_get_status_string()
and spdk_nvme_cpl_get_status_type_string().

This idea has one potential downside. This idea consumes 4 (types) *
256 (codes) * 4 (counter) = 4KB per NVMe bdev. We can make this smarter
if memory allocation is a problem. Hence we add an option
nvme_error_stat to enable this feature only if the user requests.

Additionally, the string returned by spdk_nvme_cpl_get_status_string()
or spdk_nvme_cpl_get_status_type_string() has uppercases, spaces, and
hyphens. These should not be included in JSON strings. Hence, convert
these via spdk_strcpy_replace().

Signed-off-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
Change-Id: I07b07621e777bdf6556b95054abbbb65e5f9ea3e
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15370
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
2023-01-10 13:12:05 +00:00
..
bash-completion trace: update trace help inside SPDK target 2022-09-27 19:41:17 +00:00
bpf rpc: fix python style 2022-12-21 09:32:24 +00:00
ceph scripts/ceph: Make sure osd_class_dir is an absolute path 2022-12-29 08:37:45 +00:00
env_dpdk env_dpdk: add script for comparing DPDK PCI API 2022-12-16 09:27:11 +00:00
perf misc: Fix spelling mistakes 2022-12-09 08:16:18 +00:00
pkgdep scripts/pkgdep: Install liburing's .pc to known directory 2022-12-21 09:33:27 +00:00
vagrant vagrant/create_vbox: add fedora37 2022-12-08 12:56:18 +00:00
ar-xnvme-fixer add (c) and SPDX header to bash files as needed 2022-11-29 08:27:51 +00:00
arm_cross_compile.sh add (c) and SPDX header to bash files as needed 2022-11-29 08:27:51 +00:00
bpftrace.sh add (c) and SPDX header to bash files as needed 2022-11-29 08:27:51 +00:00
check_format.sh check_format: Add checker for the SPDX-license 2022-11-29 08:27:51 +00:00
common.sh add (c) and SPDX header to bash files as needed 2022-11-29 08:27:51 +00:00
core-collector.sh add (c) and SPDX header to bash files as needed 2022-11-29 08:27:51 +00:00
detect_cc.sh add (c) and SPDX header to bash files as needed 2022-11-29 08:27:51 +00:00
dpdk_mem_info.py add (c) and SPDX header to python files as needed 2022-11-10 08:28:53 +00:00
eofnl add (c) and SPDX header to bash files as needed 2022-11-29 08:27:51 +00:00
fio-wrapper add (c) and SPDX header to bash files as needed 2022-11-29 08:27:51 +00:00
gdb_macros.py scripts: gdb macros should allow missing symbols 2022-12-21 09:32:24 +00:00
gen_ftl.sh add (c) and SPDX header to bash files as needed 2022-11-29 08:27:51 +00:00
gen_nvme.sh add (c) and SPDX header to bash files as needed 2022-11-29 08:27:51 +00:00
genconfig.py add (c) and SPDX header to python files as needed 2022-11-10 08:28:53 +00:00
get-pmr scripts/get-pmr: Update comment, remove unused vars 2023-01-10 13:04:01 +00:00
histogram.py add (c) and SPDX header to python files as needed 2022-11-10 08:28:53 +00:00
iostat.py add (c) and SPDX header to python files as needed 2022-11-10 08:28:53 +00:00
lspci add (c) and SPDX header to bash files as needed 2022-11-29 08:27:51 +00:00
pc_libs.sh add (c) and SPDX header to bash files as needed 2022-11-29 08:27:51 +00:00
pc_modules.sh add (c) and SPDX header to bash files as needed 2022-11-29 08:27:51 +00:00
pc.sh add (c) and SPDX header to bash files as needed 2022-11-29 08:27:51 +00:00
pkgdep.sh add (c) and SPDX header to bash files as needed 2022-11-29 08:27:51 +00:00
posix.txt build: Automatically detect use of POSIX includes 2017-05-08 13:20:37 -07:00
prep_benchmarks.sh add (c) and SPDX header to bash files as needed 2022-11-29 08:27:51 +00:00
qat_setup.sh scripts/qat_setup: Remove VFs' pci id from the target bind driver 2022-12-08 12:56:56 +00:00
rpc_http_proxy.py add (c) and SPDX header to python files as needed 2022-11-10 08:28:53 +00:00
rpc.py bdev/nvme: Count number of NVMe errors per type or code 2023-01-10 13:12:05 +00:00
rxe_cfg_small.sh add (c) and SPDX header to bash files as needed 2022-11-29 08:27:51 +00:00
setup.sh scripts/setup: Stop checking for broken uio_pci_generic driver 2022-12-14 08:03:17 +00:00
sma-client.py add (c) and SPDX header to python files as needed 2022-11-10 08:28:53 +00:00
sma.py add (c) and SPDX header to python files as needed 2022-11-10 08:28:53 +00:00
spdk-gpt.py add (c) and SPDX header to python files as needed 2022-11-10 08:28:53 +00:00
spdkcli.py add (c) and SPDX header to python files as needed 2022-11-10 08:28:53 +00:00
spdx.sh add (c) and SPDX header to bash files as needed 2022-11-29 08:27:51 +00:00
sync_dev_uevents.sh add (c) and SPDX header to bash files as needed 2022-11-29 08:27:51 +00:00