[PATCH 0/1] nfs: Ensure NFS_MOUNT_TCP is correctly set for v4 mounts

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



When a 'mount -o remount...' is issued, the mount program reads the current
mount options from /etc/mtab so that it can pass them to the helper program.  On
newer distros where /etc/mtab is a symlink to /proc/mounts, this will result in
a call to nfs_show_mount_options(), which has the following snippet:

        seq_printf(m, ",proto=%s",
	                   rpc_peeraddr2str(nfss->client, RPC_DISPLAY_NETID));

which in most cases will result in the mount program passing 'proto=tcp' to the
mount.nfs4 program, which mount.nfs4 then passes in the data field of the mount
syscall. 

nfs_remount() calls nfs_parse_mount_options(), where the NFS_MOUNT_TCP flag will
be set in the nfs_parsed_mount_data's flag field.  But nfs_remount() then calls
nfs_compare_remount_data(), where we will fail the very first check:

static int
nfs_compare_remount_data(struct nfs_server *nfss,
                         struct nfs_parsed_mount_data *data)
{
	        if (data->flags != nfss->flags ||
...
                return -EINVAL;
...

because NFS_MOUNT_TCP was never set in the nfs_server's flags field in the first
place.

As a result, the remount operation fails:
# mount -o remount,ro /mnt/t
mount.nfs4: an incorrect mount option was specified

The following patch corrects that issue by having nfs4_validate_mount_flags()
set the NFS_MOUNT_TCP flag when appropriate.


Scott Mayhew (1):
  nfs: Ensure NFS_MOUNT_TCP is correctly set for v4 mounts

 fs/nfs/super.c | 3 +++
 1 file changed, 3 insertions(+)

-- 
1.9.0

--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux