diff mbox series

nfs-utils mount: recover the lost EBUSY

Message ID 20180917113838.31952-1-jiyin@redhat.com (mailing list archive)
State New, archived
Headers show
Series nfs-utils mount: recover the lost EBUSY | expand

Commit Message

Jianhong Yin Sept. 17, 2018, 11:38 a.m. UTC
From: "Jianhong.Yin" <yin-jianhong@163.com>

see: https://bugzilla.redhat.com/show_bug.cgi?id=1629705
[nfs-utils] mount -osharecache failure but return 'true'

mount.nfs4 -o context=system_u:object_r:user_home_dir_t:s0,sharecache $serv:$expdir $nfsmp
mount.nfs4 -o context=system_u:object_r:xferlog_t:s0,sharecache $serv:$expdir $nfsmp2
^^^ here mount fail, but return true. it confuse user!

Anyway, we should not hide the failure and pretend that it
does not exist.

Signed-off-by: Jianhong Yin <yin-jianhong@163.com>
---
 utils/mount/stropts.c | 9 ---------
 1 file changed, 9 deletions(-)

Comments

Steve Dickson Sept. 25, 2018, 3:40 p.m. UTC | #1
On 9/17/18 7:38 AM, jiyin@redhat.com wrote:
> From: "Jianhong.Yin" <yin-jianhong@163.com>
> 
> see: https://bugzilla.redhat.com/show_bug.cgi?id=1629705
> [nfs-utils] mount -osharecache failure but return 'true'
> 
> mount.nfs4 -o context=system_u:object_r:user_home_dir_t:s0,sharecache $serv:$expdir $nfsmp
> mount.nfs4 -o context=system_u:object_r:xferlog_t:s0,sharecache $serv:$expdir $nfsmp2
> ^^^ here mount fail, but return true. it confuse user!
> 
> Anyway, we should not hide the failure and pretend that it
> does not exist.
> 
> Signed-off-by: Jianhong Yin <yin-jianhong@163.com>
> ---
>  utils/mount/stropts.c | 9 ---------
>  1 file changed, 9 deletions(-)
> 
> diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c
> index 4d2e37e..ca5bc7f 100644
> --- a/utils/mount/stropts.c
> +++ b/utils/mount/stropts.c
> @@ -1078,15 +1078,6 @@ 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;
>  
> 
It code is here because of commit 3904d8102 which argues 
the re-mounting of a filesystem that is already mounted
is not an error... which I tend to agree with... 

steved.
Jianhong Yin Sept. 26, 2018, 2:21 a.m. UTC | #2
----- 原始邮件 -----
> 发件人: "Steve Dickson" <SteveD@RedHat.com>
> 收件人: jiyin@redhat.com
> 抄送: linux-nfs@vger.kernel.org, "Jianhong.Yin" <yin-jianhong@163.com>
> 发送时间: 星期二, 2018年 9 月 25日 下午 11:40:03
> 主题: Re: [PATCH] nfs-utils mount: recover the lost EBUSY
> 
> 
> 
> On 9/17/18 7:38 AM, jiyin@redhat.com wrote:
> > From: "Jianhong.Yin" <yin-jianhong@163.com>
> > 
> > see: https://bugzilla.redhat.com/show_bug.cgi?id=1629705
> > [nfs-utils] mount -osharecache failure but return 'true'
> > 
> > mount.nfs4 -o context=system_u:object_r:user_home_dir_t:s0,sharecache
> > $serv:$expdir $nfsmp
> > mount.nfs4 -o context=system_u:object_r:xferlog_t:s0,sharecache
> > $serv:$expdir $nfsmp2
> > ^^^ here mount fail, but return true. it confuse user!
> > 
> > Anyway, we should not hide the failure and pretend that it
> > does not exist.
> > 
> > Signed-off-by: Jianhong Yin <yin-jianhong@163.com>
> > ---
> >  utils/mount/stropts.c | 9 ---------
> >  1 file changed, 9 deletions(-)
> > 
> > diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c
> > index 4d2e37e..ca5bc7f 100644
> > --- a/utils/mount/stropts.c
> > +++ b/utils/mount/stropts.c
> > @@ -1078,15 +1078,6 @@ 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;
> >  
> > 
> It code is here because of commit 3904d8102 which argues
> the re-mounting of a filesystem that is already mounted
> is not an error... which I tend to agree with...
Got it.

how about : change in kernel  if (re-mounting && busy)  return TRUE from syscall->mount

> 
> steved.
>
Steve Dickson Sept. 26, 2018, 6:09 p.m. UTC | #3
On 9/25/18 10:21 PM, Jianhong Yin wrote:
> 
> ----- 原始邮件 -----
>> 发件人: "Steve Dickson" <SteveD@RedHat.com>
>> 收件人: jiyin@redhat.com
>> 抄送: linux-nfs@vger.kernel.org, "Jianhong.Yin" <yin-jianhong@163.com>
>> 发送时间: 星期二, 2018年 9 月 25日 下午 11:40:03
>> 主题: Re: [PATCH] nfs-utils mount: recover the lost EBUSY
>>
>>
>>
>> On 9/17/18 7:38 AM, jiyin@redhat.com wrote:
>>> From: "Jianhong.Yin" <yin-jianhong@163.com>
>>>
>>> see: https://bugzilla.redhat.com/show_bug.cgi?id=1629705
>>> [nfs-utils] mount -osharecache failure but return 'true'
>>>
>>> mount.nfs4 -o context=system_u:object_r:user_home_dir_t:s0,sharecache
>>> $serv:$expdir $nfsmp
>>> mount.nfs4 -o context=system_u:object_r:xferlog_t:s0,sharecache
>>> $serv:$expdir $nfsmp2
>>> ^^^ here mount fail, but return true. it confuse user!
>>>
>>> Anyway, we should not hide the failure and pretend that it
>>> does not exist.
>>>
>>> Signed-off-by: Jianhong Yin <yin-jianhong@163.com>
>>> ---
>>>  utils/mount/stropts.c | 9 ---------
>>>  1 file changed, 9 deletions(-)
>>>
>>> diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c
>>> index 4d2e37e..ca5bc7f 100644
>>> --- a/utils/mount/stropts.c
>>> +++ b/utils/mount/stropts.c
>>> @@ -1078,15 +1078,6 @@ 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;
>>>  
>>>
>> It code is here because of commit 3904d8102 which argues
>> the re-mounting of a filesystem that is already mounted
>> is not an error... which I tend to agree with...
> Got it.
> 
> how about : change in kernel  if (re-mounting && busy)  return TRUE from syscall->mount
Propose on to see where it goes... 

steved.

> 
>>
>> steved.
>>
diff mbox series

Patch

diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c
index 4d2e37e..ca5bc7f 100644
--- a/utils/mount/stropts.c
+++ b/utils/mount/stropts.c
@@ -1078,15 +1078,6 @@  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;