When "-o remount" is used, the device/special name
is ignored. So don't parse it and risk generating a
useless error.
This is particularly important when nfs-root is used
as the "device name" is listed as "/dev/nfs".
Because mount.nfs doesn't think that is valid,
mount -o remount,rw /
will fail.
Link: https://github.com/systemd/systemd/issues/3590
Signed-off-by: NeilBrown <[email protected]>
---
utils/mount/stropts.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c
index 440131482e2b..12178235f068 100644
--- a/utils/mount/stropts.c
+++ b/utils/mount/stropts.c
@@ -384,7 +384,9 @@ static int nfs_set_version(struct nfsmount_info *mi)
*/
static int nfs_validate_options(struct nfsmount_info *mi)
{
- if (!nfs_parse_devname(mi->spec, &mi->hostname, NULL))
+ /* For remount, ignore mi->spec: the kernel will. */
+ if (!(mi->flags & MS_REMOUNT) &&
+ !nfs_parse_devname(mi->spec, &mi->hostname, NULL))
return 0;
if (!nfs_nfs_proto_family(mi->options, &mi->family))
--
2.14.0.rc0.dirty
On 11/23/2017 11:30 PM, NeilBrown wrote:
>
> When "-o remount" is used, the device/special name
> is ignored. So don't parse it and risk generating a
> useless error.
>
> This is particularly important when nfs-root is used
> as the "device name" is listed as "/dev/nfs".
> Because mount.nfs doesn't think that is valid,
> mount -o remount,rw /
> will fail.
>
> Link: https://github.com/systemd/systemd/issues/3590
> Signed-off-by: NeilBrown <[email protected]>
Committed....
steved.
> ---
> utils/mount/stropts.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c
> index 440131482e2b..12178235f068 100644
> --- a/utils/mount/stropts.c
> +++ b/utils/mount/stropts.c
> @@ -384,7 +384,9 @@ static int nfs_set_version(struct nfsmount_info *mi)
> */
> static int nfs_validate_options(struct nfsmount_info *mi)
> {
> - if (!nfs_parse_devname(mi->spec, &mi->hostname, NULL))
> + /* For remount, ignore mi->spec: the kernel will. */
> + if (!(mi->flags & MS_REMOUNT) &&
> + !nfs_parse_devname(mi->spec, &mi->hostname, NULL))
> return 0;
>
> if (!nfs_nfs_proto_family(mi->options, &mi->family))
>