Make-initrd development discussion
 help / color / mirror / Atom feed
From: Alexey Gladkov <gladkov.alexey@gmail.com>
To: make-initrd@lists.altlinux.org
Subject: [make-initrd] [PATCH 3/3] feature/network: Use flock-based locking
Date: Wed, 17 May 2023 18:04:42 +0200
Message-ID: <9b76d23c4101232d96ccb4a9e7db004f60c239f4.1684332365.git.gladkov.alexey@gmail.com> (raw)
In-Reply-To: <cover.1684332365.git.gladkov.alexey@gmail.com>

Signed-off-by: Alexey Gladkov <gladkov.alexey@gmail.com>
---
 features/network/data/lib/network/config         |  8 --------
 features/network/data/lib/network/hostname       | 10 +++-------
 features/network/data/lib/network/resolvconf     | 10 +++-------
 features/network/data/lib/network/udhcpc4.script | 12 ++++++------
 4 files changed, 12 insertions(+), 28 deletions(-)

diff --git a/features/network/data/lib/network/config b/features/network/data/lib/network/config
index c3a8dbb1..418b03b6 100755
--- a/features/network/data/lib/network/config
+++ b/features/network/data/lib/network/config
@@ -1,14 +1,6 @@
 #!/bin/bash -efu
 
 . shell-error
-
-lock="/tmp/$PROG.lock"
-while ! mkdir -- "$lock" >/dev/null 2>&1; do
-	sleep 0.1
-done
-unlock() { rmdir "$lock"; }
-trap unlock EXIT
-
 . network-sh-functions
 
 PROG="$PROG: $NET_IF"
diff --git a/features/network/data/lib/network/hostname b/features/network/data/lib/network/hostname
index 1160fba0..3597a495 100755
--- a/features/network/data/lib/network/hostname
+++ b/features/network/data/lib/network/hostname
@@ -1,18 +1,12 @@
 #!/bin/bash -efu
 
 . shell-error
+. shell-locks
 . network-sh-functions
 
 [ "$NET_EV_ACTION" = update ] ||
 	exit 0
 
-lock="/tmp/$PROG.lock"
-while ! mkdir -- "$lock" >/dev/null 2>&1; do
-	sleep 0.1
-done
-unlock() { rmdir "$lock"; }
-trap unlock EXIT
-
 PROG="$PROG: $NET_IF"
 message_time=1
 
@@ -20,6 +14,8 @@ get_iface_confdir &&
 	[ -f "$confdir/hostname" ] ||
 	exit 0
 
+fd_lock 90 "$0"
+
 name=
 read -r name < "$confdir/hostname" ||:
 
diff --git a/features/network/data/lib/network/resolvconf b/features/network/data/lib/network/resolvconf
index e6e14602..67ccb8ab 100755
--- a/features/network/data/lib/network/resolvconf
+++ b/features/network/data/lib/network/resolvconf
@@ -1,18 +1,12 @@
 #!/bin/bash -efu
 
 . shell-error
+. shell-locks
 . network-sh-functions
 
 [ "$NET_EV_ACTION" = update ] ||
 	exit 0
 
-lock="/tmp/$PROG.lock"
-while ! mkdir -- "$lock" >/dev/null 2>&1; do
-	sleep 0.1
-done
-unlock() { rmdir "$lock"; }
-trap unlock EXIT
-
 PROG="$PROG: $NET_IF"
 message_time=1
 
@@ -20,6 +14,8 @@ get_iface_confdir &&
 	[ -f "$confdir/resolv.conf" ] ||
 	exit 0
 
+fd_lock 90 "$0"
+
 message "write resolv.conf"
 
 tmp="$(mktemp "/etc/resolv.conf.XXXXXX")"
diff --git a/features/network/data/lib/network/udhcpc4.script b/features/network/data/lib/network/udhcpc4.script
index dcb1f74c..bd1b4779 100755
--- a/features/network/data/lib/network/udhcpc4.script
+++ b/features/network/data/lib/network/udhcpc4.script
@@ -1,5 +1,7 @@
 #!/bin/bash -efu
 
+. shell-locks
+
 STATE="$1"
 
 PROG="${0##*/}"
@@ -9,11 +11,9 @@ V="${CMDNAME##udhcpc}"
 INTERFACE="${interface-}"
 
 lock="/tmp/$CMDNAME.$INTERFACE.lock"
-while ! mkdir -- "$lock" >/dev/null 2>&1; do
-	sleep 0.1
-done
-unlock() { rmdir "$lock"; }
-trap unlock EXIT
+[ -d "$lock" ] || mkdir -p -- "$lock"
+
+fd_lock 90 "$lock"
 
 logfile=$(
 	. /.initrd/initenv
@@ -148,4 +148,4 @@ case "$STATE" in
 	*)
 		exit 0
 		;;
-esac
+esac 90<&-
-- 
2.33.8



      parent reply	other threads:[~2023-05-17 16:04 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-17 16:04 [make-initrd] [PATCH 0/3] New locking functions based on flock utility Alexey Gladkov
2023-05-17 16:04 ` [make-initrd] [PATCH 1/3] runtime: Add " Alexey Gladkov
2023-05-17 16:04 ` [make-initrd] [PATCH 2/3] Rewrite console locking Alexey Gladkov
2023-05-17 16:04 ` Alexey Gladkov [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=9b76d23c4101232d96ccb4a9e7db004f60c239f4.1684332365.git.gladkov.alexey@gmail.com \
    --to=gladkov.alexey@gmail.com \
    --cc=make-initrd@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Make-initrd development discussion

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/make-initrd/0 make-initrd/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 make-initrd make-initrd/ http://lore.altlinux.org/make-initrd \
		make-initrd@lists.altlinux.org make-initrd@lists.altlinux.ru make-initrd@lists.altlinux.com
	public-inbox-index make-initrd

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.make-initrd


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git