Don't leak mount flags into kernel
[zfs.git] / cmd / mount_zfs / mount_zfs.c
index 6dd831d..fd685fa 100644 (file)
@@ -131,15 +131,6 @@ parse_option(char *mntopt, unsigned long *mntflags,
                if (strncmp(name, opt->name, strlen(name)) == 0) {
                        *mntflags |= opt->mntmask;
                        *zfsflags |= opt->zfsmask;
-
-                       /* MS_USERS implies default user options */
-                       if (opt->mntmask & (MS_USERS))
-                               *mntflags |= (MS_NOEXEC|MS_NOSUID|MS_NODEV);
-
-                       /* MS_OWNER|MS_GROUP imply default owner options */
-                       if (opt->mntmask & (MS_OWNER | MS_GROUP))
-                               *mntflags |= (MS_NOSUID|MS_NODEV);
-
                        error = 0;
                        goto out;
                }
@@ -372,7 +363,8 @@ main(int argc, char **argv)
        /* canonicalize the mount point */
        if (realpath(argv[1], mntpoint) == NULL) {
                (void) fprintf(stderr, gettext("filesystem '%s' cannot be "
-                   "mounted due to a canonicalization failure.\n"), dataset);
+                   "mounted at '%s' due to canonicalization error %d.\n"),
+                   dataset, argv[1], errno);
                return (MOUNT_SYSERR);
        }
 
@@ -474,7 +466,8 @@ main(int argc, char **argv)
                return (MOUNT_USAGE);
        }
 
-       if (!zfsutil && strcmp(legacy, ZFS_MOUNTPOINT_LEGACY) && !remount) {
+       if (!zfsutil && !(remount || fake) &&
+           strcmp(legacy, ZFS_MOUNTPOINT_LEGACY)) {
                (void) fprintf(stderr, gettext(
                    "filesystem '%s' cannot be mounted using 'mount'.\n"
                    "Use 'zfs set mountpoint=%s' or 'zfs mount %s'.\n"