2024-02-28 18:57:09

by Ahmad Fatoum

[permalink] [raw]
Subject: [PATCH nfs-utils] start-statd: use flock -x instead of -e for busybox compatibility

busybox flock(1) only supports -x and not -e. util-linux flock(1)
treats both -e and -x the same, documents them both in its man page,
but lists only -x in its help output.

Referring to util-linux git, it seems both options were added between
util-linux-2.13-pre1 and util-linux-2.13-pre2 back in 2006, so there
should be no harm in switching over to flock -x to avoid confusing
error output when attempting to mount a NFS on a busybox system:

$ mount -t nfs 192.168.2.13:/home/afa/nfsroot/imx8mn-evk /mnt
flock: invalid option -- 'e'
BusyBox v1.36.0 () multi-call binary.

Usage: flock [-sxun] FD | { FILE [-c] PROG ARGS }

[Un]lock file descriptor, or lock FILE, run PROG

-s Shared lock
-x Exclusive lock (default)
-u Unlock FD
-n Fail rather than wait

Signed-off-by: Ahmad Fatoum <[email protected]>
---
utils/statd/start-statd | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/utils/statd/start-statd b/utils/statd/start-statd
index b11a7d91a7f6..67a2f4ad8e0e 100755
--- a/utils/statd/start-statd
+++ b/utils/statd/start-statd
@@ -8,7 +8,7 @@ PATH="/sbin:/usr/sbin:/bin:/usr/bin"

# Use flock to serialize the running of this script
exec 9> /run/rpc.statd.lock
-flock -e 9
+flock -x 9

if [ -s /run/rpc.statd.pid ] &&
[ "1$(cat /run/rpc.statd.pid)" -gt 1 ] &&
--
2.39.2



2024-02-28 21:09:43

by Calum Mackay

[permalink] [raw]
Subject: Re: [PATCH nfs-utils] start-statd: use flock -x instead of -e for busybox compatibility

On 28/02/2024 6:56 pm, Ahmad Fatoum wrote:
> busybox flock(1) only supports -x and not -e. util-linux flock(1)
> treats both -e and -x the same, documents them both in its man page,
> but lists only -x in its help output.
>
> Referring to util-linux git, it seems both options were added between
> util-linux-2.13-pre1 and util-linux-2.13-pre2 back in 2006, so there
> should be no harm in switching over to flock -x to avoid confusing
> error output when attempting to mount a NFS on a busybox system:
>
> $ mount -t nfs 192.168.2.13:/home/afa/nfsroot/imx8mn-evk /mnt
> flock: invalid option -- 'e'
> BusyBox v1.36.0 () multi-call binary.
>
> Usage: flock [-sxun] FD | { FILE [-c] PROG ARGS }
>
> [Un]lock file descriptor, or lock FILE, run PROG
>
> -s Shared lock
> -x Exclusive lock (default)
> -u Unlock FD
> -n Fail rather than wait
>
> Signed-off-by: Ahmad Fatoum <[email protected]>

hi Ahmad,

Since the default is an exclusive lock, in both BusyBox and util-linux,
might it be simpler just to run flock without that option?

best wishes,
calum.

> ---
> utils/statd/start-statd | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/utils/statd/start-statd b/utils/statd/start-statd
> index b11a7d91a7f6..67a2f4ad8e0e 100755
> --- a/utils/statd/start-statd
> +++ b/utils/statd/start-statd
> @@ -8,7 +8,7 @@ PATH="/sbin:/usr/sbin:/bin:/usr/bin"
>
> # Use flock to serialize the running of this script
> exec 9> /run/rpc.statd.lock
> -flock -e 9
> +flock -x 9
>
> if [ -s /run/rpc.statd.pid ] &&
> [ "1$(cat /run/rpc.statd.pid)" -gt 1 ] &&



Attachments:
OpenPGP_signature.asc (855.00 B)
OpenPGP digital signature

2024-02-29 10:38:33

by Ahmad Fatoum

[permalink] [raw]
Subject: Re: [PATCH nfs-utils] start-statd: use flock -x instead of -e for busybox compatibility

Hello Calum,

