2017-09-07 15:14:45

by Frank Sorenson

[permalink] [raw]
Subject: [PATCH RFC] nfs-utils: mount: handle EACCES during version negotiation

mount() can return EACCES for servers which permit 4.0
but are configured not to allow 4.1 This is currently
only handled by the default case, so these mounts fail
without retrying a lower minor.

Add handling for EACCES to be retried with a lower
minor version.

Signed-off-by: Frank Sorenson <[email protected]>
---
utils/mount/stropts.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c
index 1d30d34..4401314 100644
--- a/utils/mount/stropts.c
+++ b/utils/mount/stropts.c
@@ -862,6 +862,9 @@ check_result:
case EINVAL:
/* A less clear indication that our client
* does not support NFSv4 minor version. */
+ case EACCES:
+ /* An unclear indication that the server
+ * may not support NFSv4 minor version. */
if (mi->version.v_mode != V_SPECIFIC) {
if (mi->version.minor > 0) {
mi->version.minor--;
--
2.13.5



2017-09-14 17:11:36

by Steve Dickson

[permalink] [raw]
Subject: Re: [PATCH RFC] nfs-utils: mount: handle EACCES during version negotiation



On 09/07/2017 11:14 AM, Frank Sorenson wrote:
> mount() can return EACCES for servers which permit 4.0
> but are configured not to allow 4.1 This is currently
> only handled by the default case, so these mounts fail
> without retrying a lower minor.
>
> Add handling for EACCES to be retried with a lower
> minor version.
>
> Signed-off-by: Frank Sorenson <[email protected]>
Committed...

steved.
> ---
> utils/mount/stropts.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c
> index 1d30d34..4401314 100644
> --- a/utils/mount/stropts.c
> +++ b/utils/mount/stropts.c
> @@ -862,6 +862,9 @@ check_result:
> case EINVAL:
> /* A less clear indication that our client
> * does not support NFSv4 minor version. */
> + case EACCES:
> + /* An unclear indication that the server
> + * may not support NFSv4 minor version. */
> if (mi->version.v_mode != V_SPECIFIC) {
> if (mi->version.minor > 0) {
> mi->version.minor--;
>