[Bug 2079836] Update Released

Andreas Hasenack 2079836 at bugs.launchpad.net
Wed Feb 26 20:34:22 UTC 2025


The verification of the Stable Release Update for libnvme has completed
successfully and the package is now being released to -updates.
Subsequently, the Ubuntu Stable Release Updates Team is being
unsubscribed and will not receive messages about this bug report.  In
the event that you encounter a regression using the package from
-updates please report a new bug using ubuntu-bug and tag the bug report
regression-update so we can easily find any regressions.

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to nvme-cli in Ubuntu.
https://bugs.launchpad.net/bugs/2079836

Title:
  libnvme reports incorrect LBA count on drives with 4k sectors

Status in nvme-utils:
  Fix Released
Status in libnvme package in Ubuntu:
  Fix Released
Status in nvme-cli package in Ubuntu:
  Invalid
Status in libnvme source package in Noble:
  Fix Committed
Status in nvme-cli source package in Noble:
  Invalid

Bug description:
  [ Impact ]
   * libnvme reports incorrect lba_count, causing nvme-cli to show wrong drive sizes

  [ Test Plan ]
   * Running `nvme list` on a system with a 4k sector drive will report different
     drive sizes:

  halves at rotom:~$ nvme list
  Node                  Generic               SN                   Model                                    Namespace  Usage                      Format           F
  --------------------- --------------------- -------------------- ---------------------------------------- ---------- -------------------------- ---------------- -
  /dev/nvme0n1          /dev/ng0n1            S4CBNA0N701386       SAMSUNG MZPLL1T6HAJQ-00005               0x1          1.60  TB /  12.80  TB      4 KiB +  0 B   G
  /dev/nvme1n1          /dev/ng1n1            S4CBNA0N701397       SAMSUNG MZPLL1T6HAJQ-00005               0x1          1.60  TB /   1.60  TB    512   B +  0 B   G

  On the test above, there are two NVMe drives present of the exact same
  model. One of them is formatted with 4k sectors, so the total drive size is
  reported incorrectly. After the patch, both drives have the same (correct) total
  size:

  halves at rotom:~$ nvme list
  Node                  Generic               SN                   Model                                    Namespace  Usage                      Format           FW Rev
  --------------------- --------------------- -------------------- ---------------------------------------- ---------- -------------------------- ---------------- --------
  /dev/nvme0n1          /dev/ng0n1            S4CBNA0N701386       SAMSUNG MZPLL1T6HAJQ-00005               0x1          1.60  TB /   1.60  TB      4 KiB +  0 B   GPJA2B3Q
  /dev/nvme1n1          /dev/ng1n1            S4CBNA0N701397       SAMSUNG MZPLL1T6HAJQ-00005               0x1          1.60  TB /   1.60  TB    512   B +  0 B   GPJA2B3Q

  [ Where problems could occur ]
   * lba_count will be recalculated using proper SECTOR_SHIFT information, so this
     could "change" apparent drive sizes
   * partitions and namespace information could be changed or be incorrect due to
     the now correct LBA size calculation

  [ Other info ]
   * this is caused by libnvme not calculating lba_count using proper SECTOR_SHIFT
     on 4k drives
   * kernel reports NVMe sizes in 512 bytes, so this issue doesn't happen on
     drives formatted using regular 512b sector size

  
  --
  [ Original Description ]
  nvme-cli 2.8-1build2 (in Ubuntu/Noble) shows wrong drive sizes. Compare the following two.

  1.16.3 (Ubuntu/Jammy) output:

  # nvme list
  Node                  SN                   Model                                    Namespace Usage                      Format           FW Rev
  --------------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
  /dev/nvme0n1          82xxxxxxxxxx         Kxxxxxxx1T92                             1           0.00   B /   1.92  TB      4 KiB +  0 B   0106
  /dev/nvme1n1          23xxxxxxxxxx         Micron_7xxx_Mxxxxxx960TFR                1           3.60  GB / 960.20  GB      4 KiB +  0 B   E2MU200

  2.8.2 (Ubuntu/Noble) output:

  # nvme list
  Node                  Generic               SN                   Model                                    Namespace  Usage                      Format           FW Rev··
  --------------------- --------------------- -------------------- ---------------------------------------- ---------- -------------------------- ---------------- --------
  /dev/nvme0n1          /dev/ng0n1            82xxxxxxxxxx         Kxxxxxxx1T92                             0x1          0.00   B /  15.36  TB      4 KiB +  0 B   0106
  /dev/nvme1n1          /dev/ng1n1            23xxxxxxxxxx         Micron_7xxx_Mxxxxxx960TFR                0x1          3.54  GB /   7.68  TB      4 KiB +  0 B   E2MU200

  The difference is this: 1.92  TB vs 15.36  TB, and 960.20  GB vs 7.68
  TB.

  The drives did not suddenly get bigger, but the problem is described here:
  https://github.com/linux-nvme/nvme-cli/issues/2260
  And fixed here:
  https://github.com/linux-nvme/libnvme/pull/803/commits/00efe8364b0a

  This fix is included in:
  https://github.com/linux-nvme/libnvme/releases/tag/v1.9

  That is not available in the 2.8 version:

    # nvme --version
    nvme version 2.8 (git 2.8)
    libnvme version 1.8 (git 1.8)

  But it should be in the Oracular 2.10 one:

    nvme-cli (2.10-1) sid; urgency=medium
    [...]
      * Bumping libnvme build-depends to 1.10.

  Suggested patch fixes things, as can be seen here:

    # nvme list -o json | grep -vE 'ModelNumber|SerialNumber' >old
    (switch to 0osso0 patched build)
    # nvme list -o json | grep -vE 'ModelNumber|SerialNumber' >new

    # apt-cache policy libnvme1t64
    libnvme1t64:
      Installed: 1.8-3build1+0osso0
      Candidate: 1.8-3build1+0osso0
      Version table:
     *** 1.8-3build1+0osso0 500
            500 http://ppa.osso.nl/ubuntu noble/osso amd64 Packages
            100 /var/lib/dpkg/status
         1.8-3build1 500
            500 http://apt.osso.nl/ubuntu noble/main amd64 Packages

    # diff -U1000 old new
    --- old	2024-09-06 14:03:36.981330913 +0000
    +++ new	2024-09-06 14:03:10.680072465 +0000
    @@ -1,24 +1,24 @@
     {
       "Devices":[
         {
           "NameSpace":1,
           "DevicePath":"/dev/nvme1n1",
           "GenericPath":"/dev/ng1n1",
           "Firmware":"E2MU200",
           "UsedBytes":3596890112,
    -      "MaximumLBA":1875385008,
    -      "PhysicalSize":7681576992768,
    +      "MaximumLBA":234423126,
    +      "PhysicalSize":960197124096,
           "SectorSize":4096
         },
         {
           "NameSpace":1,
           "DevicePath":"/dev/nvme0n1",
           "GenericPath":"/dev/ng0n1",
           "Firmware":"0106",
           "UsedBytes":0,
    -      "MaximumLBA":3750748848,
    -      "PhysicalSize":15363067281408,
    +      "MaximumLBA":468843606,
    +      "PhysicalSize":1920383410176,
           "SectorSize":4096
         }
       ]
     }

  Patch 00efe8364b0.patch is attached.

  Summarizing:

  ubuntu/jammy - not affected
  ubuntu/noble - affected but fixed by 00efe8364b0.patch
  ubuntu/oracular - not affected

  Cheers,
  Walter Doekes
  OSSO B.V.

To manage notifications about this bug go to:
https://bugs.launchpad.net/nvme-utils/+bug/2079836/+subscriptions




More information about the foundations-bugs mailing list