Permalink
Browse files

1.4.7 reverted shebangs to Linux style, added -F to zfs receive, dyke…

…d out set readonly behavior to mitigate upstream bugs in mount/unmount
  • Loading branch information...
1 parent c0f065b commit 95f1ecb159639e3ea7ee686ba70caf22928b6183 @jimsalterjrs committed Jun 13, 2016
Showing with 36 additions and 15 deletions.
  1. +10 −0 CHANGELIST
  2. +1 −1 VERSION
  3. +2 −2 findoid
  4. +2 −2 sanoid
  5. +21 −10 syncoid
View
@@ -1,3 +1,13 @@
+1.4.7 reverted Perl shebangs to #!/usr/bin/perl - sorry FreeBSD folks, shebanged to /usr/bin/env perl bare calls to syncoid
+ or sanoid (without explicit calls to Perl) don't work on EITHER of our systems. I'm not OK with that, this is going to be
+ an OS localization issue that can either be addressed with BSD-specific packaging, or you can individually address it
+ by editing the shebangs on your own systems OR by doing a one-time ln -s /usr/local/bin/perl to /usr/bin/perl, which will
+ fix the issue for this particular script AND all other Perl scripts developed on non-BSD systems.
+
+ also temporarily dyked out the set readonly functionality in syncoid - it was causing more problems than it prevented, and
+ using the -F argument with receive prevents incautious writes (including just cd'ing into mounted datasets, if atimes are on)
+ from interrupting syncoid runs anyway.
+
1.4.6c merged @gusson's pull request to add -sshport argument
1.4.6b updated default cipherlist for syncoid to
View
@@ -1 +1 @@
-1.4.6
+1.4.7
View
@@ -1,4 +1,4 @@
-#!/usr/bin/env perl
+#!/usr/bin/perl
# this software is licensed for use under the Free Software Foundation's GPL v3.0 license, as retrieved
# from http://www.gnu.org/licenses/gpl-3.0.html on 2014-11-17. A copy should also be available in this
@@ -11,7 +11,7 @@ use warnings;
my $zfs = '/sbin/zfs';
my %args = getargs(@ARGV);
-my $progversion = '1.4.6c';
+my $progversion = '1.4.7';
if ($args{'version'}) { print "$progversion\n"; exit 0; }
View
@@ -1,10 +1,10 @@
-#!/usr/bin/env perl
+#!/usr/bin/perl
# this software is licensed for use under the Free Software Foundation's GPL v3.0 license, as retrieved
# from http://www.gnu.org/licenses/gpl-3.0.html on 2014-11-17. A copy should also be available in this
# project's Git repository at https://github.com/jimsalterjrs/sanoid/blob/master/LICENSE.
-my $version = '1.4.6c';
+my $version = '1.4.7';
use strict;
use Config::IniFiles; # read samba-style conf file
View
@@ -1,10 +1,10 @@
-#!/usr/bin/env perl
+#!/usr/bin/perl
# this software is licensed for use under the Free Software Foundation's GPL v3.0 license, as retrieved
# from http://www.gnu.org/licenses/gpl-3.0.html on 2014-11-17. A copy should also be available in this
# project's Git repository at https://github.com/jimsalterjrs/sanoid/blob/master/LICENSE.
-my $version = '1.4.6c';
+my $version = '1.4.7';
use strict;
use Data::Dumper;
@@ -146,7 +146,9 @@ sub syncdataset {
# been turned on... even when it's off... unless and
# until the filesystem is zfs umounted and zfs remounted.
# we're going to do the right thing anyway.
- my $originaltargetreadonly;
+ # dyking this functionality out for the time being due to buggy mount/unmount behavior
+ # with ZFS on Linux (possibly OpenZFS in general) when setting/unsetting readonly.
+ #my $originaltargetreadonly;
# sync 'em up.
if (! $targetexists) {
@@ -181,8 +183,10 @@ sub syncdataset {
if ($oldestsnap ne $newsyncsnap) {
# get current readonly status of target, then set it to on during sync
- $originaltargetreadonly = getzfsvalue($targethost,$targetfs,$targetisroot,'readonly');
- setzfsvalue($targethost,$targetfs,$targetisroot,'readonly','on');
+ # dyking this functionality out for the time being due to buggy mount/unmount behavior
+ # with ZFS on Linux (possibly OpenZFS in general) when setting/unsetting readonly.
+ # $originaltargetreadonly = getzfsvalue($targethost,$targetfs,$targetisroot,'readonly');
+ # setzfsvalue($targethost,$targetfs,$targetisroot,'readonly','on');
$sendcmd = "$sourcesudocmd $zfscmd send -I $sourcefs\@$oldestsnap $sourcefs\@$newsyncsnap";
$pvsize = getsendsize($sourcehost,"$sourcefs\@$oldestsnap","$sourcefs\@$newsyncsnap",$sourceisroot);
@@ -201,15 +205,20 @@ sub syncdataset {
or die "CRITICAL ERROR: $synccmd failed: $?";
# restore original readonly value to target after sync complete
- setzfsvalue($targethost,$targetfs,$targetisroot,'readonly',$originaltargetreadonly);
+ # dyking this functionality out for the time being due to buggy mount/unmount behavior
+ # with ZFS on Linux (possibly OpenZFS in general) when setting/unsetting readonly.
+ # setzfsvalue($targethost,$targetfs,$targetisroot,'readonly',$originaltargetreadonly);
}
} else {
# find most recent matching snapshot and do an -I
# to the new snapshot
# get current readonly status of target, then set it to on during sync
- $originaltargetreadonly = getzfsvalue($targethost,$targetfs,$targetisroot,'readonly');
- setzfsvalue($targethost,$targetfs,$targetisroot,'readonly','on');
+ # dyking this functionality out for the time being due to buggy mount/unmount behavior
+ # with ZFS on Linux (possibly OpenZFS in general) when setting/unsetting readonly.
+ # $originaltargetreadonly = getzfsvalue($targethost,$targetfs,$targetisroot,'readonly');
+ # setzfsvalue($targethost,$targetfs,$targetisroot,'readonly','on');
+
my $targetsize = getzfsvalue($targethost,$targetfs,$targetisroot,'-p used');
my $matchingsnap = getmatchingsnapshot($targetsize, \%snaps);
@@ -230,7 +239,7 @@ sub syncdataset {
}
my $sendcmd = "$sourcesudocmd $zfscmd send -I $sourcefs\@$matchingsnap $sourcefs\@$newsyncsnap";
- my $recvcmd = "$targetsudocmd $zfscmd receive $targetfs";
+ my $recvcmd = "$targetsudocmd $zfscmd receive -F $targetfs";
my $pvsize = getsendsize($sourcehost,"$sourcefs\@$matchingsnap","$sourcefs\@$newsyncsnap",$sourceisroot);
my $disp_pvsize = readablebytes($pvsize);
if ($pvsize == 0) { $disp_pvsize = "UNKNOWN"; }
@@ -242,7 +251,9 @@ sub syncdataset {
or die "CRITICAL ERROR: $synccmd failed: $?";
# restore original readonly value to target after sync complete
- setzfsvalue($targethost,$targetfs,$targetisroot,'readonly',$originaltargetreadonly);
+ # dyking this functionality out for the time being due to buggy mount/unmount behavior
+ # with ZFS on Linux (possibly OpenZFS in general) when setting/unsetting readonly.
+ #setzfsvalue($targethost,$targetfs,$targetisroot,'readonly',$originaltargetreadonly);
}
# prune obsolete sync snaps on source and target.

0 comments on commit 95f1ecb

Please sign in to comment.