X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=PVE%2FStorage%2FPlugin.pm;h=4a10a1fef93ceec3e9409a157bd2a9351cf95d53;hb=a1e09e496e6d34262d4209a0bb3ffe297fc98ebf;hp=c60d84bad16241ae8898e0b907b30c2b62ec8897;hpb=1b87f01388da882c31cc91d7cc142d3181faa085;p=pve-storage.git diff --git a/PVE/Storage/Plugin.pm b/PVE/Storage/Plugin.pm index c60d84b..4a10a1f 100644 --- a/PVE/Storage/Plugin.pm +++ b/PVE/Storage/Plugin.pm @@ -19,7 +19,7 @@ use base qw(PVE::SectionConfig); use constant COMPRESSOR_RE => 'gz|lzo|zst'; -use constant COMMENT_EXT => ".comment"; +use constant NOTES_EXT => ".notes"; our @COMMON_TAR_FLAGS = qw( --one-file-system @@ -37,7 +37,9 @@ our @SHARED_STORAGE = ( 'iscsidirect', 'glusterfs', 'zfs', - 'drbd'); + 'drbd', + 'pbs', +); our $MAX_VOLUMES_PER_GUEST = 1024; @@ -706,7 +708,7 @@ sub clone_image { local $CWD = $imagedir; my $cmd = ['/usr/bin/qemu-img', 'create', '-b', "../$basevmid/$basename", - '-f', 'qcow2', $path]; + '-F', $format, '-f', 'qcow2', $path]; run_command($cmd); }; @@ -826,6 +828,18 @@ sub file_size_info { return wantarray ? ($size, $format, $used, $parent, $st->ctime) : $size; } +sub get_volume_notes { + my ($class, $scfg, $storeid, $volname, $timeout) = @_; + + die "volume notes are not supported for $class"; +} + +sub update_volume_notes { + my ($class, $scfg, $storeid, $volname, $notes, $timeout) = @_; + + die "volume notes are not supported for $class"; +} + sub volume_size_info { my ($class, $scfg, $storeid, $volname, $timeout) = @_; my $path = $class->filesystem_path($scfg, $volname); @@ -1020,11 +1034,14 @@ my $get_subdir_files = sub { $info = { volid => "$sid:vztmpl/$1", format => "t$2" }; } elsif ($tt eq 'backup') { - next if defined($vmid) && $fn !~ m/\S+-$vmid-\S+/; next if $fn !~ m!/([^/]+\.(tgz|(?:(?:tar|vma)(?:\.(${\COMPRESSOR_RE}))?)))$!; my $original = $fn; my $format = $2; $fn = $1; + + # only match for VMID now, to avoid false positives (VMID in parent directory name) + next if defined($vmid) && $fn !~ m/\S+-$vmid-\S+/; + $info = { volid => "$sid:backup/$fn", format => $format }; my $archive_info = eval { PVE::Storage::archive_info($fn) } // {}; @@ -1035,10 +1052,10 @@ my $get_subdir_files = sub { $info->{vmid} = $vmid // $1; } - my $comment_fn = $original.COMMENT_EXT; - if (-f $comment_fn) { - my $comment = PVE::Tools::file_read_firstline($comment_fn); - $info->{comment} = $comment if defined($comment); + my $notes_fn = $original.NOTES_EXT; + if (-f $notes_fn) { + my $notes = PVE::Tools::file_read_firstline($notes_fn); + $info->{notes} = $notes if defined($notes); } } elsif ($tt eq 'snippets') { @@ -1217,9 +1234,9 @@ sub prune_backups { foreach my $backup (@{$backups}) { my $volid = $backup->{volid}; - my $backup_vmid = $backup->{vmid}; my $archive_info = eval { PVE::Storage::archive_info($volid) } // {}; my $backup_type = $archive_info->{type} // 'unknown'; + my $backup_vmid = $archive_info->{vmid} // $backup->{vmid}; next if defined($type) && $type ne $backup_type; @@ -1232,6 +1249,10 @@ sub prune_backups { $prune_entry->{vmid} = $backup_vmid if defined($backup_vmid); if ($archive_info->{is_std_name}) { + die "internal error - got no VMID\n" if !defined($backup_vmid); + die "internal error - got wrong VMID '$backup_vmid' != '$vmid'\n" + if defined($vmid) && $backup_vmid ne $vmid; + $prune_entry->{ctime} = $archive_info->{ctime}; my $group = "$backup_type/$backup_vmid"; push @{$backup_groups->{$group}}, $prune_entry;