some FreeBSD related fixes

This commit is contained in:
Christoph Klaffl 2019-06-14 15:45:44 +02:00
parent d96f2d9c92
commit 9791094816
No known key found for this signature in database
GPG Key ID: 8FC1D76EED4970D2
3 changed files with 20 additions and 25 deletions

View File

@ -773,7 +773,8 @@ sub syncdataset {
}; };
$exit == 0 or do { $exit == 0 or do {
if (!$resume && $stdout =~ /\Qcontains partially-complete state\E/) { # FreeBSD reports "dataset is busy" instead of "contains partially-complete state"
if (!$resume && ($stdout =~ /\Qcontains partially-complete state\E/ || $stdout =~ /\Qdataset is busy\E/)) {
if (!$quiet) { print "WARN: resetting partially receive state\n"; } if (!$quiet) { print "WARN: resetting partially receive state\n"; }
resetreceivestate($targethost,$targetfs,$targetisroot); resetreceivestate($targethost,$targetfs,$targetisroot);
system("$synccmd") == 0 or do { system("$synccmd") == 0 or do {

View File

@ -23,7 +23,7 @@ function cleanUp {
# export pool in any case # export pool in any case
trap cleanUp EXIT trap cleanUp EXIT
zfs create "${POOL_NAME}"/src -o mountpoint="${MOUNT_TARGET}" zfs create -o mountpoint="${MOUNT_TARGET}" "${POOL_NAME}"/src
../../../syncoid --debug --compress=none "${POOL_NAME}"/src "${POOL_NAME}"/dst ../../../syncoid --debug --compress=none "${POOL_NAME}"/src "${POOL_NAME}"/dst
dd if=/dev/urandom of="${MOUNT_TARGET}"/big_file bs=1M count=200 dd if=/dev/urandom of="${MOUNT_TARGET}"/big_file bs=1M count=200
@ -31,19 +31,16 @@ dd if=/dev/urandom of="${MOUNT_TARGET}"/big_file bs=1M count=200
../../../syncoid --debug --compress=none --source-bwlimit=2m "${POOL_NAME}"/src "${POOL_NAME}"/dst & ../../../syncoid --debug --compress=none --source-bwlimit=2m "${POOL_NAME}"/src "${POOL_NAME}"/dst &
syncoid_pid=$! syncoid_pid=$!
sleep 5 sleep 5
list_descendants () function getcpid() {
{ cpids=$(pgrep -P "$1"|xargs)
local children=$(ps -o pid= --ppid "$1") for cpid in $cpids;
do
for pid in $children echo "$cpid"
do getcpid "$cpid"
list_descendants "$pid" done
done
echo "$children"
} }
kill $(list_descendants $$) || true kill $(getcpid $$) || true
wait wait
sleep 1 sleep 1

View File

@ -23,7 +23,7 @@ function cleanUp {
# export pool in any case # export pool in any case
trap cleanUp EXIT trap cleanUp EXIT
zfs create "${POOL_NAME}"/src -o mountpoint="${MOUNT_TARGET}" zfs create -o mountpoint="${MOUNT_TARGET}" "${POOL_NAME}"/src
../../../syncoid --debug --compress=none "${POOL_NAME}"/src "${POOL_NAME}"/dst ../../../syncoid --debug --compress=none "${POOL_NAME}"/src "${POOL_NAME}"/dst
dd if=/dev/urandom of="${MOUNT_TARGET}"/big_file bs=1M count=200 dd if=/dev/urandom of="${MOUNT_TARGET}"/big_file bs=1M count=200
@ -32,19 +32,16 @@ zfs snapshot "${POOL_NAME}"/src@big
../../../syncoid --debug --no-sync-snap --compress=none --source-bwlimit=2m "${POOL_NAME}"/src "${POOL_NAME}"/dst & ../../../syncoid --debug --no-sync-snap --compress=none --source-bwlimit=2m "${POOL_NAME}"/src "${POOL_NAME}"/dst &
syncoid_pid=$! syncoid_pid=$!
sleep 5 sleep 5
list_descendants () function getcpid() {
{ cpids=$(pgrep -P "$1"|xargs)
local children=$(ps -o pid= --ppid "$1") for cpid in $cpids;
do
for pid in $children echo "$cpid"
do getcpid "$cpid"
list_descendants "$pid" done
done
echo "$children"
} }
kill $(list_descendants $$) || true kill $(getcpid $$) || true
wait wait
sleep 1 sleep 1