check pool capability for resumeable replication instead of checking for support in the zfs module
This commit is contained in:
parent
9ec0c0bfb1
commit
c12b6d716b
25
syncoid
25
syncoid
|
@ -64,6 +64,7 @@ my $quiet = $args{'quiet'};
|
||||||
my $resume = !$args{'no-resume'};
|
my $resume = !$args{'no-resume'};
|
||||||
|
|
||||||
my $zfscmd = '/sbin/zfs';
|
my $zfscmd = '/sbin/zfs';
|
||||||
|
my $zpoolcmd = '/sbin/zpool';
|
||||||
my $sshcmd = '/usr/bin/ssh';
|
my $sshcmd = '/usr/bin/ssh';
|
||||||
my $pscmd = '/bin/ps';
|
my $pscmd = '/bin/ps';
|
||||||
|
|
||||||
|
@ -886,14 +887,32 @@ sub checkcommands {
|
||||||
|
|
||||||
# check for ZFS resume feature support
|
# check for ZFS resume feature support
|
||||||
if ($resume) {
|
if ($resume) {
|
||||||
my $resumechkcmd = "$zfscmd get -d 0 receive_resume_token";
|
my @parts = split ('/', $args{'source'});
|
||||||
|
my $srcpool = $parts[0];
|
||||||
|
@parts = split ('/', $args{'target'});
|
||||||
|
my $dstpool = $parts[0];
|
||||||
|
|
||||||
|
$srcpool = escapeshellparam($srcpool);
|
||||||
|
$dstpool = escapeshellparam($dstpool);
|
||||||
|
|
||||||
|
if ($sourcehost ne '') {
|
||||||
|
# double escaping needed
|
||||||
|
$srcpool = escapeshellparam($srcpool);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($targethost ne '') {
|
||||||
|
# double escaping needed
|
||||||
|
$dstpool = escapeshellparam($dstpool);
|
||||||
|
}
|
||||||
|
|
||||||
|
my $resumechkcmd = "$zpoolcmd get -o value -H feature\@extensible_dataset";
|
||||||
|
|
||||||
if ($debug) { print "DEBUG: checking availability of zfs resume feature on source...\n"; }
|
if ($debug) { print "DEBUG: checking availability of zfs resume feature on source...\n"; }
|
||||||
$avail{'sourceresume'} = system("$sourcessh $resumechkcmd >/dev/null 2>&1");
|
$avail{'sourceresume'} = system("$sourcessh $resumechkcmd $srcpool 2>/dev/null | grep '\\(active\\|enabled\\)' >/dev/null 2>&1");
|
||||||
$avail{'sourceresume'} = $avail{'sourceresume'} == 0 ? 1 : 0;
|
$avail{'sourceresume'} = $avail{'sourceresume'} == 0 ? 1 : 0;
|
||||||
|
|
||||||
if ($debug) { print "DEBUG: checking availability of zfs resume feature on target...\n"; }
|
if ($debug) { print "DEBUG: checking availability of zfs resume feature on target...\n"; }
|
||||||
$avail{'targetresume'} = system("$targetssh $resumechkcmd >/dev/null 2>&1");
|
$avail{'targetresume'} = system("$targetssh $resumechkcmd $dstpool 2>/dev/null | grep '\\(active\\|enabled\\)' >/dev/null 2>&1");
|
||||||
$avail{'targetresume'} = $avail{'targetresume'} == 0 ? 1 : 0;
|
$avail{'targetresume'} = $avail{'targetresume'} == 0 ? 1 : 0;
|
||||||
|
|
||||||
if ($avail{'sourceresume'} == 0 || $avail{'targetresume'} == 0) {
|
if ($avail{'sourceresume'} == 0 || $avail{'targetresume'} == 0) {
|
||||||
|
|
Loading…
Reference in New Issue