]> git.proxmox.com Git - pve-storage.git/commitdiff
Add function get_blockdev.
authorWolfgang Link <w.link@proxmox.com>
Mon, 19 Dec 2016 14:15:37 +0000 (15:15 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Thu, 22 Dec 2016 11:14:34 +0000 (12:14 +0100)
This function will return you the block device of a given partition path.

PVE/Diskmanage.pm

index e4821d49f16e8235efb21be5ed8f5cf82b3f83ef..5fd7c6a76a21d86a7a743c43b988cf3480f7bbb5 100644 (file)
@@ -544,4 +544,20 @@ sub get_partnum {
     return $partnum;
 }
 
+sub get_blockdev {
+    my ($part_path) = @_;
+
+    my $dev = $1 if $part_path =~ m|^/dev/(.*)$|;
+    my $link = readlink "/sys/class/block/$dev";
+    my $block_dev = $1 if $link =~ m|([^/]*)/$dev$|;
+
+    die "Can't parse parent device\n" if !defined($block_dev);
+    die "No valid block device\n" if index($dev, $block_dev) == -1;
+
+    $block_dev = "/dev/$block_dev";
+    die "Block device does not exsists\n" if !(-b $block_dev);
+
+    return $block_dev;
+}
+
 1;