common.sh: backport loopback_partscan retry to 77
BUG=chromium:1009559
TEST=tryjob
Change-Id: Ia5ed20e823f769332a419eaddf8b5932d8c13d64
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosutils/+/1833061
Reviewed-by: Jason Clinton <jclinton@chromium.org>
Commit-Queue: George Engelbrecht <engeg@google.com>
Tested-by: George Engelbrecht <engeg@google.com>
(cherry picked from commit 1e4496ce2260800223949fc46413b00b0b242720)
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosutils/+/1834757
Auto-Submit: George Engelbrecht <engeg@google.com>
Commit-Queue: Daniel Gagnon <dgagnon@google.com>
Reviewed-by: Daniel Gagnon <dgagnon@google.com>
diff --git a/common.sh b/common.sh
index b57a215..2cd0520 100644
--- a/common.sh
+++ b/common.sh
@@ -774,10 +774,26 @@
local lb_dev image="$1"
shift
lb_dev=$(au_generator_sudo losetup --show -f "$@" "${image}")
+
# Ignore problems deleting existing partitions. There shouldn't be any
# which will upset partx, but that's actually ok.
au_generator_sudo partx -d "${lb_dev}" 2>/dev/null || true
- au_generator_sudo partx -a "${lb_dev}"
+
+ # Initial sync to hopefully reduce chances of read failure.
+ sync
+
+ # First try to add missing partitions.
+ if ! au_generator_sudo partx -a "${lb_dev}"; then
+ warn "Adding partitions with 'partx -a ${lb_dev}' failed."
+ warn "Dumping full kernel buffer"
+ dmesg >&2 || true
+ sync
+ sleep 1
+
+ # Try a partition update to recover.
+ # https://crbug.com/999596
+ au_generator_sudo partx -u "${lb_dev}"
+ fi
echo "${lb_dev}"
}