2010-10-31 15:58:44

by Paulius Zaleckas

[permalink] [raw]
Subject: [PATCH] Regression: fix mounting NFS when NFSv3 support is not compiled

Trying to mount NFS (root partition in my case) fails if CONFIG_NFS_V3
is not selected. nfs_validate_mount_data() returns EPROTONOSUPPORT,
because of this check:

#ifndef CONFIG_NFS_V3
if (args->version == 3)
goto out_v3_not_compiled;
#endif /* !CONFIG_NFS_V3 */

and args->version was always initialized to 3.

It was working in 2.6.36

Signed-off-by: Paulius Zaleckas <[email protected]>
---

fs/nfs/super.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/fs/nfs/super.c b/fs/nfs/super.c
index 0a42e8f..8737017 100644
--- a/fs/nfs/super.c
+++ b/fs/nfs/super.c
@@ -2277,7 +2277,11 @@ static int nfs_get_sb(struct file_system_type *fs_type,
};
int error = -ENOMEM;

+#ifdef CONFIG_NFS_V3
data = nfs_alloc_parsed_mount_data(3);
+#else
+ data = nfs_alloc_parsed_mount_data(2);
+#endif
mntfh = nfs_alloc_fhandle();
if (data == NULL || mntfh == NULL)
goto out_free_fh;



2010-10-31 16:08:27

by Myklebust, Trond

[permalink] [raw]
Subject: Re: [PATCH] Regression: fix mounting NFS when NFSv3 support is not compiled

On Sun, 2010-10-31 at 17:58 +0200, Paulius Zaleckas wrote:
> Trying to mount NFS (root partition in my case) fails if CONFIG_NFS_V3
> is not selected. nfs_validate_mount_data() returns EPROTONOSUPPORT,
> because of this check:
>
> #ifndef CONFIG_NFS_V3
> if (args->version == 3)
> goto out_v3_not_compiled;
> #endif /* !CONFIG_NFS_V3 */
>
> and args->version was always initialized to 3.
>
> It was working in 2.6.36
>
> Signed-off-by: Paulius Zaleckas <[email protected]>
> ---
>
> fs/nfs/super.c | 4 ++++
> 1 files changed, 4 insertions(+), 0 deletions(-)
>
> diff --git a/fs/nfs/super.c b/fs/nfs/super.c
> index 0a42e8f..8737017 100644
> --- a/fs/nfs/super.c
> +++ b/fs/nfs/super.c
> @@ -2277,7 +2277,11 @@ static int nfs_get_sb(struct file_system_type *fs_type,
> };
> int error = -ENOMEM;
>
> +#ifdef CONFIG_NFS_V3
> data = nfs_alloc_parsed_mount_data(3);
> +#else
> + data = nfs_alloc_parsed_mount_data(2);
> +#endif
> mntfh = nfs_alloc_fhandle();
> if (data == NULL || mntfh == NULL)
> goto out_free_fh;
>

Let's do this as

#ifdef CONFIG_NFS_V3
#define NFS_DEFAULT_VERSION 3
#else
#define NFS_DEFAULT_VERSION 2
#endif

data = nfs_alloc_parsed_mount_data(NFS_DEFAULT_VERSION);

instead.

Cheers
Trond