nvme: allow duplicate controller if prior controller being deleted
PATCH 1/1 nvme: allow duplicate controller if prior controller being deleted
The current checks for whether a new controller request "matches" an existing controller ignores controller state and checks identity strings. There are cases where an existing controller may be in its last steps of deletion when they are "matched" by a new connection.
Change the behavior so that the new connection ignores controllers that are deleted.
--- drivers/nvme/host/fabrics.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/nvme/host/fabrics.h +3 -1
@@ -139,7 +139,9 @@ static inline bool nvmf_ctlr_matches_baseopts(struct nvme_ctrl *ctrl, struct nvmf_ctrl_options *opts) { - if (strcmp(opts->subsysnqn, ctrl->opts->subsysnqn) || +if (ctrl->state ==NVME_CTRL_DELETING || + ctrl->state ==NVME_CTRL_DEAD || +strcmp (opts->subsysnqn, ctrl->opts->subsysnqn) ||strcmp (opts->host->nqn, ctrl->opts->host->nqn) ||memcmp (&opts->host->id, &ctrl->opts->host->id,sizeof (uuid_t)))return false;
Signature · 1 line
2.13.1
Christoph Hellwig
AppliedPATCH 1/1 nvme: allow duplicate controller if prior controller being deleted
Quoted 9 lines · James Smart
The current checks for whether a new controller request "matches" an existing controller ignores controller state and checks identity strings. There are cases where an existing controller may be in its last steps of deletion when they are "matched" by a new connection.
Change the behavior so that the new connection ignores controllers that are deleted.
Signed-off-by James Smart <james.smart at broadcom.com>
Applied to nvme-4.18.