On 28.02.24 22:09, Calum Mackay wrote:
> On 28/02/2024 6:56 pm, Ahmad Fatoum wrote:
>> busybox flock(1) only supports -x and not -e. util-linux flock(1)
>> treats both -e and -x the same, documents them both in its man page,
>> but lists only -x in its help output.
>>
>> Referring to util-linux git, it seems both options were added between
>> util-linux-2.13-pre1 and util-linux-2.13-pre2 back in 2006, so there
>> should be no harm in switching over to flock -x to avoid confusing
>> error output when attempting to mount a NFS on a busybox system:
>>
>>    $ mount -t nfs 192.168.2.13:/home/afa/nfsroot/imx8mn-evk /mnt
>>    flock: invalid option -- 'e'
>>    BusyBox v1.36.0 () multi-call binary.
>>
>>    Usage: flock [-sxun] FD | { FILE [-c] PROG ARGS }
>>
>>    [Un]lock file descriptor, or lock FILE, run PROG
>>
>>            -s      Shared lock
>>            -x      Exclusive lock (default)
>>            -u      Unlock FD
>>            -n      Fail rather than wait
>>
>> Signed-off-by: Ahmad Fatoum <[email protected]>
>
> hi Ahmad,
>
> Since the default is an exclusive lock, in both BusyBox and util-linux, might it be simpler just to run flock without that option?

That would be another possibility, yes. I don't mind the explicitness in
specifying an argument, but I don't feel strongly either way.

Cheers,
Ahmad

>
> best wishes,
> calum.
>
>> ---
>>   utils/statd/start-statd | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/utils/statd/start-statd b/utils/statd/start-statd
>> index b11a7d91a7f6..67a2f4ad8e0e 100755
>> --- a/utils/statd/start-statd
>> +++ b/utils/statd/start-statd
>> @@ -8,7 +8,7 @@ PATH="/sbin:/usr/sbin:/bin:/usr/bin"
>>     # Use flock to serialize the running of this script
>>   exec 9> /run/rpc.statd.lock
>> -flock -e 9
>> +flock -x 9
>>     if [ -s /run/rpc.statd.pid ] &&
>>          [ "1$(cat /run/rpc.statd.pid)" -gt 1 ] &&
>
>

--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |


2024-03-15 13:11:38

by Steve Dickson

[permalink] [raw]
Subject: Re: [PATCH nfs-utils] start-statd: use flock -x instead of -e for busybox compatibility



On 2/28/24 1:56 PM, Ahmad Fatoum wrote:
> busybox flock(1) only supports -x and not -e. util-linux flock(1)
> treats both -e and -x the same, documents them both in its man page,
> but lists only -x in its help output.
>
> Referring to util-linux git, it seems both options were added between
> util-linux-2.13-pre1 and util-linux-2.13-pre2 back in 2006, so there
> should be no harm in switching over to flock -x to avoid confusing
> error output when attempting to mount a NFS on a busybox system:
>
> $ mount -t nfs 192.168.2.13:/home/afa/nfsroot/imx8mn-evk /mnt
> flock: invalid option -- 'e'
> BusyBox v1.36.0 () multi-call binary.
>
> Usage: flock [-sxun] FD | { FILE [-c] PROG ARGS }
>
> [Un]lock file descriptor, or lock FILE, run PROG
>
> -s Shared lock
> -x Exclusive lock (default)
> -u Unlock FD
> -n Fail rather than wait
>
> Signed-off-by: Ahmad Fatoum <[email protected]>
Committed... (tag nfs-utils-2-7-1-rc5)

I like that fact the lock is explicitly
set... takes out the guess work.

steved.
> ---
> utils/statd/start-statd | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/utils/statd/start-statd b/utils/statd/start-statd
> index b11a7d91a7f6..67a2f4ad8e0e 100755
> --- a/utils/statd/start-statd
> +++ b/utils/statd/start-statd
> @@ -8,7 +8,7 @@ PATH="/sbin:/usr/sbin:/bin:/usr/bin"
>
> # Use flock to serialize the running of this script
> exec 9> /run/rpc.statd.lock
> -flock -e 9
> +flock -x 9
>
> if [ -s /run/rpc.statd.pid ] &&
> [ "1$(cat /run/rpc.statd.pid)" -gt 1 ] &&