2018-09-17 17:05:42

by Jianhong Yin

[permalink] [raw]
Subject: [PATCH] nfs-utils mount: recover the lost EBUSY

From: "Jianhong.Yin" <[email protected]>

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 <[email protected]>
---
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;

--
2.17.1


2018-09-25 21:48:08

by Steve Dickson

[permalink] [raw]
Subject: Re: [PATCH] nfs-utils mount: recover the lost EBUSY



On 9/17/18 7:38 AM, [email protected] wrote:
> From: "Jianhong.Yin" <[email protected]>
>
> 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 <[email protected]>
> ---
> 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.

2018-09-26 08:31:59

by Jianhong Yin

[permalink] [raw]
Subject: Re: [PATCH] nfs-utils mount: recover the lost EBUSY


----- 原始邮件 -----
> 发件人: "Steve Dickson" <[email protected]>
> 收件人: [email protected]
> 抄送: [email protected], "Jianhong.Yin" <[email protected]>
> 发送时间: 星期二, 2018年 9 月 25日 下午 11:40:03
> 主题: Re: [PATCH] nfs-utils mount: recover the lost EBUSY
>
>
>
> On 9/17/18 7:38 AM, [email protected] wrote:
> > From: "Jianhong.Yin" <[email protected]>
> >
> > 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 <[email protected]>
> > ---
> > 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.
>

2018-09-27 00:24:02

by Steve Dickson

[permalink] [raw]
Subject: Re: [PATCH] nfs-utils mount: recover the lost EBUSY



On 9/25/18 10:21 PM, Jianhong Yin wrote:
>
> ----- 原始邮件 -----
>> 发件人: "Steve Dickson" <[email protected]>
>> 收件人: [email protected]
>> 抄送: [email protected], "Jianhong.Yin" <[email protected]>
>> 发送时间: 星期二, 2018年 9 月 25日 下午 11:40:03
>> 主题: Re: [PATCH] nfs-utils mount: recover the lost EBUSY
>>
>>
>>
>> On 9/17/18 7:38 AM, [email protected] wrote:
>>> From: "Jianhong.Yin" <[email protected]>
>>>
>>> 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 <[email protected]>
>>> ---
>>> 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.
>>