* [PATCH nfs-utils v2] statd: Don't unregister statd service on failing to execute callout
@ 2016-02-16 0:36 Toshiaki Makita
2016-03-03 0:20 ` Toshiaki Makita
2016-03-16 18:20 ` Steve Dickson
0 siblings, 2 replies; 5+ messages in thread
From: Toshiaki Makita @ 2016-02-16 0:36 UTC (permalink / raw)
To: Steve Dickson; +Cc: Toshiaki Makita, Chuck Lever, linux-nfs
statd calls atexit(statd_unregister) to unregister statd service on exit,
which actually has a side-effect that ha_callout() unregisters statd
service even when the child callout process exits on execl() failure.
Certain clustering software's deployment script adds -H option with its
specified file non-existent, when it is configured not to use callout.
In other words, -H seems to be used no matter if callout is needed or not,
but when callout is unnecessary, the specified callout program is not
deployed.
This causes statd not to work once a lock is requested by its NFS client,
as execl() in ha_callout() results in ENOENT and exit() of the child
process calls exit-handler statd_unregister(). Eventually, the NFS client
gets stuck with messages "lockd: cannot monitor xxx" on the NFS server.
Also, execl() could fail for other reasons like ENFILE or EIO as well.
A forked child must not unregister the statd RPC server, so use
_exit(), which does not call any exit-handlers, instead of exit().
Signed-off-by: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
Reviewed-by: Chuck Lever <chuck.lever@oracle.com>
---
v2:
- Simplified changelog.
support/include/ha-callout.h | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/support/include/ha-callout.h b/support/include/ha-callout.h
index 1164336..a454bdb 100644
--- a/support/include/ha-callout.h
+++ b/support/include/ha-callout.h
@@ -47,7 +47,7 @@ ha_callout(char *event, char *arg1, char *arg2, int arg3)
arg3 < 0 ? NULL : buf,
NULL);
perror("execl");
- exit(2);
+ _exit(2);
case -1: perror("fork");
break;
default: pid = waitpid(pid, &ret, 0);
--
1.7.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH nfs-utils v2] statd: Don't unregister statd service on failing to execute callout
2016-02-16 0:36 [PATCH nfs-utils v2] statd: Don't unregister statd service on failing to execute callout Toshiaki Makita
@ 2016-03-03 0:20 ` Toshiaki Makita
2016-03-03 0:27 ` Steve Dickson
2016-03-16 18:20 ` Steve Dickson
1 sibling, 1 reply; 5+ messages in thread
From: Toshiaki Makita @ 2016-03-03 0:20 UTC (permalink / raw)
To: Steve Dickson; +Cc: Chuck Lever, linux-nfs
Hi Steve,
On 2016/02/16 9:36, Toshiaki Makita wrote:
> statd calls atexit(statd_unregister) to unregister statd service on exit,
> which actually has a side-effect that ha_callout() unregisters statd
> service even when the child callout process exits on execl() failure.
>
> Certain clustering software's deployment script adds -H option with its
> specified file non-existent, when it is configured not to use callout.
> In other words, -H seems to be used no matter if callout is needed or not,
> but when callout is unnecessary, the specified callout program is not
> deployed.
> This causes statd not to work once a lock is requested by its NFS client,
> as execl() in ha_callout() results in ENOENT and exit() of the child
> process calls exit-handler statd_unregister(). Eventually, the NFS client
> gets stuck with messages "lockd: cannot monitor xxx" on the NFS server.
>
> Also, execl() could fail for other reasons like ENFILE or EIO as well.
>
> A forked child must not unregister the statd RPC server, so use
> _exit(), which does not call any exit-handlers, instead of exit().
>
> Signed-off-by: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
> Reviewed-by: Chuck Lever <chuck.lever@oracle.com>
Would you tell me the status of this patch?
Regards,
Toshiaki Makita
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH nfs-utils v2] statd: Don't unregister statd service on failing to execute callout
2016-03-03 0:20 ` Toshiaki Makita
@ 2016-03-03 0:27 ` Steve Dickson
2016-03-03 1:01 ` Toshiaki Makita
0 siblings, 1 reply; 5+ messages in thread
From: Steve Dickson @ 2016-03-03 0:27 UTC (permalink / raw)
To: Toshiaki Makita; +Cc: Chuck Lever, linux-nfs
Hey,
On 03/02/2016 07:20 PM, Toshiaki Makita wrote:
> Hi Steve,
>
> On 2016/02/16 9:36, Toshiaki Makita wrote:
>> statd calls atexit(statd_unregister) to unregister statd service on exit,
>> which actually has a side-effect that ha_callout() unregisters statd
>> service even when the child callout process exits on execl() failure.
>>
>> Certain clustering software's deployment script adds -H option with its
>> specified file non-existent, when it is configured not to use callout.
>> In other words, -H seems to be used no matter if callout is needed or not,
>> but when callout is unnecessary, the specified callout program is not
>> deployed.
>> This causes statd not to work once a lock is requested by its NFS client,
>> as execl() in ha_callout() results in ENOENT and exit() of the child
>> process calls exit-handler statd_unregister(). Eventually, the NFS client
>> gets stuck with messages "lockd: cannot monitor xxx" on the NFS server.
>>
>> Also, execl() could fail for other reasons like ENFILE or EIO as well.
>>
>> A forked child must not unregister the statd RPC server, so use
>> _exit(), which does not call any exit-handlers, instead of exit().
>>
>> Signed-off-by: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
>> Reviewed-by: Chuck Lever <chuck.lever@oracle.com>
>
> Would you tell me the status of this patch?
Its on my too do list.... I've been traveling but have every
intention on catching up asap...
steved.
>
> Regards,
> Toshiaki Makita
>
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH nfs-utils v2] statd: Don't unregister statd service on failing to execute callout
2016-03-03 0:27 ` Steve Dickson
@ 2016-03-03 1:01 ` Toshiaki Makita
0 siblings, 0 replies; 5+ messages in thread
From: Toshiaki Makita @ 2016-03-03 1:01 UTC (permalink / raw)
To: Steve Dickson; +Cc: Chuck Lever, linux-nfs
On 2016/03/03 9:27, Steve Dickson wrote:
> Hey,
>
> On 03/02/2016 07:20 PM, Toshiaki Makita wrote:
>> Hi Steve,
>>
>> On 2016/02/16 9:36, Toshiaki Makita wrote:
>>> statd calls atexit(statd_unregister) to unregister statd service on exit,
>>> which actually has a side-effect that ha_callout() unregisters statd
>>> service even when the child callout process exits on execl() failure.
>>>
>>> Certain clustering software's deployment script adds -H option with its
>>> specified file non-existent, when it is configured not to use callout.
>>> In other words, -H seems to be used no matter if callout is needed or not,
>>> but when callout is unnecessary, the specified callout program is not
>>> deployed.
>>> This causes statd not to work once a lock is requested by its NFS client,
>>> as execl() in ha_callout() results in ENOENT and exit() of the child
>>> process calls exit-handler statd_unregister(). Eventually, the NFS client
>>> gets stuck with messages "lockd: cannot monitor xxx" on the NFS server.
>>>
>>> Also, execl() could fail for other reasons like ENFILE or EIO as well.
>>>
>>> A forked child must not unregister the statd RPC server, so use
>>> _exit(), which does not call any exit-handlers, instead of exit().
>>>
>>> Signed-off-by: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
>>> Reviewed-by: Chuck Lever <chuck.lever@oracle.com>
>>
>> Would you tell me the status of this patch?
> Its on my too do list.... I've been traveling but have every
> intention on catching up asap...
I just wanted to know if it is being processed and not in hurry ;)
Thank you.
Regards,
Toshiaki Makita
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH nfs-utils v2] statd: Don't unregister statd service on failing to execute callout
2016-02-16 0:36 [PATCH nfs-utils v2] statd: Don't unregister statd service on failing to execute callout Toshiaki Makita
2016-03-03 0:20 ` Toshiaki Makita
@ 2016-03-16 18:20 ` Steve Dickson
1 sibling, 0 replies; 5+ messages in thread
From: Steve Dickson @ 2016-03-16 18:20 UTC (permalink / raw)
To: Toshiaki Makita; +Cc: Chuck Lever, linux-nfs
On 02/15/2016 07:36 PM, Toshiaki Makita wrote:
> statd calls atexit(statd_unregister) to unregister statd service on exit,
> which actually has a side-effect that ha_callout() unregisters statd
> service even when the child callout process exits on execl() failure.
>
> Certain clustering software's deployment script adds -H option with its
> specified file non-existent, when it is configured not to use callout.
> In other words, -H seems to be used no matter if callout is needed or not,
> but when callout is unnecessary, the specified callout program is not
> deployed.
> This causes statd not to work once a lock is requested by its NFS client,
> as execl() in ha_callout() results in ENOENT and exit() of the child
> process calls exit-handler statd_unregister(). Eventually, the NFS client
> gets stuck with messages "lockd: cannot monitor xxx" on the NFS server.
>
> Also, execl() could fail for other reasons like ENFILE or EIO as well.
>
> A forked child must not unregister the statd RPC server, so use
> _exit(), which does not call any exit-handlers, instead of exit().
>
> Signed-off-by: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
> Reviewed-by: Chuck Lever <chuck.lever@oracle.com>
Committed....
steved.
> ---
> v2:
> - Simplified changelog.
>
> support/include/ha-callout.h | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/support/include/ha-callout.h b/support/include/ha-callout.h
> index 1164336..a454bdb 100644
> --- a/support/include/ha-callout.h
> +++ b/support/include/ha-callout.h
> @@ -47,7 +47,7 @@ ha_callout(char *event, char *arg1, char *arg2, int arg3)
> arg3 < 0 ? NULL : buf,
> NULL);
> perror("execl");
> - exit(2);
> + _exit(2);
> case -1: perror("fork");
> break;
> default: pid = waitpid(pid, &ret, 0);
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2016-03-16 18:21 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-16 0:36 [PATCH nfs-utils v2] statd: Don't unregister statd service on failing to execute callout Toshiaki Makita
2016-03-03 0:20 ` Toshiaki Makita
2016-03-03 0:27 ` Steve Dickson
2016-03-03 1:01 ` Toshiaki Makita
2016-03-16 18:20 ` Steve Dickson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).