Events are reported via POLLPRI and POLLERR (priority and
exception flags), not POLLIN (which causes a busy-loop).

Signed-off-by: Wolfgang Bumiller <w.bumil...@proxmox.com>
---
 src/PVE/LXC/CGroup.pm | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/src/PVE/LXC/CGroup.pm b/src/PVE/LXC/CGroup.pm
index 5db1d48..d6b27ea 100644
--- a/src/PVE/LXC/CGroup.pm
+++ b/src/PVE/LXC/CGroup.pm
@@ -546,18 +546,16 @@ my sub v2_freeze_thaw {
 
     PVE::ProcFSTools::write_proc_entry("$path/cgroup.freeze", $desired_state);
     while (1) {
-       my @handles = $select->can_read();
-       next if !@handles;
-       open(my $dup, '<&', $fh)
-           or die "failed to reopen cgroup.events file: $!\n";
-       seek($dup, 0, 0)
-           or die "failed to rewind cgroup.events file: $!\n";
        my $data = do {
            local $/ = undef;
-           <$dup>
+           <$fh>
        };
        $data = parse_flat_keyed_file($data);
        last if $data->{frozen} == $desired_state;
+       my @handles = $select->has_exception();
+       next if !@handles;
+       seek($fh, 0, 0)
+           or die "failed to rewind cgroup.events file: $!\n";
     }
 }
 
-- 
2.20.1


_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to