* [Buildroot] [git commit branch/2021.02.x] package/util-linux: fix mount -a
@ 2022-02-27 19:34 Peter Korsgaard
0 siblings, 0 replies; only message in thread
From: Peter Korsgaard @ 2022-02-27 19:34 UTC (permalink / raw)
To: buildroot
commit: https://git.buildroot.net/buildroot/commit/?id=477fa607517c892e21e5d667457276a250d12819
branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/2021.02.x
Fixes:
- https://bugs.buildroot.org/show_bug.cgi?id=14351
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
(cherry picked from commit 2f5068640161f7b267099e28b69d4c2280b4ded3)
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
---
...mark-cache-as-probed-if-sys-not-available.patch | 141 +++++++++++++++++++++
1 file changed, 141 insertions(+)
diff --git a/package/util-linux/0002-libblkid-don-t-mark-cache-as-probed-if-sys-not-available.patch b/package/util-linux/0002-libblkid-don-t-mark-cache-as-probed-if-sys-not-available.patch
new file mode 100644
index 0000000000..bfc8f60834
--- /dev/null
+++ b/package/util-linux/0002-libblkid-don-t-mark-cache-as-probed-if-sys-not-available.patch
@@ -0,0 +1,141 @@
+From 84d38ae3eca523ef990cb848563cc63de25266e6 Mon Sep 17 00:00:00 2001
+From: Karel Zak <kzak@redhat.com>
+Date: Fri, 19 Nov 2021 14:19:03 +0100
+Subject: [PATCH] libblkid: don't mark cache as "probed" if /sys not available
+
+For "mount --all" we need to read the cache more than once in a short
+time. The library checks the delay between probes, and if the delay is
+too short, it does not read devices. This is a problem on boot when there
+are no /sys, and the cache is empty. In this case, we need to check
+for /sys until it's available constantly.
+
+https://github.com/util-linux/util-linux/issues/1492
+Signed-off-by: Karel Zak <kzak@redhat.com>
+
+[Retrieved from:
+https://github.com/util-linux/util-linux/commit/84d38ae3eca523ef990cb848563cc63de25266e6]
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+---
+ libblkid/src/devname.c | 26 +++++++++++++++++---------
+ libblkid/src/resolve.c | 2 +-
+ libblkid/src/tag.c | 8 +++++---
+ 3 files changed, 23 insertions(+), 13 deletions(-)
+
+diff --git a/libblkid/src/devname.c b/libblkid/src/devname.c
+index 90a8245fc9..9a173e3489 100644
+--- a/libblkid/src/devname.c
++++ b/libblkid/src/devname.c
+@@ -429,6 +429,8 @@ sysfs_probe_all(blkid_cache cache, int only_if_new, int only_removable)
+ if (!sysfs)
+ return -BLKID_ERR_SYSFS;
+
++ DBG(DEVNAME, ul_debug(" probe /sys/block"));
++
+ /* scan /sys/block */
+ while ((dev = xreaddir(sysfs))) {
+ DIR *dir = NULL;
+@@ -533,14 +535,18 @@ sysfs_probe_all(blkid_cache cache, int only_if_new, int only_removable)
+ /*
+ * Read the device data for all available block devices in the system.
+ */
+-static int probe_all(blkid_cache cache, int only_if_new)
++static int probe_all(blkid_cache cache, int only_if_new, int update_interval)
+ {
++ int rc;
++
+ if (!cache)
+ return -BLKID_ERR_PARAM;
+
+ if (cache->bic_flags & BLKID_BIC_FL_PROBED &&
+- time(NULL) - cache->bic_time < BLKID_PROBE_INTERVAL)
++ time(NULL) - cache->bic_time < BLKID_PROBE_INTERVAL) {
++ DBG(PROBE, ul_debug("don't re-probe [delay < %d]", BLKID_PROBE_INTERVAL));
+ return 0;
++ }
+
+ blkid_read_cache(cache);
+ #ifdef VG_DIR
+@@ -548,7 +554,13 @@ static int probe_all(blkid_cache cache, int only_if_new)
+ #endif
+ ubi_probe_all(cache, only_if_new);
+
+- sysfs_probe_all(cache, only_if_new, 0);
++ rc = sysfs_probe_all(cache, only_if_new, 0);
++
++ /* Don't mark the change as "probed" if /sys not avalable */
++ if (update_interval && rc == 0) {
++ cache->bic_time = time(NULL);
++ cache->bic_flags |= BLKID_BIC_FL_PROBED;
++ }
+
+ blkid_flush_cache(cache);
+ return 0;
+@@ -567,11 +579,7 @@ int blkid_probe_all(blkid_cache cache)
+ int ret;
+
+ DBG(PROBE, ul_debug("Begin blkid_probe_all()"));
+- ret = probe_all(cache, 0);
+- if (ret == 0) {
+- cache->bic_time = time(NULL);
+- cache->bic_flags |= BLKID_BIC_FL_PROBED;
+- }
++ ret = probe_all(cache, 0, 1);
+ DBG(PROBE, ul_debug("End blkid_probe_all() [rc=%d]", ret));
+ return ret;
+ }
+@@ -589,7 +597,7 @@ int blkid_probe_all_new(blkid_cache cache)
+ int ret;
+
+ DBG(PROBE, ul_debug("Begin blkid_probe_all_new()"));
+- ret = probe_all(cache, 1);
++ ret = probe_all(cache, 1, 0);
+ DBG(PROBE, ul_debug("End blkid_probe_all_new() [rc=%d]", ret));
+ return ret;
+ }
+diff --git a/libblkid/src/resolve.c b/libblkid/src/resolve.c
+index 641b022860..16653fa8e1 100644
+--- a/libblkid/src/resolve.c
++++ b/libblkid/src/resolve.c
+@@ -32,7 +32,7 @@ char *blkid_get_tag_value(blkid_cache cache, const char *tagname,
+ blkid_cache c = cache;
+ char *ret = NULL;
+
+- DBG(TAG, ul_debug("looking for %s on %s", tagname, devname));
++ DBG(TAG, ul_debug("looking for tag %s on %s device", tagname, devname));
+
+ if (!devname)
+ return NULL;
+diff --git a/libblkid/src/tag.c b/libblkid/src/tag.c
+index 390a648648..178336505f 100644
+--- a/libblkid/src/tag.c
++++ b/libblkid/src/tag.c
+@@ -326,14 +326,14 @@ blkid_dev blkid_find_dev_with_tag(blkid_cache cache,
+ blkid_dev dev;
+ int pri;
+ struct list_head *p;
+- int probe_new = 0;
++ int probe_new = 0, probe_all = 0;
+
+ if (!cache || !type || !value)
+ return NULL;
+
+ blkid_read_cache(cache);
+
+- DBG(TAG, ul_debug("looking for %s=%s in cache", type, value));
++ DBG(TAG, ul_debug("looking for tag %s=%s in cache", type, value));
+
+ try_again:
+ pri = -1;
+@@ -366,9 +366,11 @@ blkid_dev blkid_find_dev_with_tag(blkid_cache cache,
+ goto try_again;
+ }
+
+- if (!dev && !(cache->bic_flags & BLKID_BIC_FL_PROBED)) {
++ if (!dev && !probe_all
++ && !(cache->bic_flags & BLKID_BIC_FL_PROBED)) {
+ if (blkid_probe_all(cache) < 0)
+ return NULL;
++ probe_all++;
+ goto try_again;
+ }
+ return dev;
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2022-02-27 19:48 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-02-27 19:34 [Buildroot] [git commit branch/2021.02.x] package/util-linux: fix mount -a Peter Korsgaard
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.