From 4e99e81255d046e946111071ffc8bbe50e2f211c Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Thu, 29 Dec 2022 11:00:44 -0700 Subject: [PATCH] better nvme connect idempotency Signed-off-by: Travis Glenn Hansen --- src/utils/nvmeof.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/utils/nvmeof.js b/src/utils/nvmeof.js index 5147cd3..5e65622 100644 --- a/src/utils/nvmeof.js +++ b/src/utils/nvmeof.js @@ -107,7 +107,11 @@ class NVMEoF { try { await nvmeof.exec(nvmeof.options.paths.nvme, args); } catch (err) { - if (err.stderr && err.stderr.includes("already connnected")) { + if ( + err.stderr && + (err.stderr.includes("already connnected") || + err.stderr.includes("Operation already in progress")) + ) { // idempotent } else { throw err; @@ -258,10 +262,16 @@ class NVMEoF { const nvmeof = this; let result = await nvmeof.list(["-v"]); - return nvmeof.getResultSubsystems(result); + return nvmeof.getNormalizedSubsystems(result); } - async getResultSubsystems(result) { + /** + * used to normalize subsystem list/response across different versions of nvme-cli + * + * @param {*} result + * @returns + */ + async getNormalizedSubsystems(result) { let subsystems = []; for (let device of result.Devices) {