[pve-devel] [PATCH RFC access-control] Add is_worker to RPCEnvironment

Fabian Grünbichler f.gruenbichler at proxmox.com
Tue Mar 15 13:58:44 CET 2016


after forking the actual worker process, the child/worker
sets a flag that can be checked later on by methods called
in the worker.

used in the ZFS storage plugins in pve-storage to decide on
a short or long default timeout for ZFS operations.
---
 PVE/RPCEnvironment.pm | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/PVE/RPCEnvironment.pm b/PVE/RPCEnvironment.pm
index b3a7dc7..0651eb7 100644
--- a/PVE/RPCEnvironment.pm
+++ b/PVE/RPCEnvironment.pm
@@ -28,6 +28,7 @@ my $pve_env;
 # that (also see perlipc)
 
 my $WORKER_PIDS;
+my $WORKER_FLAG = 0;
 
 my $log_task_result = sub {
     my ($upid, $user, $status) = @_;
@@ -614,6 +615,10 @@ sub get_user {
     return $self->{user};
 }
 
+sub is_worker {
+    return $WORKER_FLAG;
+}
+
 # read/update list of active workers 
 # we move all finished tasks to the archive index,
 # but keep aktive and most recent task in the active file.
@@ -808,6 +813,7 @@ sub fork_worker {
     if (!$cpid) { # child
 
 	$0 = "task $upid";
+	$WORKER_FLAG = 1;
 
 	$SIG{INT} = $SIG{QUIT} = $SIG{TERM} = sub { die "received interrupt\n"; };
 
-- 
2.1.4





More information about the pve-devel mailing list