]> git.proxmox.com Git - pve-storage.git/commitdiff
Diskmanage: introduce get_sysdir_size helper
authorFabian Ebner <f.ebner@proxmox.com>
Tue, 26 Jan 2021 11:45:21 +0000 (12:45 +0100)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Sat, 6 Feb 2021 12:52:20 +0000 (13:52 +0100)
to be used for partitions as well.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
PVE/Diskmanage.pm
test/disk_tests/usages/sdd/sdd1/size [new file with mode: 0644]
test/disk_tests/usages/sdd/sdd2/size [new file with mode: 0644]
test/disk_tests/usages/sde/sde1/size [new file with mode: 0644]
test/disk_tests/usages/sdf/sdf1/size [new file with mode: 0644]
test/disk_tests/usages/sdm/sdm1/size [new file with mode: 0644]
test/disk_tests/usages/sdm/sdm9/size [new file with mode: 0644]
test/disklist_test.pm

index 94ec93ad27e59d02ebcefbd558ff3bff6d2907c9..95aba1215b2478f413d766d7d43fc0b75fd8df7d 100644 (file)
@@ -368,6 +368,17 @@ sub get_udev_info {
     return $data;
 }
 
+sub get_sysdir_size {
+    my ($sysdir) = @_;
+
+    my $size = file_read_firstline("$sysdir/size");
+    return if !$size;
+
+    # linux always considers sectors to be 512 bytes,
+    # independently of real block size
+    return $size * 512;
+}
+
 sub get_sysdir_info {
     my ($sysdir) = @_;
 
@@ -375,12 +386,7 @@ sub get_sysdir_info {
 
     my $data = {};
 
-    my $size = file_read_firstline("$sysdir/size");
-    return undef if !$size;
-
-    # linux always considers sectors to be 512 bytes,
-    # independently of real block size
-    $data->{size} = $size * 512;
+    $data->{size} = get_sysdir_size($sysdir) or return;
 
     # dir/queue/rotational should be 1 for hdd, 0 for ssd
     $data->{rotational} = file_read_firstline("$sysdir/queue/rotational") // -1;
diff --git a/test/disk_tests/usages/sdd/sdd1/size b/test/disk_tests/usages/sdd/sdd1/size
new file mode 100644 (file)
index 0000000..83b33d2
--- /dev/null
@@ -0,0 +1 @@
+1000
diff --git a/test/disk_tests/usages/sdd/sdd2/size b/test/disk_tests/usages/sdd/sdd2/size
new file mode 100644 (file)
index 0000000..8bd1af1
--- /dev/null
@@ -0,0 +1 @@
+2000
diff --git a/test/disk_tests/usages/sde/sde1/size b/test/disk_tests/usages/sde/sde1/size
new file mode 100644 (file)
index 0000000..13de30f
--- /dev/null
@@ -0,0 +1 @@
+3000
diff --git a/test/disk_tests/usages/sdf/sdf1/size b/test/disk_tests/usages/sdf/sdf1/size
new file mode 100644 (file)
index 0000000..13de30f
--- /dev/null
@@ -0,0 +1 @@
+3000
diff --git a/test/disk_tests/usages/sdm/sdm1/size b/test/disk_tests/usages/sdm/sdm1/size
new file mode 100644 (file)
index 0000000..83b33d2
--- /dev/null
@@ -0,0 +1 @@
+1000
diff --git a/test/disk_tests/usages/sdm/sdm9/size b/test/disk_tests/usages/sdm/sdm9/size
new file mode 100644 (file)
index 0000000..8bd1af1
--- /dev/null
@@ -0,0 +1 @@
+2000
index 9cb676311f7ae815e5138eee91a7c506cba6226a..bfce1ea27352c83024c1f1cbb373185feccad921 100644 (file)
@@ -87,6 +87,16 @@ sub mocked_get_sysdir_info {
     return &$originalsub($param);
 }
 
+sub mocked_get_sysdir_size {
+    my ($param) = @_;
+
+    my $originalsub = $diskmanage_module->original('get_sysdir_size');
+
+    $param =~ s|/sys/block|disk_tests/$testcasedir|;
+
+    return &$originalsub($param);
+}
+
 sub mocked_is_iscsi {
     return 0;
 }
@@ -219,6 +229,8 @@ $diskmanage_module->mock('dir_glob_foreach' => \&mocked_dir_glob_foreach);
 print("\tMocked dir_glob_foreach\n");
 $diskmanage_module->mock('get_sysdir_info' => \&mocked_get_sysdir_info);
 print("\tMocked get_sysdir_info\n");
+$diskmanage_module->mock('get_sysdir_size' => \&mocked_get_sysdir_size);
+print("\tMocked get_sysdir_size\n");
 $diskmanage_module->mock('is_iscsi' => \&mocked_is_iscsi);
 print("\tMocked is_iscsi\n");
 $diskmanage_module->mock('assert_blockdev' => sub { return 1; });