diff mbox

mount.nfs - hide EBUSY errors.

Message ID 877fi2raey.fsf@notabene.neil.brown.name (mailing list archive)
State New, archived
Headers show

Commit Message

NeilBrown Feb. 18, 2016, 2:59 a.m. UTC
Linux only returns EBUSY for a non-remount mount if the exact
requested filesystem is already mounted.  Arguably this is not an
error.

"mount -a" tries to see if each requested filesystem is already mounted.
Sometimes it gets it wrong - e.g. hostname aliases can confuse it.
So "mount -a" will report a failure "already mounted", which is
wrong because it should filter those out.

An easy fix it just to be silent about EBUSY.  As the requested
result (a given filesystem being mounted at a given location) is in
effect after the EBUSY return, we can just treat it as success.

This removes the confusing "already mounted" errors.

Signed-off-by: NeilBrown <neilb@suse.com>
---
 utils/mount/stropts.c | 9 +++++++++
 1 file changed, 9 insertions(+)

Comments

Steve Dickson March 16, 2016, 6:19 p.m. UTC | #1
On 02/17/2016 09:59 PM, NeilBrown wrote:
> 
> Linux only returns EBUSY for a non-remount mount if the exact
> requested filesystem is already mounted.  Arguably this is not an
> error.
> 
> "mount -a" tries to see if each requested filesystem is already mounted.
> Sometimes it gets it wrong - e.g. hostname aliases can confuse it.
> So "mount -a" will report a failure "already mounted", which is
> wrong because it should filter those out.
> 
> An easy fix it just to be silent about EBUSY.  As the requested
> result (a given filesystem being mounted at a given location) is in
> effect after the EBUSY return, we can just treat it as success.
> 
> This removes the confusing "already mounted" errors.
> 
> Signed-off-by: NeilBrown <neilb@suse.com>
Committed... 

steved.

> ---
>  utils/mount/stropts.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c
> index 86829a902bfd..320dde2fab92 100644
> --- a/utils/mount/stropts.c
> +++ b/utils/mount/stropts.c
> @@ -960,6 +960,15 @@ static int nfsmount_fg(struct nfsmount_info *mi)
>  		if (nfs_try_mount(mi))
>  			return EX_SUCCESS;
>  
> +		if (errno == EBUSY)
> +			/* The only cause of EBUSY is if exactly the desired
> +			 * filesystem is already mounted.  That can arguably
> +			 * be seen as success.  "mount -a" tries to optimise
> +			 * out this case but sometimes fails.  Help it out
> +			 * by pretending everything is rosy
> +			 */
> +			return EX_SUCCESS;
> +
>  		if (nfs_is_permanent_error(errno))
>  			break;
>  
> 
--
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 86829a902bfd..320dde2fab92 100644
--- a/utils/mount/stropts.c
+++ b/utils/mount/stropts.c
@@ -960,6 +960,15 @@  static int nfsmount_fg(struct nfsmount_info *mi)
 		if (nfs_try_mount(mi))
 			return EX_SUCCESS;
 
+		if (errno == EBUSY)
+			/* The only cause of EBUSY is if exactly the desired
+			 * filesystem is already mounted.  That can arguably
+			 * be seen as success.  "mount -a" tries to optimise
+			 * out this case but sometimes fails.  Help it out
+			 * by pretending everything is rosy
+			 */
+			return EX_SUCCESS;
+
 		if (nfs_is_permanent_error(errno))
 			break;