all lists on lists.proxmox.com
 help / color / mirror / Atom feed
From: Fabian Ebner <f.ebner@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH v2 storage 5/6] partially fix #2285: api: disks: allow partitions for creation paths
Date: Wed,  6 Oct 2021 11:18:45 +0200	[thread overview]
Message-ID: <20211006091853.82237-6-f.ebner@proxmox.com> (raw)
In-Reply-To: <20211006091853.82237-1-f.ebner@proxmox.com>

The calls for directory and ZFS need slight adaptations. Except for
those, the only thing that needs to be done is support partitions in
the disk_is_used helper.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
---

No changes from v1.

 PVE/API2/Disks/Directory.pm | 28 ++++++++++++++++------------
 PVE/API2/Disks/ZFS.pm       | 11 ++++++++++-
 PVE/Diskmanage.pm           |  2 +-
 3 files changed, 27 insertions(+), 14 deletions(-)

diff --git a/PVE/API2/Disks/Directory.pm b/PVE/API2/Disks/Directory.pm
index 1285274..52f0c86 100644
--- a/PVE/API2/Disks/Directory.pm
+++ b/PVE/API2/Disks/Directory.pm
@@ -214,20 +214,24 @@ __PACKAGE__->register_method ({
 	    PVE::Diskmanage::locked_disk_action(sub {
 		PVE::Diskmanage::assert_disk_unused($dev);
 
-		# create partition
-		my $cmd = [$SGDISK, '-n1', '-t1:8300', $dev];
-		print "# ", join(' ', @$cmd), "\n";
-		run_command($cmd);
-
-		my ($devname) = $dev =~ m|^/dev/(.*)$|;
-		my $part = "/dev/";
-		dir_glob_foreach("/sys/block/$devname", qr/\Q$devname\E.+/, sub {
-		    my ($partition) = @_;
-		    $part .= $partition;
-		});
+		my $part = $dev;
+
+		if (!PVE::Diskmanage::is_partition($dev)) {
+		    # create partition
+		    my $cmd = [$SGDISK, '-n1', '-t1:8300', $dev];
+		    print "# ", join(' ', @$cmd), "\n";
+		    run_command($cmd);
+
+		    my ($devname) = $dev =~ m|^/dev/(.*)$|;
+		    $part = "/dev/";
+		    dir_glob_foreach("/sys/block/$devname", qr/\Q$devname\E.+/, sub {
+			my ($partition) = @_;
+			$part .= $partition;
+		    });
+		}
 
 		# create filesystem
-		$cmd = [$MKFS, '-t', $type, $part];
+		my $cmd = [$MKFS, '-t', $type, $part];
 		print "# ", join(' ', @$cmd), "\n";
 		run_command($cmd);
 
diff --git a/PVE/API2/Disks/ZFS.pm b/PVE/API2/Disks/ZFS.pm
index 1534631..6486404 100644
--- a/PVE/API2/Disks/ZFS.pm
+++ b/PVE/API2/Disks/ZFS.pm
@@ -373,7 +373,16 @@ __PACKAGE__->register_method ({
 	    PVE::Diskmanage::locked_disk_action(sub {
 		for my $dev (@$devs) {
 		    PVE::Diskmanage::assert_disk_unused($dev);
-		    my $sysfsdev = $dev =~ s!^/dev/!/sys/block/!r;
+
+		    my $is_partition = PVE::Diskmanage::is_partition($dev);
+		    my $sysfsdev = $is_partition ? PVE::Diskmanage::get_blockdev($dev) : $dev;
+
+		    $sysfsdev =~ s!^/dev/!/sys/block/!;
+		    if ($is_partition) {
+			my $part = $dev =~ s!^/dev/!!r;
+			$sysfsdev .= "/${part}";
+		    }
+
 		    my $udevinfo = PVE::Diskmanage::get_udev_info($sysfsdev);
 		    $dev = $udevinfo->{by_id_link} if defined($udevinfo->{by_id_link});
 		}
diff --git a/PVE/Diskmanage.pm b/PVE/Diskmanage.pm
index f0e14dc..18459f9 100644
--- a/PVE/Diskmanage.pm
+++ b/PVE/Diskmanage.pm
@@ -78,7 +78,7 @@ sub disk_is_used {
     my $dev = $disk;
     $dev =~ s|^/dev/||;
 
-    my $disklist = get_disks($dev, 1);
+    my $disklist = get_disks($dev, 1, 1);
 
     die "'$disk' is not a valid local disk\n" if !defined($disklist->{$dev});
     return 1 if $disklist->{$dev}->{used};
-- 
2.30.2





  parent reply	other threads:[~2021-10-06  9:19 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-06  9:18 [pve-devel] [PATCH-SERIES v2 storage/widget-toolkit/manager] disk creation and wiping improvements Fabian Ebner
2021-10-06  9:18 ` [pve-devel] [PATCH v2 storage 1/6] diskmanage: add change_parttype and is_partition helpers Fabian Ebner
2021-10-06  9:18 ` [pve-devel] [PATCH v2 storage 2/6] diskmanage: wipe blockdev: also change partition type Fabian Ebner
2021-10-06  9:18 ` [pve-devel] [PATCH v2 storage 3/6] diskmanage: don't set usage for unused partitions Fabian Ebner
2021-10-06  9:18 ` [pve-devel] [PATCH v2 storage 4/6] api: disks: initgpt: explicitly abort for partitions Fabian Ebner
2021-10-06  9:18 ` Fabian Ebner [this message]
2021-10-06  9:18 ` [pve-devel] [PATCH v2 storage 6/6] api: disks: create: set correct partition type Fabian Ebner
2021-10-06  9:18 ` [pve-devel] [PATCH v2 widget-toolkit 1/1] disk list: allow wiping individual partitions Fabian Ebner
2021-11-11 20:42   ` [pve-devel] applied: " Thomas Lamprecht
2021-10-06  9:18 ` [pve-devel] [PATCH v2 manager 1/6] api: ceph: create osd: set correct parttype for DB/WAL Fabian Ebner
2021-10-06  9:18 ` [pve-devel] [RFC v2 manager 2/6] partially fix #2285: api: ceph: create osd: allow using partitions Fabian Ebner
2021-10-06  9:18 ` [pve-devel] [RFC v2 manager 3/6] api: ceph: create osd: set correct partition type Fabian Ebner
2021-10-06  9:18 ` [pve-devel] [RFC v2 manager 4/6] partially fix #2285: ui: ceph: allow selecting partitions Fabian Ebner
2021-10-06  9:18 ` [pve-devel] [PATCH v2 manager 5/6] ui: zfs create: switch to using widget-toolkit's multiDiskSelector Fabian Ebner
2021-10-06  9:18 ` [pve-devel] [PATCH v2 manager 6/6] partially fix #2285: ui: disk create: allow selecting partitions Fabian Ebner
2021-10-07 13:28 ` [pve-devel] partially-applied: [PATCH-SERIES v2 storage/widget-toolkit/manager] disk creation and wiping improvements Thomas Lamprecht
2021-11-12 15:06 ` [pve-devel] applied-series: " Thomas Lamprecht

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211006091853.82237-6-f.ebner@proxmox.com \
    --to=f.ebner@proxmox.com \
    --cc=pve-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal