]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - dracut/90zfs/mount-zfs.sh.in
Refactor dracut module
[FreeBSD/FreeBSD.git] / dracut / 90zfs / mount-zfs.sh.in
1 #!/bin/sh
2
3 . /lib/dracut-lib.sh
4 . /lib/dracut-zfs-lib.sh
5
6 ZFS_DATASET=""
7 ZFS_POOL=""
8
9 case "${root}" in
10         zfs:*) ;;
11         *) return ;;
12 esac
13
14 # Delay until all required block devices are present.
15 udevadm settle
16
17 if [ "${root}" = "zfs:AUTO" ] ; then
18         ZFS_DATASET="$(find_bootfs)"
19         if [ $? -ne 0 ] ; then
20                 zpool import -N -a ${ZPOOL_IMPORT_OPTS}
21                 ZFS_DATASET="$(find_bootfs)"
22                 if [ $? -ne 0 ] ; then
23                         warn "ZFS: No bootfs attribute found in importable pools."
24                         export_all
25
26                         rootok=0
27                         return 1
28                 fi
29         fi
30         info "ZFS: Using ${ZFS_DATASET} as root."
31 fi
32
33 ZFS_DATASET="${ZFS_DATASET:-${root#zfs:}}"
34 ZFS_POOL="${ZFS_DATASET%%/*}"
35
36 if import_pool "${ZFS_POOL}" ; then
37         info "ZFS: Mounting dataset ${ZFS_DATASET}..."
38         if mount_dataset "${ZFS_DATASET}" ; then
39                 ROOTFS_MOUNTED=yes
40                 return 0
41         fi
42 fi
43
44 rootok=0
45 need_shutdown