From 68ba1d2fa974db2ecb799385f1b3e8e0180e5f6b Mon Sep 17 00:00:00 2001 From: Richard Laager Date: Thu, 23 Nov 2017 23:08:02 -0600 Subject: [PATCH] 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 --- contrib/initramfs/scripts/zfs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/contrib/initramfs/scripts/zfs b/contrib/initramfs/scripts/zfs index e66ed1d100..8770a2e8e1 100644 --- a/contrib/initramfs/scripts/zfs +++ b/contrib/initramfs/scripts/zfs @@ -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