[pve-devel] r5716 - in pve-common/trunk/data: . PVE

svn-commits at proxmox.com svn-commits at proxmox.com
Thu Mar 17 09:53:27 CET 2011


Author: dietmar
Date: 2011-03-17 09:53:26 +0100 (Thu, 17 Mar 2011)
New Revision: 5716

Modified:
   pve-common/trunk/data/ChangeLog
   pve-common/trunk/data/PVE/INotify.pm
   pve-common/trunk/data/PVE/Tools.pm
Log:
list/update list of
	active/recent worker processes


Modified: pve-common/trunk/data/ChangeLog
===================================================================
--- pve-common/trunk/data/ChangeLog	2011-03-17 06:33:22 UTC (rev 5715)
+++ pve-common/trunk/data/ChangeLog	2011-03-17 08:53:26 UTC (rev 5716)
@@ -1,3 +1,8 @@
+2011-03-17  Proxmox Support Team  <support at proxmox.com>
+
+	* PVE/INotify.pm (read/write_active_workers): list/update list of
+	active/recent worker processes
+
 2011-03-16  Proxmox Support Team  <support at proxmox.com>
 
 	* PVE/Tools.pm (upid_*): add code to handle worker processes.

Modified: pve-common/trunk/data/PVE/INotify.pm
===================================================================
--- pve-common/trunk/data/PVE/INotify.pm	2011-03-17 06:33:22 UTC (rev 5715)
+++ pve-common/trunk/data/PVE/INotify.pm	2011-03-17 08:53:26 UTC (rev 5716)
@@ -607,4 +607,38 @@
 	      \&read_etc_timezone, 
 	      \&write_etc_timezone);
 
+sub read_active_workers {
+    my ($filename, $fh) = @_;
+
+    return [] if !$fh;
+
+    my $res = []; 
+    while (defined (my $upid = <$fh>)) {
+	chomp $upid;
+	if ((my $task = PVE::Tools::upid_decode ($upid))) {
+	    $task->{upid} = $upid;
+	    push @$res, $task;
+	}
+    }
+
+    return $res;
+
+}
+
+sub write_active_workers {
+    my ($filename, $fh, $tasklist) = @_;
+
+    my $raw = '';
+    foreach my $task (@$tasklist) {
+	my $upid = $task->{upid};
+	$raw .= "$upid\n";
+    }
+
+    PVE::Tools::safe_print($filename, $fh, $raw) if $raw;
+}
+
+register_file('active', "/var/log/pve/tasks/active", 
+	      \&read_active_workers,
+	      \&write_active_workers);
+
 1;

Modified: pve-common/trunk/data/PVE/Tools.pm
===================================================================
--- pve-common/trunk/data/PVE/Tools.pm	2011-03-17 06:33:22 UTC (rev 5715)
+++ pve-common/trunk/data/PVE/Tools.pm	2011-03-17 08:53:26 UTC (rev 5716)
@@ -29,7 +29,6 @@
 
 mkdir $pvelogdir;
 mkdir $pvetaskdir;
-mkdir "$pvetaskdir/active";
 
 # flock: we use one file handle per process, so lock file
 # can be called multiple times and succeeds for the same process.
@@ -489,6 +488,7 @@
     my ($upid, $noerr) = @_;
 
     my $res;
+    my $filename;
 
     # "UPID:$node:$pid:$start:$type:$user:"
     if ($upid =~ m/^UPID:(\w+):([0-9A-Fa-f]{8}):([0-9A-Fa-f]{8}):([0-9A-Fa-f]{8}):([^:\s]+):([^:\s]+):$/) {
@@ -500,28 +500,20 @@
 	$res->{user} = $6;
 
 	my $subdir = substr($4, 7, 8);
-	$res->{filename} = "$pvetaskdir/$subdir/$upid";
+	$filename = "$pvetaskdir/$subdir/$upid";
 
     } else {
 	return undef if $noerr;
 	die "unable to parse worker upid '$upid'\n";
     }
 
-    return $res;
+    return wantarray ? ($res, $filename) : $res;
 }
 
-sub upid_set_inactive {
-    my ($upid) = @_;
-
-    my $linkname = "$pvetaskdir/active/$upid";
-    unlink $linkname;
-}
-
 sub upid_open {
     my ($upid, $ownerid) = @_;
 
-    my $task = upid_decode($upid); 
-    my $filename = $task->{filename};
+    my ($task, $filename) = upid_decode($upid); 
 
     my $dirname = dirname($filename);
     make_path($dirname);
@@ -530,15 +522,6 @@
 	die "unable to create output file '$filename' - $!\n";
     chown $ownerid, $outfh;
 
-    my $linkname = "$pvetaskdir/active/$upid";
-    link($filename, $linkname);
-
-    if (! -f $linkname) {
-	close($outfh);
-	unlink $filename;
-	die "unable to create link '$linkname' - $!\n";
-    }
-
     return $outfh;
 };
 



More information about the pve-devel mailing list