[pve-devel] r5630 - pve-storage/pve2/PVE

svn-commits at proxmox.com svn-commits at proxmox.com
Fri Feb 25 13:21:29 CET 2011


Author: dietmar
Date: 2011-02-25 13:21:29 +0100 (Fri, 25 Feb 2011)
New Revision: 5630

Modified:
   pve-storage/pve2/PVE/Storage.pm
Log:
implement cluster_lock_storage


Modified: pve-storage/pve2/PVE/Storage.pm
===================================================================
--- pve-storage/pve2/PVE/Storage.pm	2011-02-25 12:20:05 UTC (rev 5629)
+++ pve-storage/pve2/PVE/Storage.pm	2011-02-25 12:21:29 UTC (rev 5630)
@@ -572,8 +572,19 @@
 sub cluster_lock_storage {
     my ($storeid, $shared, $timeout, $func, @param) = @_;
 
-    die "cluster lock not implemented";
-
+    my $locktext = "local storage $storeid";
+    my $res;
+    if (!$shared) {
+	my $lockid = "pve-storage-$storeid";
+	my $lockdir = "/var/lock/pve-manager";
+	mkdir $lockdir;
+	$res = PVE::Tools::lock_file("$lockdir/$lockid", $timeout, $locktext, $func, @param); 
+	die $@ if $@;
+    } else {
+	$res = PVE::Cluster::cfs_lock_storage($storeid, $timeout, $locktext, $func, @param);
+	die $@ if $@;
+    }	
+    return $res;
 }
 
 sub storage_config {
@@ -1141,7 +1152,7 @@
     activate_storage ($cfg, $storeid);
 
     # lock shared storage
-    return cluster_lock_storage ($storeid, $scfg->{shared}, undef, sub {
+    return cluster_lock_storage($storeid, $scfg->{shared}, undef, sub {
 
 	if ($scfg->{type} eq 'dir' || $scfg->{type} eq 'nfs') {
 
@@ -1236,7 +1247,7 @@
     activate_storage ($cfg, $storeid);
 
     # lock shared storage
-    cluster_lock_storage ($storeid, $scfg->{shared}, undef, sub {
+    cluster_lock_storage($storeid, $scfg->{shared}, undef, sub {
 
 	if ($scfg->{type} eq 'dir' || $scfg->{type} eq 'nfs') {
 	    my $path = path ($cfg, $volid); 



More information about the pve-devel mailing list