Recognise NBDs (Network Block Devices) (#247)
Network Block Devices are not displayed in GParted as partitionable devices. They do appear in /proc/partitions, are reported by fdisk -l [1] and by ped_device_probe_all() from libparted. Therefore include them. Create NBD device for testing: # truncate -s 1G /tmp/disk-1G.img # nbd-server -C /dev/null 9000 /tmp/disk-1G.img # nbd-client localhost 9000 /dev/nbd0 After creating a couple of partitions for testing, the contents of /proc/partitions looks like this: # egrep 'name|nbd' /proc/partitions major minor #blocks name 43 0 1048576 nbd0 43 1 262144 nbd0p1 43 2 785408 nbd0p2 Listing all disks using fdisk: # fdisk -l ... Disk /dev/nbd0: 1 GiB, 1073741824 bytes, 2097152 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x081b1cd1 Device Boot Start End Sectors Size Id Type /dev/nbd0p1 2048 526335 524288 256M 83 Linux /dev/nbd0p2 526336 2097151 1570816 767M 83 Linux Temporarily apply this patch to GParted so that it ignores the devices it currently selects from /proc/partitions to use what get_device_probe_all() reports. GParted shows NBDs. $ git diff --unified=1 diff --git a/src/GParted_Core.cc b/src/GParted_Core.cc index 1629f94f..abea7a0b 100644 --- a/src/GParted_Core.cc +++ b/src/GParted_Core.cc @@ -172,3 +172,3 @@ void GParted_Core::set_devices_thread( std::vector<Device> * pdevices ) //try to find all available devices if devices exist in /proc/partitions - std::vector<Glib::ustring> temp_devices = Proc_Partitions_Info::get_device_paths(); + std::vector<Glib::ustring> temp_devices; if ( ! temp_devices .empty() ) Tidy-up NBD device: # nbd-client -d /dev/ndb0 # killall nbd-server # rm /tmp/disk-1G.img [1] man fdisk "-l, --list List the partition tables for the specified devices and then exit. If no devices are given, the devices mentioned in /proc/partitions (if this file exists) are used. " Closes #247 - GParted does not list NBD (Network Block Device) devices in the GUI
This commit is contained in:
parent
a45b6c178b
commit
81c2271311
|
@ -160,6 +160,11 @@ bool Proc_Partitions_Info::is_whole_disk_device_name(const Glib::ustring& name)
|
|||
if (Utils::regexp_label(name, "^(bcache[0-9]+)$") != "")
|
||||
return true;
|
||||
|
||||
// Match Network Block Device names.
|
||||
// E.g.: device = nbd0 (partition = nbd0p1)
|
||||
if (Utils::regexp_label(name, "^(nbd[0-9]+)$") != "")
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue