[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] scripts: Use stat to check lock claim
Jason Andryuk writes ("[PATCH] scripts: Use stat to check lock claim"): > Replace the perl locking check with stat(1). Stat is able to fstat > stdin (file descriptor 0) when passed '-' as an argument. This is now > used to check $_lockfd. stat(1) support for '-' was introduced to > coreutils in 2009. > > After A releases its lock, script B will return from flock and execute > stat. Since the lockfile has been removed from A, stat prints an error > to stderr and exits non-zero. '|| :' is needed to squash the non-zero > exit status - otherwise the script terminates since `set -e` is enabled. > stderr needs to be redirected to /dev/null otherwise > /var/log/xen/xen-hotplug.log will get filled with "No such file or > directory" messages. Thanks. This is looking good. I have two nits: > While here, replace some tabs with spaces to match the rest of the file. Please can you do this in a separate patch, ideally beforehand. (I don't think this is a blocker in this case, given how small this patch is.) > + stat=$( stat -L -c '%D.%i' - $_lockfile 0<&$_lockfd 2>/dev/null || : > ) > + if [ -n "$stat" ]; then > + fd_stat=$( echo "$stat" | sed -n '1p' ) > + file_stat=$( echo "$stat" | sed -n '2p' ) > + if [ "$fd_stat" = "$file_stat" ] ; then break; fi I think you don't need sed here: $ ls -li t u 844307 -rw-rw-r-- 1 iwj iwj 117844 Oct 31 12:50 t 826417 -rw-r--r-- 1 iwj iwj 1765 Jan 31 2019 u $ bash -c 'x=$( stat -L -c "%D.%i" t u 2>/dev/null || : ); echo ${x% *} = ${x#* }' fe04.844307 = fe04.826417 $ The syntax (with newlines within the ${ }) is a bit odd but not invoking sed here will be faster. Alternatively, if you don't mind using --printf instead of -c, $ bash -c 'x=$( stat -L --format "%D.%i " t u 2>/dev/null || : ); echo ${x%% *} = ${x#* }' fe04.844307 = fe04.826417 $ I don't know when --format was introduced. I'm sorry to bounce the patch over such a small thing, but this is path is already quite slow and is critical for domain creation and I would prefer not to add (two) additional subprocess invocations here. Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |