diff mbox

mount.nfs: Restore errno after v3 mounts on ECONNREFUSED errors

Message ID 20170504143704.18263-1-steved@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Steve Dickson May 4, 2017, 2:37 p.m. UTC
Commit 65ac59cd introduced code that tries v3 mounts
when the the v4 mount fails with ECONNREFUSED. This
code allows failing back to v3 to work correctly.

When the v3 mount fails the original errno value has
been over rewritten. In this case the errno value
needs to be restored to ECONNREFUSED.

Signed-off-by: Steve Dickson <steved@redhat.com>
---
 utils/mount/stropts.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Steve Dickson May 5, 2017, 3:07 p.m. UTC | #1
On 05/04/2017 10:37 AM, Steve Dickson wrote:
> Commit 65ac59cd introduced code that tries v3 mounts
> when the the v4 mount fails with ECONNREFUSED. This
> code allows failing back to v3 to work correctly.
> 
> When the v3 mount fails the original errno value has
> been over rewritten. In this case the errno value
> needs to be restored to ECONNREFUSED.
> 
> Signed-off-by: Steve Dickson <steved@redhat.com>
Committed...

steved.
> ---
>  utils/mount/stropts.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c
> index a9ff95d..0fbb375 100644
> --- a/utils/mount/stropts.c
> +++ b/utils/mount/stropts.c
> @@ -868,7 +868,10 @@ check_result:
>  			result = nfs_try_mount_v4(mi);
>  			if (result == 0 && errno != ECONNREFUSED)
>  				goto check_result;
> -		}
> +		} else if (result == 0)
> +			/* Restore original errno with v3 failures */
> +			errno = ECONNREFUSED;
> +
>  		return result;
>  	default:
>  		return result;
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c
index a9ff95d..0fbb375 100644
--- a/utils/mount/stropts.c
+++ b/utils/mount/stropts.c
@@ -868,7 +868,10 @@  check_result:
 			result = nfs_try_mount_v4(mi);
 			if (result == 0 && errno != ECONNREFUSED)
 				goto check_result;
-		}
+		} else if (result == 0)
+			/* Restore original errno with v3 failures */
+			errno = ECONNREFUSED;
+
 		return result;
 	default:
 		return result;