Feature #14686


nvme should use namespace GUID for devid if available

Added by Hans Rosenfeld over 1 year ago. Updated about 1 year ago.

driver - device drivers
Start date:
Due date:
% Done:


Estimated time:
Gerrit CR:
External Bug:


The nvme driver is currently ignoring the namespace GUID which NVMe 1.2 introduced. Many devices that support a NGUID do not set the EUI64, so the devid is constructed from vendor ID, model number, serial number and namespace ID.

As a first step towards full support for the namespace GUID, nvme should use it to create a devid.

Related issues

Related to illumos gate - Bug #15249: kern.notice vdev_disk_open: update devid from .. to ...New

Actions #1

Updated by Electric Monk over 1 year ago

  • Gerrit CR set to 2147
Actions #2

Updated by Joshua M. Clulow over 1 year ago

I think some combination of #10622, #10623, and #7119, is likely to make a shift in the devid for a ZFS pool device a non-event -- beyond a log message noting that the devid has changed.

That said, it would be good to confirm, during testing, a couple of cases:

  • that a mirrored root pool is still bootable; unlike single-vdev root pools, changes in the devices path of disks in a complex pool (mirrors, raidz, etc) are not tolerated by the fix for #7119, but I believe devid-only changes should not impact boot under any circumstance
  • that a non-boot pool (i.e., a second data pool other than the root pool) that is imported during boot via the cache file (i.e., it was not previously exported before reboot) survives across the change in devid as well

I think early boot ZFS pool things like that are probably the only things that end up using /etc/devices/devid_cache in any vaguely load-bearing fashion.

Actions #3

Updated by Hans Rosenfeld about 1 year ago

Testing: First I verified a system on a single-vdev root pool still boots with this change. As suggested by Josh, I also tested booting with a mirrored root pool, and with havin non-boot pool. Both cases worked as expected.

Note that after updating to #14686, going back to a previous BE only works if the previous BE has #14745. This is needed because the updated devid is stored in the vdev labels by ZFS, causing pool import problems on earlier versions.

Actions #4

Updated by Electric Monk about 1 year ago

  • Status changed from New to Closed
  • % Done changed from 0 to 100

git commit b8f43eb65c2ac2ff69cf1a69aabc90c27cdb859e

commit  b8f43eb65c2ac2ff69cf1a69aabc90c27cdb859e
Author: Hans Rosenfeld <>
Date:   2022-08-24T08:01:48.000Z

    14686 nvme should use namespace GUID for devid if available
    Reviewed by: Andrew Giles <>
    Reviewed by: Guy Morrogh <>
    Reviewed by: Robert Mustacchi <>
    Reviewed by: Toomas Soome <>
    Approved by: Dan McDonald <>

Actions #5

Updated by David Stes 9 months ago

  • Related to Bug #15249: kern.notice vdev_disk_open: update devid from .. to ... added

Also available in: Atom PDF