summaryrefslogtreecommitdiff
path: root/sysutils
diff options
context:
space:
mode:
authorVeniamin Gvozdikov <vg@FreeBSD.org>2014-01-03 17:49:34 +0000
committerVeniamin Gvozdikov <vg@FreeBSD.org>2014-01-03 17:49:34 +0000
commit16767a8f6e9dee499e73236ee139e751cf50ce25 (patch)
tree31c2465428f8ccb105019c6306d9dae990f09b49 /sysutils
parentAdd CONFLICTS for incoming net-mgmt/unifi2 (diff)
Zrep is an enterprise-grade, single-program solution for handling asynchronous,
continuous replication of a zfs filesystem, to another filesystem. That filesystem can be on another machine, or on the same machine. It also handles 'failover', as simply as "zrep failover datapool/yourfs". This will conveniently handle all the details of - Making 'yourfs' be a data destination, rather than a source - Making 'yourfs' be read-only - Making the destination fs be "live", and ready to transfer data to yourfs WWW: http://www.bolthole.com/solaris/zrep/ PR: ports/184086 Submitted by: Oleg Ginzburg <olevole@olevole.ru>
Notes
Notes: svn path=/head/; revision=338565
Diffstat (limited to 'sysutils')
-rw-r--r--sysutils/Makefile1
-rw-r--r--sysutils/zrep/Makefile36
-rw-r--r--sysutils/zrep/distinfo2
-rw-r--r--sysutils/zrep/files/patch-zrep94
-rw-r--r--sysutils/zrep/pkg-descr12
5 files changed, 145 insertions, 0 deletions
diff --git a/sysutils/Makefile b/sysutils/Makefile
index f34fc3e89074..3e271c229db0 100644
--- a/sysutils/Makefile
+++ b/sysutils/Makefile
@@ -1069,6 +1069,7 @@
SUBDIR += zidrav
SUBDIR += zisofs-tools
SUBDIR += zogftw
+ SUBDIR += zrep
SUBDIR += zxfer
.include <bsd.port.subdir.mk>
diff --git a/sysutils/zrep/Makefile b/sysutils/zrep/Makefile
new file mode 100644
index 000000000000..4f5eb0588aca
--- /dev/null
+++ b/sysutils/zrep/Makefile
@@ -0,0 +1,36 @@
+# $FreeBSD$
+
+PORTNAME= zrep
+PORTVERSION= 1.0.1
+CATEGORIES= sysutils
+MASTER_SITES= http://www.bolthole.com/solaris/zrep/ \
+ http://www.bsdstore.ru/downloads/
+DISTNAME= ${PORTNAME}
+EXTRACT_SUFX=
+
+MAINTAINER= olevole@olevole.ru
+COMMENT= ZFS based replication and failover solution
+
+RUN_DEPENDS= ksh93:${PORTSDIR}/shells/ksh93
+
+PLIST_FILES= bin/zrep
+
+NO_INSTALL_MANPAGES= yes
+
+NO_BUILD= yes
+NO_INSTALL= yes
+NO_EXTRACT= yes
+
+.include <bsd.port.options.mk>
+
+post-patch:
+ @${REINPLACE_CMD} -e 's|#!/bin/ksh -p|#!${PREFIX}/bin/ksh93 -p|' ${WRKSRC}/zrep
+
+do-extract:
+ @${MKDIR} ${WRKSRC}
+ @${CP} -p ${DISTDIR}/${PORTNAME} ${WRKSRC}
+
+do-install:
+ ${INSTALL_SCRIPT} ${WRKSRC}/${PORTNAME} ${STAGEDIR}/${PREFIX}/bin
+
+.include <bsd.port.mk>
diff --git a/sysutils/zrep/distinfo b/sysutils/zrep/distinfo
new file mode 100644
index 000000000000..883f316d43f2
--- /dev/null
+++ b/sysutils/zrep/distinfo
@@ -0,0 +1,2 @@
+SHA256 (zrep) = 2156852bfe0e9ed3a220cbb459ffb2b423488de023b03f8f9c8e1af876a44b75
+SIZE (zrep) = 45158
diff --git a/sysutils/zrep/files/patch-zrep b/sysutils/zrep/files/patch-zrep
new file mode 100644
index 000000000000..608be8ba7d3b
--- /dev/null
+++ b/sysutils/zrep/files/patch-zrep
@@ -0,0 +1,94 @@
+--- zrep.orig 2013-05-13 22:01:15.000000000 +0400
++++ zrep 2013-11-19 18:37:52.921978370 +0400
+@@ -15,7 +15,6 @@
+ ZREP_PATH=${ZREP_PATH:-zrep} #Set to /path/to/zrep, if needed, for remote
+ #ZREP_CREATE_FLAGS="-o whatever" #Set for extra options on remote zfs create
+
+-
+ #########################################################################
+ # Everyting else below here, should not be touched. First we have autodetect
+ # routines, and then internal utilities such as locking functions.
+@@ -35,8 +34,8 @@
+
+ # dump the usage message, and check for capabilities
+ # make sure we dont spew for non-root, so that "zrep status" works
+-case `id` in
+- *\(root\))
++case `whoami` in
++ root)
+ zrep_checkfile=/var/run/zrep.check.$$
+ ;;
+ *)
+@@ -109,7 +108,8 @@
+ # Note that we check for "us, OR our global parent", if different
+ #
+ zrep_has_global_lock(){
+- lockpid=`ls -l $Z_GLOBAL_LOCKFILE 2>/dev/null |awk -F/ '{print $NF}'`
++ [ ! -f "${Z_GLOBAL_LOCKFILE}" ] && return 1
++ lockpid=`cat ${Z_GLOBAL_LOCKFILE}`
+ if [[ "$lockpid" == "" ]] ; then return 1 ; fi
+ if [[ "$lockpid" != "$Z_GLOBAL_PID" ]] ; then
+ if [[ "$lockpid" != "$$" ]] ; then
+@@ -127,7 +127,10 @@
+ zrep_get_global_lock(){
+ typeset retry_count=$Z_LOCK_RETRY
+
+- ln -s /proc/$Z_GLOBAL_PID $Z_GLOBAL_LOCKFILE && return 0
++ if [ ! -f "${Z_GLOBAL_LOCKFILE}" ] ; then
++ echo $Z_GLOBAL_PID > $Z_GLOBAL_LOCKFILE
++ return 0
++ fi
+
+ # otherwise, deal with fail
+ # Check for dead old holder first.
+@@ -135,7 +138,10 @@
+
+ while (( retry_count > 0 )); do
+ sleep 1
+- ln -s /proc/$Z_GLOBAL_PID $Z_GLOBAL_LOCKFILE && return 0
++ if [ ! -f "${Z_GLOBAL_LOCKFILE}" ] ; then
++ echo $Z_GLOBAL_PID > $Z_GLOBAL_LOCKFILE
++ return 0
++ fi
+ retry_count=$((retry_count-1))
+ done
+
+@@ -178,7 +184,9 @@
+ typeset check=`zrep_fs_lock_pid $1` newcheck
+ if [[ "$check" != "-" ]] ; then
+ # validate fs lock before giving up
+- ls -d /proc/$check >/dev/null 2>&1 && return 1
++ if [ "${check}" != "-" ] ; then
++ [ -f "${Z_GLOBAL_LOCKFILE}" ] && return 1
++ fi
+ fi
+
+ zrep_get_global_lock || return 1
+@@ -257,8 +265,7 @@
+
+ zrep_gettimeinseconds(){
+ # unfortunately, solaris date doesnt do '%s', so need to use perl
+- typeset PATH=$PERL_BIN:$PATH
+- perl -e 'print int(time);'
++ date +%s
+ }
+ ###### zrep_status
+
+@@ -713,7 +720,7 @@
+ READONLYPROP="-o readonly=on"
+ else
+ READONLYPROP=""
+- print Ancient local version of ZFS detected.
++# print Ancient local version of ZFS detected.
+ print Creating destination filesystem as separate step
+ zrep_ssh $desthost zfs create $ZREP_CREATE_FLAGS -o readonly=on $destfs || zrep_errquit "Cannot create $desthost:$destfs"
+ fi
+@@ -757,7 +764,7 @@
+ # Successful initial sync! Woo! okay record that, etc.
+ # ... after stupid old-zfs-compat junk, that is
+ if (( ! Z_HAS_X )) ; then
+- print Debug: Because you have old zfs support, setting remote properties by hand
++# print Debug: Because you have old zfs support, setting remote properties by hand
+ zrep_ssh $desthost zfs set readonly=on $destfs ||
+ clearquit Could not set readonly for $desthost:$destfs
+
diff --git a/sysutils/zrep/pkg-descr b/sysutils/zrep/pkg-descr
new file mode 100644
index 000000000000..86a7f87a9434
--- /dev/null
+++ b/sysutils/zrep/pkg-descr
@@ -0,0 +1,12 @@
+Zrep is an enterprise-grade, single-program solution for handling asynchronous,
+continuous replication of a zfs filesystem, to another filesystem.
+That filesystem can be on another machine, or on the same machine.
+
+It also handles 'failover', as simply as "zrep failover datapool/yourfs".
+This will conveniently handle all the details of
+
+ - Making 'yourfs' be a data destination, rather than a source
+ - Making 'yourfs' be read-only
+ - Making the destination fs be "live", and ready to transfer data to yourfs
+
+WWW: http://www.bolthole.com/solaris/zrep/