#!/bin/sh

. /usr/share/debconf/confmodule

db_register partman-zfs/confirm partman-zfs/confirm_nooverwrite

# Load modules and scan volume groups if it was not done before
if [ ! -f /var/lib/partman/zfs ] && [ "$(udpkg --print-os)" = kfreebsd ] ; then
	# load required kernel modules
	kldload zfs >/dev/null 2>&1

	# Make sure that zfs is available - not a critical error.
        # Wait up to 10 seconds as ZoL module may need time to settle down.
        local zfs_load_timeout
        zfs_load_timeout=0
        while ! [ -e /dev/zfs ] && ! [ "$zfs_load_timeout" -eq "10" ]; do
            sleep 1
            let zfs_load_timeout++
        done

	# scan for zfs pools
	log-output -t partman zpool import -a -f -o altroot=/target

	# Some ZFS versions don't create cachefile when "-o altroot" is used.
	# Request it explicitly.
	for vg in $(zpool list -H -o name) ; do
		log-output -t partman-zfs zpool set cachefile=/boot/zfs/zpool.cache "$vg" || return 1
	done

	touch /var/lib/partman/zfs
fi
