]> git.proxmox.com Git - pve-common.git/blobdiff - src/PVE/CpuSet.pm
bump version to 8.2.1
[pve-common.git] / src / PVE / CpuSet.pm
index 1f41e8f6825b6f63b9d5a06d0b70481ddc4e4d84..1292558359777c19387a1958efab1906c0248f37 100644 (file)
@@ -15,6 +15,7 @@ sub new {
 }
 
 # Create a new set with the contents of a cgroup-v1 subdirectory.
+# Deprecated:
 sub new_from_cgroup {
     my ($class, $cgroup, $effective) = @_;
 
@@ -25,16 +26,21 @@ sub new_from_cgroup {
 sub new_from_path {
     my ($class, $path, $effective) = @_;
 
-    my $kind = $effective ? 'effective_cpus' : 'cpus';
+    my $filename;
+    if ($effective) {
+       $filename = "$path/cpuset.effective_cpus";
+       if (!-e $filename) {
+           # cgroupv2:
+           $filename = "$path/cpuset.cpus.effective";
+       }
+    } else {
+       $filename = "$path/cpuset.cpus";
+    }
 
-    my $filename = "$path/cpuset.$kind";
     my $set_text = PVE::Tools::file_read_firstline($filename) // '';
 
     my ($count, $members) = parse_cpuset($set_text);
 
-    die "got empty cpuset for cgroup '$path'\n"
-       if !$count;
-
     return $class->new($members);
 }
 
@@ -61,10 +67,19 @@ sub parse_cpuset {
     return ($count, $members);
 }
 
+# Deprecated:
 sub write_to_cgroup {
     my ($self, $cgroup) = @_;
 
-    my $filename = "/sys/fs/cgroup/cpuset/$cgroup/cpuset.cpus";
+    return $self->write_to_path("/sys/fs/cgroup/cpuset/$cgroup");
+}
+
+# Takes the cgroup directory containing the cpuset.cpus file (to be closer to
+# new_from_path behavior this doesn't take the complete file name).
+sub write_to_path {
+    my ($self, $path) = @_;
+
+    my $filename = "$path/cpuset.cpus";
 
     my $value = '';
     my @members = $self->members();
@@ -73,8 +88,6 @@ sub write_to_cgroup {
        $value .= $cpuid;
     }
 
-    die "unable to write empty cpu set\n" if !length($value);
-
     open(my $fh, '>', $filename) || die "failed to open '$filename' - $!\n";
     PVE::Tools::safe_print($filename, $fh, "$value\n");
     close($fh) || die "failed to close '$filename' - $!\n";
@@ -118,7 +131,8 @@ sub has {
 sub members {
     my ($self) = @_;
 
-    return sort { $a <=> $b } keys %{$self->{members}};
+    my @sorted_members = sort { $a <=> $b } keys %{$self->{members}};
+    return @sorted_members;
 }
 
 sub size {