- zfs:FILESYSTEM=*|FILESYSTEM=*)
- root="${root#zfs:}"
- root="zfs:${root#FILESYSTEM=}"
- rootfs="zfs"
- rootok=1 ;;
- zfs:ZFS=*|ZFS=*)
- root="${root#zfs:}"
- root="zfs:${root#ZFS=}"
- rootfs="zfs"
- rootok=1 ;;
+ ""|zfs|zfs:)
+ # We'll take root unset, root=zfs, or root=zfs:
+ # No root set, so we want to read the bootfs attribute. We can't do
+ # that until udev settles so we'll set dummy values and hope for the
+ # best later on.
+ root="zfs:AUTO"
+ rootok=1
+
+ info "ZFS: Enabling autodetection of bootfs after udev settles."
+ ;;
+
+ ZFS\=*|zfs:*|zfs:FILESYSTEM\=*|FILESYSTEM\=*)
+ # root is explicit ZFS root. Parse it now.
+ # We can handle a root=... param in any of the following formats:
+ # root=ZFS=rpool/ROOT
+ # root=zfs:rpool/ROOT
+ # root=zfs:FILESYSTEM=rpool/ROOT
+ # root=FILESYSTEM=rpool/ROOT
+
+ # Strip down to just the pool/fs
+ root="${root#zfs:}"
+ root="${root#FILESYSTEM=}"
+ root="zfs:${root#ZFS=}"
+ rootok=1
+
+ info "ZFS: Set ${root} as bootfs."
+ ;;