Mercurial > hgrepos > FreeBSD > ports > sysutils > local-bsdtools
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
