+3
−0
+1
−0
+128
−0
Loading
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