** Description changed:

- nvme-cli 2.8-1build2 (in Ubuntu/Noble) shows wrong drive sizes. Compare
- the following two.
+ [ 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@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@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  
+ 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 
- 
+ /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                                                   
+ # 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 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)
+   # 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.
+   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
+   # 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
+   # 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
-        }
-      ]
-    }
+   # 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.

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

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

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


-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to