On Mon, Jan 07, 2019 at 07:08:49PM -0800, Andrey Smirnov wrote: > ctrl->cntlid will already be initialized from id->cntlid for > non-NVME_F_FABRICS controllers few lines below. For NVME_F_FABRICS > controllers this field should already be initialized, otherwise the > check > > if (ctrl->cntlid != le16_to_cpu(id->cntlid)) > > below will always be a no-op.
Yeah, this bug defeats the fabrics sanity check. Good catch. Reviewed-by: Keith Busch <keith.bu...@intel.com> > diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c > index 2e65be8b1387..1ec87b30fad1 100644 > --- a/drivers/nvme/host/core.c > +++ b/drivers/nvme/host/core.c > @@ -2397,7 +2397,6 @@ int nvme_init_identify(struct nvme_ctrl *ctrl) > ctrl->oaes = le32_to_cpu(id->oaes); > atomic_set(&ctrl->abort_limit, id->acl + 1); > ctrl->vwc = id->vwc; > - ctrl->cntlid = le16_to_cpup(&id->cntlid); > if (id->mdts) > max_hw_sectors = 1 << (id->mdts + page_shift - 9); > else > --