From: "Roberto A. Foglietta" <roberto.foglietta@gmail.com>
To: Henning Schild <henning.schild@siemens.com>
Cc: "T. Schaffner" <tobias.schaffner@siemens.com>,
isar-users@googlegroups.com, felix.moessbauer@siemens.com,
jan.kiszka@siemens.com
Subject: Re: [PATCH] expand-on-first-boot: wait for udev to create symlink
Date: Fri, 9 Dec 2022 01:22:06 +0100 [thread overview]
Message-ID: <CAJGKYO70KdJLRrSk8BX_pPA83zKjcJJ+6Ce3ZA9VDJ89WxFXEA@mail.gmail.com> (raw)
In-Reply-To: <20221208183919.1703fb25@md1za8fc.ad001.siemens.net>
On Thu, 8 Dec 2022 at 18:39, Henning Schild <henning.schild@siemens.com> wrote:
>
> Am Thu, 8 Dec 2022 17:55:42 +0100
> schrieb "T. Schaffner" <tobias.schaffner@siemens.com>:
>
> > From: Tobias Schaffner <tobias.schaffner@siemens.com>
> >
> > systemd-growfs depends on a symlink to the partition of the filesystem
> > that should be resized. This symlink is created by udev in
> > /dev/block/.
> >
reading that patch I had a flash-back about two patches I did recently
for another project
https://github.com/robang74/tinycore-editor/commit/d57271e3229551ddfbd3deba1363d2efe2914908
https://github.com/robang74/tinycore-editor/commit/4ff435bb8a73c7e956ea4f9303a36fe06a136e54
both altered this file
https://github.com/robang74/tinycore-editor/blob/main/tinycore/changes/rcS
the main problem and the final result was much the same: trigger udev
and wait for the dev link.
# Start Udev to populate /dev and handle hotplug events
/sbin/udevd --daemon 2>&1 >/dev/null
/sbin/udevadm trigger --action=add 2>&1 >/dev/null
/sbin/udevadm settle --timeout=5
echo -ne "\e[1;37m"
for i in $(seq 1 10); do
if gettcdev; then
break;
fi >/dev/null
echo -n .
sleep 1
done
echo -e "\e[0m"
/sbin/udevadm control --exit --timeout=5
in my case, the booting device is not meaningful because the rootfs is a file.
function gettcdev() {
blkid --label $tclabel
}
So, the search for the USB stick device is done s by label
>
> > /dev/block/ as +# systemd-growfs depends on it
> > +while ! readlink /dev/block/* | grep -q "${LAST_PART_NAME}"; do
>
> I would make that much stricter to not be tricked by partial matches
>
> sda4 vs sda42
Irrelevant, if sda42 has been found then sda4 exists as well
considering the problem is not yet started.
However, for sake of precision and to avoid corner cases in which
sda42 is created before sda4 a dollar at the end of regex will solve
this issue.
+while ! readlink /dev/block/* | grep -qe "${LAST_PART_NAME}$"; do
>
> readlink -f /dev/block/* | grep -e -q "^${LAST_PART}$"
>
> > + sleep 0.1
>
> I wonder if there is anything we could do here. Maybe "udevadm trigger"
> and depend on udev after all. Because the 5 is a nasty guess ...
This is the reason because I cited my patches. I hope they will help you.
Best regards, R-
next prev parent reply other threads:[~2022-12-09 0:22 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-08 16:55 T. Schaffner
2022-12-08 17:39 ` Henning Schild
2022-12-08 19:18 ` Schaffner, Tobias
2022-12-08 19:42 ` Henning Schild
2022-12-09 0:22 ` Roberto A. Foglietta [this message]
2022-12-09 10:51 ` Schaffner, Tobias
2022-12-09 17:17 ` Roberto A. Foglietta
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=CAJGKYO70KdJLRrSk8BX_pPA83zKjcJJ+6Ce3ZA9VDJ89WxFXEA@mail.gmail.com \
--to=roberto.foglietta@gmail.com \
--cc=felix.moessbauer@siemens.com \
--cc=henning.schild@siemens.com \
--cc=isar-users@googlegroups.com \
--cc=jan.kiszka@siemens.com \
--cc=tobias.schaffner@siemens.com \
/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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox