changeset 234:8682cfa74f6a

Minimum work on creating datasets
author Franz Glasner <fzglas.hg@dom66.de>
date Tue, 06 Sep 2022 09:40:05 +0200
parents f745d3a216a6
children 85aea8ca1ab8
files sbin/ftjail
diffstat 1 files changed, 18 insertions(+), 67 deletions(-) [+]
line wrap: on
line diff
--- a/sbin/ftjail	Mon Sep 05 09:45:13 2022 +0200
+++ b/sbin/ftjail	Tue Sep 06 09:40:05 2022 +0200
@@ -77,81 +77,32 @@
 #
 # "datasets" -- create the ZFS dataset tree
 #
+# PARENT-BASE PARENT-SKELETON NAME
+#
 command_datasets() {
     # parent ZFS dataset -- child ZFS dataset name
-    local _pds _cds
-    # and its mount point
-    local _pmp _get
-    # full name of the dataset
-    local _ds
-    # dynamic ZFS options  -- create cache for freebsd-update  -- use a more tiny layout
-    local _zfsopts _fbsdupdate _tiny _zfsnoauto _varempty_ro
+    local _p_base _p_skel _name
+    local _zfsopts
+
+    _zfsopts="-u"
 
-    _zfsopts=""
-    _fbsdupdate=""
-    _tiny="no"
-    _zfsnoauto=""
-    _varempty_ro="-o readonly=on"
-    while getopts "oustAT" _opt ; do
-        case ${_opt} in
-            A)
-                #
-                # set canmount=noauto where otherwise canmount=on would have been set
-                # or inherited
-                #
-                _zfsnoauto="-o canmount=noauto"
-                ;;
-            o)
-                # Clear out the default setting of creating var/empty as read-only dataset
-                _varempty_ro=""
-                ;;
-            t)
-                # use a more tiny layout
-                _tiny="yes"
-                ;;
-            T)  # extra tiny layout
-                _tiny="extra"
-                ;;
-            u)
-                # do not mount newly created datasets
-                _zfsopts="${_zfsopts} -u"
-                ;;
-            s)
-                # create also a dataset for freebsd-update data
-                _fbsdupdate="yes"
-                ;;
-            \?|:)
-                return 2;
-                ;;
-        esac
-    done
-    shift $((OPTIND-1))
-    OPTIND=1
+    _p_base="$1"
+    _p_skel="$2"
+    _name="$3"
 
-    _pds="$1"
-    if [ -z "${_pds}" ]; then
-        echo "ERROR: no parent dataset given" >&2
+    if [ -z "${_p_base}" ]; then
+        echo "ERROR: no parent dataset for base given" >&2
         return 2
     fi
-    _pmp=$(zfs list -H -o mountpoint -t filesystem "${_pds}" 2>/dev/null) || { echo "ERROR: dataset \`${_pds}' does not exist" >&2; return 1; }
-    case "${_pmp}" in
-        none)
-            echo "ERROR: dataset \`${_pds}' has no mountpoint" >&2
-            return 1
-            ;;
-        legacy)
-            echo "ERROR: dataset \`${_pds}' has a \`${_mp}' mountpoint" >&2
-            return 1
-            ;;
-        *)
-            # VOID
-            ;;
-    esac
-    _cds="$2"
-    if [ -z "${_cds}" ]; then
-        echo "ERROR: no child dataset given" >&2
+    if [ -z "${_p_skel}" ]; then
+        echo "ERROR: no parent dataset for skeleton given" >&2
         return 2
     fi
+    if [ -z "${_pname}" ]; then
+        echo "ERROR: no name given" >&2
+        return 2
+    fi
+
     _ds="${_pds}/${_cds}"
     echo "Resulting new root dataset is \`${_ds}' at mountpoint \`${_pmp}/${_cds}'"
     if zfs list -H -o mountpoint -t filesystem "${_ds}" >/dev/null 2>/dev/null; then