From: Keith Busch Date: Thu, 21 Dec 2023 21:36:04 +0000 (-0800) Subject: Merge remote-tracking branch 'nvme/nvme-6.8' into nvme-6.8-merge-v3 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=refs%2Fheads%2Fnvme-6.8-merge;p=nvme.git Merge remote-tracking branch 'nvme/nvme-6.8' into nvme-6.8-merge-v3 --- 9b056d5835e288320e5a0b06a0917a4147958bd1 diff --cc drivers/nvme/host/core.c index 8ebdfd623e0f,d144d1acb09a..b5e9a9a798eb --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@@ -1903,10 -1899,9 +1912,10 @@@ static void nvme_update_disk_info(struc /* * The block layer can't support LBA sizes larger than the page size - * yet, so catch this early and don't allow block I/O. + * or smaller than a sector size yet, so catch this early and don't + * allow block I/O. */ - if (ns->lba_shift > PAGE_SHIFT || ns->lba_shift < SECTOR_SHIFT) { - if (head->lba_shift > PAGE_SHIFT) { ++ if (head->lba_shift > PAGE_SHIFT || head->lba_shift < SECTOR_SHIFT) { capacity = 0; bs = (1 << 9); } @@@ -2043,19 -2038,13 +2052,20 @@@ static int nvme_update_ns_info_block(st if (ret) return ret; + if (id->ncap == 0) { + /* namespace not allocated or attached */ + info->is_removed = true; + ret = -ENODEV; + goto error; + } + blk_mq_freeze_queue(ns->disk->queue); lbaf = nvme_lbaf_index(id->flbas); - ns->lba_shift = id->lbaf[lbaf].ds; + ns->head->lba_shift = id->lbaf[lbaf].ds; + ns->head->nuse = le64_to_cpu(id->nuse); nvme_set_queue_limits(ns->ctrl, ns->queue); - ret = nvme_configure_metadata(ns, id); + ret = nvme_configure_metadata(ns->ctrl, ns->head, id); if (ret < 0) { blk_mq_unfreeze_queue(ns->disk->queue); goto out;