From: Fabian Ebner <f.ebner@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH pve-zsync] close #1824: add 'compressed' option enabling -c and -L for send
Date: Tue, 10 May 2022 13:19:15 +0200 [thread overview]
Message-ID: <20220510111915.50443-1-f.ebner@proxmox.com> (raw)
If one of the features lz4_compress, zstd_compress or large_blocks is
actively used/required by the source dataset, but not enabled on the
destination, zfs send/recv will fail and recommend upgrading the pool.
It's not required that the target dataset is also compressed.
Specifying '--properties' to have the target inherit the compression
property even works during later syncs (but pre-existing data won't be
recompressed automatically then).
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
---
Put it near 'properties' as I felt like that was the most similar one.
pve-zsync | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/pve-zsync b/pve-zsync
index 46b0ba7..98190b2 100755
--- a/pve-zsync
+++ b/pve-zsync
@@ -252,6 +252,7 @@ sub parse_argv {
source_user => undef,
dest_user => undef,
prepend_storage_id => undef,
+ compressed => undef,
properties => undef,
dest_config_path => undef,
};
@@ -270,6 +271,7 @@ sub parse_argv {
'source-user=s' => \$param->{source_user},
'dest-user=s' => \$param->{dest_user},
'prepend-storage-id' => \$param->{prepend_storage_id},
+ 'compressed' => \$param->{compressed},
'properties' => \$param->{properties},
'dest-config-path=s' => \$param->{dest_config_path},
);
@@ -343,6 +345,7 @@ sub param_to_job {
$job->{source_user} = $param->{source_user};
$job->{dest_user} = $param->{dest_user};
$job->{prepend_storage_id} = !!$param->{prepend_storage_id};
+ $job->{compressed} = !!$param->{compressed};
$job->{properties} = !!$param->{properties};
$job->{dest_config_path} = $param->{dest_config_path} if $param->{dest_config_path};
@@ -470,6 +473,7 @@ sub format_job {
$text .= " --source-user $job->{source_user}";
$text .= " --dest-user $job->{dest_user}";
$text .= " --prepend-storage-id" if $job->{prepend_storage_id};
+ $text .= " --compressed" if $job->{compressed};
$text .= " --properties" if $job->{properties};
$text .= " --dest-config-path $job->{dest_config_path}" if $job->{dest_config_path};
$text .= "\n";
@@ -1028,6 +1032,8 @@ sub send_image {
push @$cmd, 'ssh', '-o', 'BatchMode=yes', "$param->{source_user}\@$source->{ip}", '--' if $source->{ip};
push @$cmd, 'zfs', 'send';
+ push @$cmd, '-L', if $param->{compressed}; # no effect if dataset never had large recordsize
+ push @$cmd, '-c', if $param->{compressed};
push @$cmd, '-p', if $param->{properties};
push @$cmd, '-v' if $param->{verbose};
@@ -1190,6 +1196,11 @@ $PROGNAME create --dest <string> --source <string> [OPTIONS]
--source-user string
The (ssh) user-name on the source target, root by default
+ --compressed
+ If specified, send data without decompressing first. If features lz4_compress,
+ zstd_compress or large_blocks are in use by the source, they need to be enabled on
+ the target as well.
+
--properties
If specified, include the dataset's properties in the stream.
@@ -1234,6 +1245,11 @@ $PROGNAME sync --dest <string> --source <string> [OPTIONS]\n
--verbose
If specified, print out the sync progress.
+ --compressed
+ If specified, send data without decompressing first. If features lz4_compress,
+ zstd_compress or large_blocks are in use by the source, they need to be enabled on
+ the target as well.
+
--properties
If specified, include the dataset's properties in the stream.
--
2.30.2
next reply other threads:[~2022-05-10 11:19 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-10 11:19 Fabian Ebner [this message]
2022-05-12 15:16 ` [pve-devel] applied: " Thomas Lamprecht
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220510111915.50443-1-f.ebner@proxmox.com \
--to=f.ebner@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox