SHA256
1
0
forked from pool/parted

- Detect NVMe devices and fix the nvme partition naming scheme

(bsc#982169)
  - libparted-Add-support-for-NVMe-devices.patch
  - libparted-fix-nvme-partition-naming.patch

OBS-URL: https://build.opensuse.org/package/show/Base:System/parted?expand=0&rev=121
This commit is contained in:
Petr Uzel 2016-06-14 11:11:50 +00:00 committed by Git OBS Bridge
parent 68397a67d2
commit b2e8130d36
4 changed files with 129 additions and 0 deletions

View File

@ -0,0 +1,99 @@
From 02bb5fe15b89b0a0ffd4019c9d04f16c0af29d46 Mon Sep 17 00:00:00 2001
From: Petr Uzel <petr.uzel@suse.cz>
Date: Tue, 14 Jun 2016 10:41:18 +0200
Subject: [PATCH] Add support for NVMe devices
Recognize NVMe Devices, so "parted -s /dev/nvme0n1" now prints
"NVMe Device (nvme)" instead of "Model: Unknown (unknown)".
In order for a device to be recognized as NVMe, it has to
have a 'blkext' major number. But since this major can be
used also by other device types, we also check the device
path contains 'nvme' as a substring.
* NEWS: Mention the change
* include/parted/device.h.in(PedDeviceType): Add PED_DEVICE_NVME
* libparted/arch/linux.c(BLKEXT_MAJOR): New define.
* libparted/arch/linux.c(_is_blkext_major): New function.
* libparted/arch/linux.c(_device_probe_type): Recognize NVMe devices.
* libparted/arch/linux.c(linux_new): Handle NVMe devices.
* parted/parted.c(do_print): Add "nvme" to list of transports.
---
include/parted/device.in.h | 3 ++-
libparted/arch/linux.c | 14 ++++++++++++++
parted/parted.c | 2 +-
3 files changed, 17 insertions(+), 2 deletions(-)
Index: parted-3.2/include/parted/device.in.h
===================================================================
--- parted-3.2.orig/include/parted/device.in.h
+++ parted-3.2/include/parted/device.in.h
@@ -49,7 +49,8 @@ typedef enum {
PED_DEVICE_VIRTBLK = 15,
PED_DEVICE_AOE = 16,
PED_DEVICE_MD = 17,
- PED_DEVICE_LOOP = 18
+ PED_DEVICE_LOOP = 18,
+ PED_DEVICE_NVME = 19
} PedDeviceType;
typedef struct _PedDevice PedDevice;
Index: parted-3.2/libparted/arch/linux.c
===================================================================
--- parted-3.2.orig/libparted/arch/linux.c
+++ parted-3.2/libparted/arch/linux.c
@@ -279,6 +279,7 @@ struct blkdev_ioctl_param {
#define SDMMC_MAJOR 179
#define LOOP_MAJOR 7
#define MD_MAJOR 9
+#define BLKEXT_MAJOR 259
#define SCSI_BLK_MAJOR(M) ( \
(M) == SCSI_DISK0_MAJOR \
@@ -463,6 +464,12 @@ _ensure_read_write (PedDevice *dev)
_flush_cache (dev);
}
+static int
+_is_blkext_major (int major)
+{
+ return _major_type_in_devices (major, "blkext");
+}
+
#ifdef ENABLE_DEVICE_MAPPER
static int
_dm_task_run_wait (struct dm_task *task, uint32_t cookie)
@@ -714,6 +721,8 @@ _device_probe_type (PedDevice* dev)
dev->type = PED_DEVICE_LOOP;
} else if (dev_major == MD_MAJOR) {
dev->type = PED_DEVICE_MD;
+ } else if (_is_blkext_major(dev_major) && dev->path && strstr(dev->path, "nvme")) {
+ dev->type = PED_DEVICE_NVME;
} else {
dev->type = PED_DEVICE_UNKNOWN;
}
@@ -1473,6 +1482,11 @@ linux_new (const char* path)
goto error_free_arch_specific;
break;
+ case PED_DEVICE_NVME:
+ if (!init_generic (dev, _("NVMe Device")))
+ goto error_free_arch_specific;
+ break;
+
case PED_DEVICE_ATARAID:
if (!init_generic (dev, _("ATARAID Controller")))
goto error_free_arch_specific;
Index: parted-3.2/parted/parted.c
===================================================================
--- parted-3.2.orig/parted/parted.c
+++ parted-3.2/parted/parted.c
@@ -1035,7 +1035,7 @@ _print_disk_info (const PedDevice *dev,
"cpqarray", "file", "ataraid", "i2o",
"ubd", "dasd", "viodasd", "sx8", "dm",
"xvd", "sd/mmc", "virtblk", "aoe",
- "md", "loopback"};
+ "md", "loopback", "nvme"};
char* start = ped_unit_format (dev, 0);
PedUnit default_unit = ped_unit_get_default ();

View File

@ -0,0 +1,16 @@
---
libparted/arch/linux.c | 1 +
1 file changed, 1 insertion(+)
Index: parted-3.2/libparted/arch/linux.c
===================================================================
--- parted-3.2.orig/libparted/arch/linux.c
+++ parted-3.2/libparted/arch/linux.c
@@ -2411,6 +2411,7 @@ _device_get_part_path (PedDevice const *
} else {
const char *p;
if (dev->type == PED_DEVICE_CPQARRAY ||
+ dev->type == PED_DEVICE_NVME ||
dev->type == PED_DEVICE_SDMMC)
p = "p";
else if (dev->type == PED_DEVICE_DM)

View File

@ -1,3 +1,11 @@
-------------------------------------------------------------------
Tue Jun 14 11:09:20 UTC 2016 - puzel@suse.com
- Detect NVMe devices and fix the nvme partition naming scheme
(bsc#982169)
- libparted-Add-support-for-NVMe-devices.patch
- libparted-fix-nvme-partition-naming.patch
------------------------------------------------------------------- -------------------------------------------------------------------
Thu May 26 10:46:38 UTC 2016 - puzel@suse.com Thu May 26 10:46:38 UTC 2016 - puzel@suse.com

View File

@ -59,6 +59,10 @@ Patch31: parted-do-not-warn-when-shrinking-in-script-mode.patch
Patch32: libparted-Use-read-only-when-probing-devices-on-linu.patch Patch32: libparted-Use-read-only-when-probing-devices-on-linu.patch
Patch33: libparted-open-the-device-RO-and-lazily-switch-to-RW.patch Patch33: libparted-open-the-device-RO-and-lazily-switch-to-RW.patch
Patch34: parted-implement-wipesignatures-option.patch Patch34: parted-implement-wipesignatures-option.patch
# bsc#982169
Patch35: libparted-Add-support-for-NVMe-devices.patch
Patch36: libparted-fix-nvme-partition-naming.patch
Patch100: parted-fatresize-autoconf.patch Patch100: parted-fatresize-autoconf.patch
BuildRequires: check-devel BuildRequires: check-devel
BuildRequires: device-mapper-devel >= 1.02.33 BuildRequires: device-mapper-devel >= 1.02.33
@ -136,6 +140,8 @@ to develop applications that require these.
%patch32 -p1 %patch32 -p1
%patch33 -p1 %patch33 -p1
%patch34 -p1 %patch34 -p1
%patch35 -p1
%patch36 -p1
%patch100 -p1 %patch100 -p1
%build %build