* [pve-devel] [PATCH-SERIES zsync] fix #1669: allow prepending storage ID
@ 2021-05-04 8:09 Fabian Ebner
2021-05-04 8:09 ` [pve-devel] [PATCH zsync 01/10] whitespace fix Fabian Ebner
` (10 more replies)
0 siblings, 11 replies; 12+ messages in thread
From: Fabian Ebner @ 2021-05-04 8:09 UTC (permalink / raw)
To: pve-devel
which makes it possible to use pve-zsync for guests with disks with the same
name on different storages, i.e.
storageA:vm-123-disk-0
storageB:vm-123-disk-0
Currently they would collide to
target/vm-123-disk-0
When the new prepend-storage-id flag is specified, they will be synced to
target/storageA/vm-123-disk-0$
target/storageB/vm-123-disk-0$
instead.
The first four patches are cleanups/usage description fixes.
The next five patches are preparations for the last patch, which is the one
actually implementing the new feature.
Fabian Ebner (10):
whitespace fix
copyright: update year
usage: describe flag parameters correctly
usage: fix type for maxsnap
add target_dataset function
add check_dataset_exists function
add create_file_system function
parse disks: don't include colon in storage name variable
parse disks: also include storage ID information
fix #1669: add prepend-storage-id flag
pve-zsync | 118 ++++++++++++++++++++++++++++++++++++++++--------------
1 file changed, 89 insertions(+), 29 deletions(-)
--
2.20.1
^ permalink raw reply [flat|nested] 12+ messages in thread
* [pve-devel] [PATCH zsync 01/10] whitespace fix
2021-05-04 8:09 [pve-devel] [PATCH-SERIES zsync] fix #1669: allow prepending storage ID Fabian Ebner
@ 2021-05-04 8:09 ` Fabian Ebner
2021-05-04 8:09 ` [pve-devel] [PATCH zsync 02/10] copyright: update year Fabian Ebner
` (9 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Fabian Ebner @ 2021-05-04 8:09 UTC (permalink / raw)
To: pve-devel
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
---
pve-zsync | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pve-zsync b/pve-zsync
index 5c95955..71cb6dd 100755
--- a/pve-zsync
+++ b/pve-zsync
@@ -862,7 +862,7 @@ sub parse_disks {
my $path = run_cmd($cmd);
die "Get no path from pvesm path $stor$disk\n" if !$path;
-
+
if ($vm_type eq 'qemu' && $path =~ m/^\/dev\/zvol\/(\w+.*)(\/$disk)$/) {
my @array = split('/', $1);
--
2.20.1
^ permalink raw reply [flat|nested] 12+ messages in thread
* [pve-devel] [PATCH zsync 02/10] copyright: update year
2021-05-04 8:09 [pve-devel] [PATCH-SERIES zsync] fix #1669: allow prepending storage ID Fabian Ebner
2021-05-04 8:09 ` [pve-devel] [PATCH zsync 01/10] whitespace fix Fabian Ebner
@ 2021-05-04 8:09 ` Fabian Ebner
2021-05-04 8:09 ` [pve-devel] [PATCH zsync 03/10] usage: describe flag parameters correctly Fabian Ebner
` (8 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Fabian Ebner @ 2021-05-04 8:09 UTC (permalink / raw)
To: pve-devel
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
---
pve-zsync | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pve-zsync b/pve-zsync
index 71cb6dd..deecfed 100755
--- a/pve-zsync
+++ b/pve-zsync
@@ -1365,7 +1365,7 @@ The VM config get copied on the destination machine to /var/lib/pve-zsync/
=head1 COPYRIGHT AND DISCLAIMER
-Copyright (C) 2007-2015 Proxmox Server Solutions GmbH
+Copyright (C) 2007-2021 Proxmox Server Solutions GmbH
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU Affero General Public License as published
--
2.20.1
^ permalink raw reply [flat|nested] 12+ messages in thread
* [pve-devel] [PATCH zsync 03/10] usage: describe flag parameters correctly
2021-05-04 8:09 [pve-devel] [PATCH-SERIES zsync] fix #1669: allow prepending storage ID Fabian Ebner
2021-05-04 8:09 ` [pve-devel] [PATCH zsync 01/10] whitespace fix Fabian Ebner
2021-05-04 8:09 ` [pve-devel] [PATCH zsync 02/10] copyright: update year Fabian Ebner
@ 2021-05-04 8:09 ` Fabian Ebner
2021-05-04 8:09 ` [pve-devel] [PATCH zsync 04/10] usage: fix type for maxsnap Fabian Ebner
` (7 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Fabian Ebner @ 2021-05-04 8:09 UTC (permalink / raw)
To: pve-devel
It's not possible to provide a false value. From the documentation for
GetOptionsFromArray:
The argument specification is optional. If omitted, the option is considered
boolean, a value of 1 will be assigned when the option is used on the
command line.
Make it clear that specifying the flag alone already enables it.
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
---
pve-zsync | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/pve-zsync b/pve-zsync
index deecfed..2c10a4d 100755
--- a/pve-zsync
+++ b/pve-zsync
@@ -1114,9 +1114,9 @@ $PROGNAME create -dest <string> -source <string> [OPTIONS]
name of the sync job, if not set it is default
- -skip boolean
+ -skip
- if this flag is set it will skip the first sync
+ If specified, skip the first sync.
-source string
@@ -1126,9 +1126,9 @@ $PROGNAME create -dest <string> -source <string> [OPTIONS]
name of the user on the source target, root by default
- -properties boolean
+ -properties
- Include the dataset's properties in the stream.
+ If specified, include the dataset's properties in the stream.
-dest-config-path string
@@ -1168,13 +1168,13 @@ $PROGNAME sync -dest <string> -source <string> [OPTIONS]\n
name of the user on the source target, root by default
- -verbose boolean
+ -verbose
- print out the sync progress.
+ If specified, print out the sync progress.
- -properties boolean
+ -properties
- Include the dataset's properties in the stream.
+ If specified, include the dataset's properties in the stream.
-dest-config-path string
@@ -1199,7 +1199,7 @@ $PROGNAME help <cmd> [OPTIONS]
Command name
- -verbose boolean
+ -verbose
Verbose output format.
},
--
2.20.1
^ permalink raw reply [flat|nested] 12+ messages in thread
* [pve-devel] [PATCH zsync 04/10] usage: fix type for maxsnap
2021-05-04 8:09 [pve-devel] [PATCH-SERIES zsync] fix #1669: allow prepending storage ID Fabian Ebner
` (2 preceding siblings ...)
2021-05-04 8:09 ` [pve-devel] [PATCH zsync 03/10] usage: describe flag parameters correctly Fabian Ebner
@ 2021-05-04 8:09 ` Fabian Ebner
2021-05-04 8:09 ` [pve-devel] [PATCH zsync 05/10] add target_dataset function Fabian Ebner
` (6 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Fabian Ebner @ 2021-05-04 8:09 UTC (permalink / raw)
To: pve-devel
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
---
pve-zsync | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pve-zsync b/pve-zsync
index 2c10a4d..a21da49 100755
--- a/pve-zsync
+++ b/pve-zsync
@@ -1106,7 +1106,7 @@ $PROGNAME create -dest <string> -source <string> [OPTIONS]
max sync speed in kBytes/s, default unlimited
- -maxsnap string
+ -maxsnap integer
how much snapshots will be kept before get erased, default 1
--
2.20.1
^ permalink raw reply [flat|nested] 12+ messages in thread
* [pve-devel] [PATCH zsync 05/10] add target_dataset function
2021-05-04 8:09 [pve-devel] [PATCH-SERIES zsync] fix #1669: allow prepending storage ID Fabian Ebner
` (3 preceding siblings ...)
2021-05-04 8:09 ` [pve-devel] [PATCH zsync 04/10] usage: fix type for maxsnap Fabian Ebner
@ 2021-05-04 8:09 ` Fabian Ebner
2021-05-04 8:10 ` [pve-devel] [PATCH zsync 06/10] add check_dataset_exists function Fabian Ebner
` (5 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Fabian Ebner @ 2021-05-04 8:09 UTC (permalink / raw)
To: pve-devel
so the logic can be re-used and extended in a single place.
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
---
pve-zsync | 21 ++++++++++++++-------
1 file changed, 14 insertions(+), 7 deletions(-)
diff --git a/pve-zsync b/pve-zsync
index a21da49..93b0d0d 100755
--- a/pve-zsync
+++ b/pve-zsync
@@ -725,8 +725,7 @@ sub snapshot_get{
push @$cmd, 'ssh', "$dest_user\@$dest->{ip}", '--', if $dest->{ip};
push @$cmd, 'zfs', 'list', '-r', '-t', 'snapshot', '-Ho', 'name', '-S', 'creation';
- my $path = $dest->{all};
- $path .= "/$source->{last_part}" if $source->{last_part};
+ my $path = target_dataset($source, $dest);
push @$cmd, $path;
my $raw;
@@ -900,6 +899,17 @@ sub parse_disks {
return $disks;
}
+# how the corresponding dataset is named on the target
+sub target_dataset {
+ my ($source, $dest) = @_;
+
+ my $target = "$dest->{all}";
+ $target .= "/$source->{last_part}" if $source->{last_part};
+ $target =~ s!/+!/!g;
+
+ return $target;
+}
+
sub snapshot_destroy {
my ($source, $dest, $method, $snap, $source_user, $dest_user) = @_;
@@ -919,8 +929,7 @@ sub snapshot_destroy {
if ($dest) {
my @ssh = $dest->{ip} ? ('ssh', "$dest_user\@$dest->{ip}", '--') : ();
- my $path = "$dest->{all}";
- $path .= "/$source->{last_part}" if $source->{last_part};
+ my $path = target_dataset($source, $dest);
eval {
run_cmd([@ssh, @zfscmd, "$path\@$snap"]);
@@ -971,9 +980,7 @@ sub send_image {
my $bwl = $param->{limit}*1024;
push @$cmd, \'|', 'cstream', '-t', $bwl;
}
- my $target = "$dest->{all}";
- $target .= "/$source->{last_part}" if $source->{last_part};
- $target =~ s!/+!/!g;
+ my $target = target_dataset($source, $dest);
push @$cmd, \'|';
push @$cmd, 'ssh', '-o', 'BatchMode=yes', "$param->{dest_user}\@$dest->{ip}", '--' if $dest->{ip};
--
2.20.1
^ permalink raw reply [flat|nested] 12+ messages in thread
* [pve-devel] [PATCH zsync 06/10] add check_dataset_exists function
2021-05-04 8:09 [pve-devel] [PATCH-SERIES zsync] fix #1669: allow prepending storage ID Fabian Ebner
` (4 preceding siblings ...)
2021-05-04 8:09 ` [pve-devel] [PATCH zsync 05/10] add target_dataset function Fabian Ebner
@ 2021-05-04 8:10 ` Fabian Ebner
2021-05-04 8:10 ` [pve-devel] [PATCH zsync 07/10] add create_file_system function Fabian Ebner
` (4 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Fabian Ebner @ 2021-05-04 8:10 UTC (permalink / raw)
To: pve-devel
as a generalization and replacement of check_pool_exists.
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
---
pve-zsync | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/pve-zsync b/pve-zsync
index 93b0d0d..a327d42 100755
--- a/pve-zsync
+++ b/pve-zsync
@@ -152,15 +152,15 @@ sub get_status {
return undef;
}
-sub check_pool_exists {
- my ($target, $user) = @_;
+sub check_dataset_exists {
+ my ($dataset, $ip, $user) = @_;
my $cmd = [];
- if ($target->{ip}) {
- push @$cmd, 'ssh', "$user\@$target->{ip}", '--';
+ if ($ip) {
+ push @$cmd, 'ssh', "$user\@$ip", '--';
}
- push @$cmd, 'zfs', 'list', '-H', '--', $target->{all};
+ push @$cmd, 'zfs', 'list', '-H', '--', $dataset;
eval {
run_cmd($cmd);
};
@@ -517,10 +517,12 @@ sub init {
run_cmd(['ssh-copy-id', '-i', '/root/.ssh/id_rsa.pub', "$param->{source_user}\@$ip"]);
}
- die "Pool $dest->{all} does not exists\n" if !check_pool_exists($dest, $param->{dest_user});
+ die "Pool $dest->{all} does not exist\n"
+ if !check_dataset_exists($dest->{all}, $dest->{ip}, $param->{dest_user});
if (!defined($source->{vmid})) {
- die "Pool $source->{all} does not exists\n" if !check_pool_exists($source, $param->{source_user});
+ die "Pool $source->{all} does not exist\n"
+ if !check_dataset_exists($source->{all}, $source->{ip}, $param->{source_user});
}
my $vm_type = vm_exists($source, $param->{source_user});
--
2.20.1
^ permalink raw reply [flat|nested] 12+ messages in thread
* [pve-devel] [PATCH zsync 07/10] add create_file_system function
2021-05-04 8:09 [pve-devel] [PATCH-SERIES zsync] fix #1669: allow prepending storage ID Fabian Ebner
` (5 preceding siblings ...)
2021-05-04 8:10 ` [pve-devel] [PATCH zsync 06/10] add check_dataset_exists function Fabian Ebner
@ 2021-05-04 8:10 ` Fabian Ebner
2021-05-04 8:10 ` [pve-devel] [PATCH zsync 08/10] parse disks: don't include colon in storage name variable Fabian Ebner
` (3 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Fabian Ebner @ 2021-05-04 8:10 UTC (permalink / raw)
To: pve-devel
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
---
pve-zsync | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/pve-zsync b/pve-zsync
index a327d42..101dc03 100755
--- a/pve-zsync
+++ b/pve-zsync
@@ -171,6 +171,19 @@ sub check_dataset_exists {
return 1;
}
+sub create_file_system {
+ my ($file_system, $ip, $user) = @_;
+
+ my $cmd = [];
+
+ if ($ip) {
+ push @$cmd, 'ssh', "$user\@$ip", '--';
+ }
+ push @$cmd, 'zfs', 'create', $file_system;
+
+ run_cmd($cmd);
+}
+
sub parse_target {
my ($text) = @_;
--
2.20.1
^ permalink raw reply [flat|nested] 12+ messages in thread
* [pve-devel] [PATCH zsync 08/10] parse disks: don't include colon in storage name variable
2021-05-04 8:09 [pve-devel] [PATCH-SERIES zsync] fix #1669: allow prepending storage ID Fabian Ebner
` (6 preceding siblings ...)
2021-05-04 8:10 ` [pve-devel] [PATCH zsync 07/10] add create_file_system function Fabian Ebner
@ 2021-05-04 8:10 ` Fabian Ebner
2021-05-04 8:10 ` [pve-devel] [PATCH zsync 09/10] parse disks: also include storage ID information Fabian Ebner
` (2 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Fabian Ebner @ 2021-05-04 8:10 UTC (permalink / raw)
To: pve-devel
in preparation to re-use it elsewhere.
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
---
pve-zsync | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/pve-zsync b/pve-zsync
index 101dc03..e4f927e 100755
--- a/pve-zsync
+++ b/pve-zsync
@@ -858,7 +858,7 @@ sub parse_disks {
my @parameter = split(/,/,$1);
foreach my $opt (@parameter) {
- if ($opt =~ m/^(?:file=|volume=)?([^:]+:)([A-Za-z0-9\-]+)$/){
+ if ($opt =~ m/^(?:file=|volume=)?([^:]+):([A-Za-z0-9\-]+)$/){
$disk = $2;
$stor = $1;
last;
@@ -872,10 +872,10 @@ sub parse_disks {
my $cmd = [];
push @$cmd, 'ssh', "$user\@$ip", '--' if $ip;
- push @$cmd, 'pvesm', 'path', "$stor$disk";
+ push @$cmd, 'pvesm', 'path', "$stor:$disk";
my $path = run_cmd($cmd);
- die "Get no path from pvesm path $stor$disk\n" if !$path;
+ die "Get no path from pvesm path $stor:$disk\n" if !$path;
if ($vm_type eq 'qemu' && $path =~ m/^\/dev\/zvol\/(\w+.*)(\/$disk)$/) {
--
2.20.1
^ permalink raw reply [flat|nested] 12+ messages in thread
* [pve-devel] [PATCH zsync 09/10] parse disks: also include storage ID information
2021-05-04 8:09 [pve-devel] [PATCH-SERIES zsync] fix #1669: allow prepending storage ID Fabian Ebner
` (7 preceding siblings ...)
2021-05-04 8:10 ` [pve-devel] [PATCH zsync 08/10] parse disks: don't include colon in storage name variable Fabian Ebner
@ 2021-05-04 8:10 ` Fabian Ebner
2021-05-04 8:10 ` [pve-devel] [PATCH zsync 10/10] fix #1669: add prepend-storage-id flag Fabian Ebner
2021-05-04 12:01 ` [pve-devel] applied-series: [PATCH-SERIES zsync] fix #1669: allow prepending storage ID Thomas Lamprecht
10 siblings, 0 replies; 12+ messages in thread
From: Fabian Ebner @ 2021-05-04 8:10 UTC (permalink / raw)
To: pve-devel
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
---
pve-zsync | 2 ++
1 file changed, 2 insertions(+)
diff --git a/pve-zsync b/pve-zsync
index e4f927e..75d4d7c 100755
--- a/pve-zsync
+++ b/pve-zsync
@@ -877,6 +877,8 @@ sub parse_disks {
die "Get no path from pvesm path $stor:$disk\n" if !$path;
+ $disks->{$num}->{storage_id} = $stor;
+
if ($vm_type eq 'qemu' && $path =~ m/^\/dev\/zvol\/(\w+.*)(\/$disk)$/) {
my @array = split('/', $1);
--
2.20.1
^ permalink raw reply [flat|nested] 12+ messages in thread
* [pve-devel] [PATCH zsync 10/10] fix #1669: add prepend-storage-id flag
2021-05-04 8:09 [pve-devel] [PATCH-SERIES zsync] fix #1669: allow prepending storage ID Fabian Ebner
` (8 preceding siblings ...)
2021-05-04 8:10 ` [pve-devel] [PATCH zsync 09/10] parse disks: also include storage ID information Fabian Ebner
@ 2021-05-04 8:10 ` Fabian Ebner
2021-05-04 12:01 ` [pve-devel] applied-series: [PATCH-SERIES zsync] fix #1669: allow prepending storage ID Thomas Lamprecht
10 siblings, 0 replies; 12+ messages in thread
From: Fabian Ebner @ 2021-05-04 8:10 UTC (permalink / raw)
To: pve-devel
so one can set up jobs for guests with disks with the same name on different
storages. For example,
storageA:vm-123-disk-0
storageB:vm-123-disk-0
will be synced to
target/storageA/vm-123-disk-0
target/storageB/vm-123-disk-0
when the flag is specified.
The necessary parent file systems (one per storage ID) are created as needed.
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
---
pve-zsync | 36 ++++++++++++++++++++++++++++++++++++
1 file changed, 36 insertions(+)
diff --git a/pve-zsync b/pve-zsync
index 75d4d7c..521abf0 100755
--- a/pve-zsync
+++ b/pve-zsync
@@ -249,6 +249,7 @@ sub parse_argv {
method => undef,
source_user => undef,
dest_user => undef,
+ prepend_storage_id => undef,
properties => undef,
dest_config_path => undef,
};
@@ -265,6 +266,7 @@ sub parse_argv {
'method=s' => \$param->{method},
'source-user=s' => \$param->{source_user},
'dest-user=s' => \$param->{dest_user},
+ 'prepend-storage-id' => \$param->{prepend_storage_id},
'properties' => \$param->{properties},
'dest-config-path=s' => \$param->{dest_config_path},
);
@@ -336,6 +338,7 @@ sub param_to_job {
$job->{source} = $param->{source};
$job->{source_user} = $param->{source_user};
$job->{dest_user} = $param->{dest_user};
+ $job->{prepend_storage_id} = !!$param->{prepend_storage_id};
$job->{properties} = !!$param->{properties};
$job->{dest_config_path} = $param->{dest_config_path} if $param->{dest_config_path};
@@ -461,6 +464,7 @@ sub format_job {
$text .= " --verbose" if $job->{verbose};
$text .= " --source-user $job->{source_user}";
$text .= " --dest-user $job->{dest_user}";
+ $text .= " --prepend-storage-id" if $job->{prepend_storage_id};
$text .= " --properties" if $job->{properties};
$text .= " --dest-config-path $job->{dest_config_path}" if $job->{dest_config_path};
$text .= "\n";
@@ -674,6 +678,8 @@ sub sync {
($dest->{old_snap}, $dest->{last_snap}) = snapshot_get($source, $dest, $param->{maxsnap}, $param->{name}, $param->{dest_user});
+ prepare_prepended_target($source, $dest, $param->{dest_user}) if defined($dest->{prepend});
+
snapshot_add($source, $dest, $param->{name}, $date, $param->{source_user}, $param->{dest_user});
send_image($source, $dest, $param);
@@ -693,6 +699,10 @@ sub sync {
$source->{pool} = $disks->{$disk}->{pool};
$source->{path} = $disks->{$disk}->{path} if $disks->{$disk}->{path};
$source->{last_part} = $disks->{$disk}->{last_part};
+
+ $dest->{prepend} = $disks->{$disk}->{storage_id}
+ if $param->{prepend_storage_id};
+
&$sync_path($source, $dest, $job, $param, $date);
}
if ($param->{method} eq "ssh" && ($source->{ip} || $dest->{ip})) {
@@ -921,12 +931,30 @@ sub target_dataset {
my ($source, $dest) = @_;
my $target = "$dest->{all}";
+ $target .= "/$dest->{prepend}" if defined($dest->{prepend});
$target .= "/$source->{last_part}" if $source->{last_part};
$target =~ s!/+!/!g;
return $target;
}
+# create the parent dataset for the actual target
+sub prepare_prepended_target {
+ my ($source, $dest, $dest_user) = @_;
+
+ die "internal error - not a prepended target\n" if !defined($dest->{prepend});
+
+ # The parent dataset shouldn't be the actual target.
+ die "internal error - no last_part for source\n" if !$source->{last_part};
+
+ my $target = "$dest->{all}/$dest->{prepend}";
+ $target =~ s!/+!/!g;
+
+ return if check_dataset_exists($target, $dest->{ip}, $dest_user);
+
+ create_file_system($target, $dest->{ip}, $dest_user);
+}
+
sub snapshot_destroy {
my ($source, $dest, $method, $snap, $source_user, $dest_user) = @_;
@@ -1138,6 +1166,10 @@ $PROGNAME create -dest <string> -source <string> [OPTIONS]
name of the sync job, if not set it is default
+ -prepend-storage-id
+
+ If specified, prepend the storage ID to the destination's path(s).
+
-skip
If specified, skip the first sync.
@@ -1184,6 +1216,10 @@ $PROGNAME sync -dest <string> -source <string> [OPTIONS]\n
name of the sync job, if not set it is default.
It is only necessary if scheduler allready contains this source.
+ -prepend-storage-id
+
+ If specified, prepend the storage ID to the destination's path(s).
+
-source string
the source can be an <VMID> or [IP:]<ZFSPool>[/Path]
--
2.20.1
^ permalink raw reply [flat|nested] 12+ messages in thread
* [pve-devel] applied-series: [PATCH-SERIES zsync] fix #1669: allow prepending storage ID
2021-05-04 8:09 [pve-devel] [PATCH-SERIES zsync] fix #1669: allow prepending storage ID Fabian Ebner
` (9 preceding siblings ...)
2021-05-04 8:10 ` [pve-devel] [PATCH zsync 10/10] fix #1669: add prepend-storage-id flag Fabian Ebner
@ 2021-05-04 12:01 ` Thomas Lamprecht
10 siblings, 0 replies; 12+ messages in thread
From: Thomas Lamprecht @ 2021-05-04 12:01 UTC (permalink / raw)
To: Proxmox VE development discussion, Fabian Ebner
On 04.05.21 10:09, Fabian Ebner wrote:
> which makes it possible to use pve-zsync for guests with disks with the same
> name on different storages, i.e.
> storageA:vm-123-disk-0
> storageB:vm-123-disk-0
>
> Currently they would collide to
> target/vm-123-disk-0
>
> When the new prepend-storage-id flag is specified, they will be synced to
> target/storageA/vm-123-disk-0$
> target/storageB/vm-123-disk-0$
> instead.
>
>
> The first four patches are cleanups/usage description fixes.
>
> The next five patches are preparations for the last patch, which is the one
> actually implementing the new feature.
>
>
> Fabian Ebner (10):
> whitespace fix
> copyright: update year
> usage: describe flag parameters correctly
> usage: fix type for maxsnap
> add target_dataset function
> add check_dataset_exists function
> add create_file_system function
> parse disks: don't include colon in storage name variable
> parse disks: also include storage ID information
> fix #1669: add prepend-storage-id flag
>
> pve-zsync | 118 ++++++++++++++++++++++++++++++++++++++++--------------
> 1 file changed, 89 insertions(+), 29 deletions(-)
>
applied series, thanks!
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2021-05-04 12:01 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-04 8:09 [pve-devel] [PATCH-SERIES zsync] fix #1669: allow prepending storage ID Fabian Ebner
2021-05-04 8:09 ` [pve-devel] [PATCH zsync 01/10] whitespace fix Fabian Ebner
2021-05-04 8:09 ` [pve-devel] [PATCH zsync 02/10] copyright: update year Fabian Ebner
2021-05-04 8:09 ` [pve-devel] [PATCH zsync 03/10] usage: describe flag parameters correctly Fabian Ebner
2021-05-04 8:09 ` [pve-devel] [PATCH zsync 04/10] usage: fix type for maxsnap Fabian Ebner
2021-05-04 8:09 ` [pve-devel] [PATCH zsync 05/10] add target_dataset function Fabian Ebner
2021-05-04 8:10 ` [pve-devel] [PATCH zsync 06/10] add check_dataset_exists function Fabian Ebner
2021-05-04 8:10 ` [pve-devel] [PATCH zsync 07/10] add create_file_system function Fabian Ebner
2021-05-04 8:10 ` [pve-devel] [PATCH zsync 08/10] parse disks: don't include colon in storage name variable Fabian Ebner
2021-05-04 8:10 ` [pve-devel] [PATCH zsync 09/10] parse disks: also include storage ID information Fabian Ebner
2021-05-04 8:10 ` [pve-devel] [PATCH zsync 10/10] fix #1669: add prepend-storage-id flag Fabian Ebner
2021-05-04 12:01 ` [pve-devel] applied-series: [PATCH-SERIES zsync] fix #1669: allow prepending storage ID Thomas Lamprecht
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal