From 77f22985b0c01041330f268f8b6589663dd54aea Mon Sep 17 00:00:00 2001 From: Jeff Lien Date: Fri, 18 Oct 2019 13:09:21 -0500 Subject: [PATCH] [NVMe-CLI] Updates and fixes to WDC plugin command vs-internal-log for the SN340 drive. --- plugins/wdc/wdc-nvme.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/plugins/wdc/wdc-nvme.c b/plugins/wdc/wdc-nvme.c index 25ab1154..8ea0a8f9 100644 --- a/plugins/wdc/wdc-nvme.c +++ b/plugins/wdc/wdc-nvme.c @@ -1917,7 +1917,7 @@ static int wdc_vs_internal_fw_log(int argc, char **argv, struct command *command OPT_FILE("output-file", 'o', &cfg.file, file), OPT_UINT("transfer-size", 's', &cfg.xfer_size, size), OPT_UINT("data-area", 'd', &cfg.data_area, data_area), - OPT_UINT("file-size", 'f', &cfg.file_size, file_size), + OPT_LONG("file-size", 'f', &cfg.file_size, file_size), OPT_LONG("offset", 't', &cfg.offset, offset), OPT_FLAG("verbose", 'v', &cfg.verbose, verbose), OPT_END() @@ -1973,8 +1973,12 @@ static int wdc_vs_internal_fw_log(int argc, char **argv, struct command *command capabilities = wdc_get_drive_capabilities(fd); if ((capabilities & WDC_DRIVE_CAP_INTERNAL_LOG) == WDC_DRIVE_CAP_INTERNAL_LOG) return wdc_do_cap_diag(fd, f, xfer_size); - if ((capabilities & WDC_DRIVE_CAP_SN340_DUI) == WDC_DRIVE_CAP_SN340_DUI) + if ((capabilities & WDC_DRIVE_CAP_SN340_DUI) == WDC_DRIVE_CAP_SN340_DUI) { + /* FW requirement - xfer size must be 500k for data area 4 */ + if (cfg.data_area >= 4) + xfer_size = 0x80000; return wdc_do_cap_dui(fd, f, xfer_size, cfg.data_area, cfg.verbose, cfg.file_size, cfg.offset); + } if ((capabilities & WDC_DRIVE_CAP_DUI_DATA) == WDC_DRIVE_CAP_DUI_DATA) return wdc_do_cap_dui(fd, f, xfer_size, WDC_NVME_DUI_MAX_DATA_AREA, cfg.verbose, 0, 0); if ((capabilities & WDC_SN730B_CAP_VUC_LOG) == WDC_SN730B_CAP_VUC_LOG) -- 2.50.1