Revision 220937 in upstream removed a similar kludge, which had become unnecessary in some cases but not in the one that concerns us (see comment below). --- a/sys/kern/vfs_mount.c +++ b/sys/kern/vfs_mount.c @@ -639,6 +639,24 @@ } /* + * If MNT_RDONLY was not specified as a mount option, and we + * are trying to update a mount-point from "ro", it means + * read-write mode is desired by userland even if "rw" or + * "noro" weren't specified explicitly. Add "noro" here to + * make that happen. + */ + if (!(fsflags & MNT_RDONLY)) { + struct vfsopt *noro_opt; + noro_opt = malloc(sizeof(struct vfsopt), M_MOUNT, M_WAITOK); + noro_opt->name = strdup("noro", M_MOUNT); + noro_opt->value = NULL; + noro_opt->len = 0; + noro_opt->pos = -1; + noro_opt->seen = 1; + TAILQ_INSERT_TAIL(optlist, noro_opt, link); + } + + /* * Be ultra-paranoid about making sure the type and fspath * variables will fit in our mp buffers, including the * terminating NUL.