]> git.proxmox.com Git - pve-storage.git/commitdiff
introduce new method filesystem_path()
authorDietmar Maurer <dietmar@proxmox.com>
Tue, 17 Sep 2013 07:03:01 +0000 (09:03 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Tue, 17 Sep 2013 07:05:17 +0000 (09:05 +0200)
If a plugin overwrites method path() to return optimized setting for qemu,
it can now still use the generic methods from PVE::Storage::Plugin which works
on file system paths (for example the glusterfs plugin).

PVE/Storage/Plugin.pm

index 561079098058822dc01809520635b4c7d98210c9..59f4a8e328ebe158a79238b8beb17fd67767fb84 100644 (file)
@@ -401,7 +401,7 @@ sub get_subdir {
     return "$path/$subdir";
 }
 
-sub path {
+sub filesystem_path {
     my ($class, $scfg, $volname, $storeid) = @_;
 
     my ($vtype, $name, $vmid) = $class->parse_volname($volname);
@@ -415,6 +415,12 @@ sub path {
     return wantarray ? ($path, $vmid, $vtype) : $path;
 }
 
+sub path {
+    my ($class, $scfg, $volname, $storeid) = @_;
+
+    return $class->filesystem_path($scfg, $volname, $storeid);
+}
+
 sub create_base {
     my ($class, $storeid, $scfg, $volname) = @_;
 
@@ -428,7 +434,7 @@ sub create_base {
 
     die "create_base not possible with base image\n" if $isBase;
 
-    my $path = $class->path($scfg, $volname);
+    my $path = $class->filesystem_path($scfg, $volname);
 
     my ($size, $format, $used, $parent) = file_size_info($path);
     die "file_size_info on '$volname' failed\n" if !($format && $size);
@@ -442,7 +448,7 @@ sub create_base {
     my $newvolname = $basename ? "$basevmid/$basename/$vmid/$newname" :
        "$vmid/$newname";
 
-    my $newpath = $class->path($scfg, $newvolname);
+    my $newpath = $class->filesystem_path($scfg, $newvolname);
 
     die "file '$newpath' already exists\n" if -f $newpath;
 
@@ -504,7 +510,7 @@ sub clone_image {
 
     my $newvol = "$basevmid/$basename/$vmid/$name";
 
-    my $path = $class->path($scfg, $newvol);
+    my $path = $class->filesystem_path($scfg, $newvol);
 
     # Note: we use relative paths, so we need to call chdir before qemu-img
     eval {
@@ -555,7 +561,7 @@ sub alloc_image {
 sub free_image {
     my ($class, $storeid, $scfg, $volname, $isBase) = @_;
 
-    my $path = $class->path($scfg, $volname);
+    my $path = $class->filesystem_path($scfg, $volname);
 
     if (! -f $path) {
        warn "disk image '$path' does not exists\n";
@@ -611,7 +617,7 @@ sub file_size_info {
 
 sub volume_size_info {
     my ($class, $scfg, $storeid, $volname, $timeout) = @_;
-    my $path = $class->path($scfg, $volname);
+    my $path = $class->filesystem_path($scfg, $volname);
     return file_size_info($path, $timeout);
 
 }
@@ -623,7 +629,7 @@ sub volume_resize {
 
     return 1 if $running;
 
-    my $path = $class->path($scfg, $volname);
+    my $path = $class->filesystem_path($scfg, $volname);
 
     my $cmd = ['/usr/bin/qemu-img', 'resize', $path , $size];
 
@@ -639,7 +645,7 @@ sub volume_snapshot {
 
     return 1 if $running;
 
-    my $path = $class->path($scfg, $volname);
+    my $path = $class->filesystem_path($scfg, $volname);
 
     my $cmd = ['/usr/bin/qemu-img', 'snapshot','-c', $snap, $path];
 
@@ -653,7 +659,7 @@ sub volume_snapshot_rollback {
 
     die "can't rollback snapshot this image format" if $volname !~ m/\.(qcow2|qed)$/;
 
-    my $path = $class->path($scfg, $volname);
+    my $path = $class->filesystem_path($scfg, $volname);
 
     my $cmd = ['/usr/bin/qemu-img', 'snapshot','-a', $snap, $path];
 
@@ -669,7 +675,7 @@ sub volume_snapshot_delete {
 
     return 1 if $running;
 
-    my $path = $class->path($scfg, $volname);
+    my $path = $class->filesystem_path($scfg, $volname);
 
     my $cmd = ['/usr/bin/qemu-img', 'snapshot','-d', $snap, $path];
 
@@ -798,7 +804,7 @@ sub deactivate_storage {
 sub activate_volume {
     my ($class, $storeid, $scfg, $volname, $exclusive, $cache) = @_;
 
-    my $path = $class->path($scfg, $volname);
+    my $path = $class->filesystem_path($scfg, $volname);
 
     # check is volume exists
     if ($scfg->{path}) {