Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Step:FrontRunner
parted.14698
libparted-Add-support-for-RAM-drives.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File libparted-Add-support-for-RAM-drives.patch of Package parted.14698
From: Sebastian Parschauer <sparschauer@suse.de> Date: Tue, 14 Mar 2017 16:40:00 +0100 Subject: Add support for RAM drives References: bsc#1006834 Patch-mainline: v3.3 Git-commit: 21131f62c6f508a5d0c080e025cf7db5df43fc7d Recognize RAM drives, so "parted -s /dev/ram0 p" now prints "RAM Drive (brd)" instead of "Model: Unknown (unknown)". In order for a device to be recognized as RAM drive, it has to have major number 1. Also the BLKFLSBUF ioctl shouldn't be used on RAM drives as it is used to zero the device. * NEWS: Mention the change * include/parted/device.h.in(PedDeviceType): Add PED_DEVICE_RAM. * libparted/arch/linux.c(RAM_MAJOR): New define. * libparted/arch/linux.c(_device_probe_type): Recognize RAM drives. * libparted/arch/linux.c(linux_new): Handle RAM drives. * libparted/arch/linux.c(_flush_cache): Skip RAM drives. * parted/parted.c(do_print): Add "brd" to list of transports. Signed-off-by: Sebastian Parschauer <sparschauer@suse.de> --- include/parted/device.in.h | 3 ++- libparted/arch/linux.c | 12 ++++++++++-- parted/parted.c | 2 +- 3 files changed, 13 insertions(+), 4 deletions(-) --- a/include/parted/device.in.h +++ b/include/parted/device.in.h @@ -50,7 +50,8 @@ typedef enum { PED_DEVICE_AOE = 16, PED_DEVICE_MD = 17, PED_DEVICE_LOOP = 18, - PED_DEVICE_NVME = 19 + PED_DEVICE_NVME = 19, + PED_DEVICE_RAM = 20 } PedDeviceType; typedef struct _PedDevice PedDevice; --- a/libparted/arch/linux.c +++ b/libparted/arch/linux.c @@ -280,6 +280,7 @@ struct blkdev_ioctl_param { #define LOOP_MAJOR 7 #define MD_MAJOR 9 #define BLKEXT_MAJOR 259 +#define RAM_MAJOR 1 #define SCSI_BLK_MAJOR(M) ( \ (M) == SCSI_DISK0_MAJOR \ @@ -721,6 +722,8 @@ _device_probe_type (PedDevice* dev) dev->type = PED_DEVICE_MD; } else if (_is_blkext_major(dev_major) && dev->path && strstr(dev->path, "nvme")) { dev->type = PED_DEVICE_NVME; + } else if (dev_major == RAM_MAJOR) { + dev->type = PED_DEVICE_RAM; } else { dev->type = PED_DEVICE_UNKNOWN; } @@ -1553,6 +1556,11 @@ linux_new (const char* path) goto error_free_arch_specific; break; + case PED_DEVICE_RAM: + if (!init_generic (dev, _("RAM Drive"))) + goto error_free_arch_specific; + break; + default: ped_exception_throw (PED_EXCEPTION_NO_FEATURE, PED_EXCEPTION_CANCEL, @@ -1625,9 +1633,9 @@ _flush_cache (PedDevice* dev) { LinuxSpecific* arch_specific = LINUX_SPECIFIC (dev); int i; - int lpn = _device_get_partition_range(dev); + int lpn = _device_get_partition_range(dev); - if (dev->read_only) + if (dev->read_only || dev->type == PED_DEVICE_RAM) return; dev->dirty = 0; --- a/parted/parted.c +++ b/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", "nvme"}; + "md", "loopback", "nvme", "brd"}; char* start = ped_unit_format (dev, 0); PedUnit default_unit = ped_unit_get_default ();
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor