aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/zpool-create.sh
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2010-08-26 11:22:58 -0700
committerBrian Behlendorf <[email protected]>2010-08-31 13:41:27 -0700
commitc9c0d073da561bcbefbdf09c87fc75b227415619 (patch)
tree7daee55ae61526107f421de48171573fa5a15d28 /scripts/zpool-create.sh
parent40b84e7aec6392187722e61e5a4a853b530bf60f (diff)
Add build system
Add autoconf style build infrastructure to the ZFS tree. This includes autogen.sh, configure.ac, m4 macros, some scripts/*, and makefiles for all the core ZFS components.
Diffstat (limited to 'scripts/zpool-create.sh')
-rwxr-xr-xscripts/zpool-create.sh133
1 files changed, 133 insertions, 0 deletions
diff --git a/scripts/zpool-create.sh b/scripts/zpool-create.sh
new file mode 100755
index 000000000..d6b301e32
--- /dev/null
+++ b/scripts/zpool-create.sh
@@ -0,0 +1,133 @@
+#!/bin/bash
+
+basedir="$(dirname $0)"
+
+SCRIPT_COMMON=common.sh
+if [ -f "${basedir}/${SCRIPT_COMMON}" ]; then
+. "${basedir}/${SCRIPT_COMMON}"
+else
+echo "Missing helper script ${SCRIPT_COMMON}" && exit 1
+fi
+
+PROG=zpool-create.sh
+
+usage() {
+cat << EOF
+USAGE:
+$0 [hvcp]
+
+DESCRIPTION:
+ Create one of several predefined zpool configurations.
+
+OPTIONS:
+ -h Show this message
+ -v Verbose
+ -f Force everything
+ -c Configuration for zpool
+ -p Name for zpool
+ -d Destroy zpool (default create)
+ -l Additional zpool options
+ -s Additional zfs options
+
+EOF
+}
+
+check_config() {
+
+ if [ ! -f ${ZPOOL_CONFIG} ]; then
+ local NAME=`basename ${ZPOOL_CONFIG} .sh`
+ ERROR="Unknown config '${NAME}', available configs are:\n"
+
+ for CFG in `ls ${ZPOOLDIR}/ | grep ".sh"`; do
+ local NAME=`basename ${CFG} .sh`
+ ERROR="${ERROR}${NAME}\n"
+ done
+
+ return 1
+ fi
+
+ return 0
+}
+
+ZPOOL_CONFIG=unknown
+ZPOOL_NAME=tank
+ZPOOL_DESTROY=
+ZPOOL_OPTIONS=""
+ZFS_OPTIONS=""
+
+while getopts 'hvfc:p:dl:s:' OPTION; do
+ case $OPTION in
+ h)
+ usage
+ exit 1
+ ;;
+ v)
+ VERBOSE=1
+ VERBOSE_FLAG="-v"
+ ;;
+ f)
+ FORCE=1
+ FORCE_FLAG="-f"
+ ;;
+ c)
+ ZPOOL_CONFIG=${ZPOOLDIR}/${OPTARG}.sh
+ ;;
+ p)
+ ZPOOL_NAME=${OPTARG}
+ ;;
+ d)
+ ZPOOL_DESTROY=1
+ ;;
+ l)
+ ZPOOL_OPTIONS=${OPTARG}
+ ;;
+ s)
+ ZFS_OPTIONS=${OPTARG}
+ ;;
+ ?)
+ usage
+ exit 1
+ ;;
+ esac
+done
+
+if [ $(id -u) != 0 ]; then
+ die "Must run as root"
+fi
+
+check_config || die "${ERROR}"
+. ${ZPOOL_CONFIG}
+
+if [ ${ZPOOL_DESTROY} ]; then
+ zpool_destroy
+else
+ zpool_create
+
+ if [ "${ZPOOL_OPTIONS}" ]; then
+ if [ ${VERBOSE} ]; then
+ echo
+ echo "${ZPOOL} ${ZPOOL_OPTIONS} ${ZPOOL_NAME}"
+ fi
+ ${ZPOOL} ${ZPOOL_OPTIONS} ${ZPOOL_NAME} || exit 1
+ fi
+
+ if [ "${ZFS_OPTIONS}" ]; then
+ if [ ${VERBOSE} ]; then
+ echo
+ echo "${ZFS} ${ZFS_OPTIONS} ${ZPOOL_NAME}"
+ fi
+ ${ZFS} ${ZFS_OPTIONS} ${ZPOOL_NAME} || exit 1
+ fi
+
+ if [ ${VERBOSE} ]; then
+ echo
+ echo "zpool list"
+ ${ZPOOL} list || exit 1
+
+ echo
+ echo "zpool status ${ZPOOL_NAME}"
+ ${ZPOOL} status ${ZPOOL_NAME} || exit 1
+ fi
+fi
+
+exit 0