Re: [PATCH 4/4] nvme: check that EUI/GUID/UUID are globally unique

Christoph Hellwig
2022-06-08T07:53:04Z

On Mon, Jun 06, 2022 at 08:35:39PM +0000, Alan Adamson wrote:
> nvme driver changes:

Thanks!

>
> ret = nvme_global_check_duplicate_ids(ctrl->subsys, ids);
> if (ret) {
> - dev_err(ctrl->device,
> - "globally duplicate IDs for nsid %d\n", nsid);
> - return ret;
> + if (ctrl->opts && ctrl->opts->clear_ids) {
> + uuid_copy(&ids->uuid, &uuid_null);
> + memset(&ids->nguid, 0, sizeof(ids->nguid));
> + memset(&ids->eui64, 0, sizeof(ids->eui64));
> + } else {
> + dev_err(ctrl->device,
> + "globally duplicate IDs for nsid %d\n", nsid);
> + return ret;
> + }

I don't think this is the right place to clear the reported IDs.
The proper place would be in the target code in
nvmet_passthru_override_id_ns and a new
nvmet_passthru_override_id_ns_desc like it. Otherwise we only catch
the kernel driver uses and not other users of the IDs.

> @@ -593,6 +595,8 @@ static int nvmf_parse_options(struct nvmf_ctrl_options *opts,
> }
> kfree(opts->transport);
> opts->transport = p;
> + if (!strcmp(p, "loop"))
> + opts->clear_ids = true;

And maybe add a comment here.