From: Richard Laager Date: Fri, 24 Nov 2017 05:08:02 +0000 (-0600) Subject: initramfs: Honor canmount=off X-Git-Tag: zfs-0.8.0-rc1~451 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=48ac22d8559313b2a33a80b9690aeea9acb9976c;p=zfs initramfs: Honor canmount=off The initramfs script was not honoring canmount=off. With this change, it does. If the administrator has asked that a filesystem not be mounted, that should be honored. As an exception, the initramfs script ignores canmount=off on the rootfs. The rootfs should not have canmount=off set either. However, mounting it anyway seems harmless because it is being asked for explicitly. The point of this exception is to avoid the risk of breaking existing systems, just in case someone has canmount=off set on their rootfs. The initramfs still mounts filesystems with canmount=noauto. This is necessary because it is typical to set that on the rootfs so that it can be cloned. Without canmount=noauto, the clones' duplicate mountpoints would conflict. This is the remainder of the fix for: https://github.com/zfsonlinux/pkg-zfs/issues/221 Reviewed-by: Brian Behlendorf Reviewed-by: George Melikov Signed-off-by: Richard Laager Closes #6897 --- diff --git a/contrib/initramfs/scripts/zfs.in b/contrib/initramfs/scripts/zfs.in index 52098cc14..d51ae1ea0 100644 --- a/contrib/initramfs/scripts/zfs.in +++ b/contrib/initramfs/scripts/zfs.in @@ -317,6 +317,14 @@ mount_fs() "${ZFS}" list -oname -tfilesystem -H "${fs}" > /dev/null 2>&1 [ "$?" -ne 0 ] && return 1 + # Skip filesystems with canmount=off. The root fs should not have + # canmount=off, but ignore it for backwards compatibility just in case. + if [ "$fs" != "${ZFS_BOOTFS}" ] + then + canmount=$(get_fs_value "$fs" canmount) + [ "$canmount" = "off" ] && return 0 + fi + # Need the _original_ datasets mountpoint! mountpoint=$(get_fs_value "$fs" mountpoint) if [ "$mountpoint" = "legacy" -o "$mountpoint" = "none" ]; then