From 9f94d121228b924e7dcc81f30efb2de983ea3359 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Wed, 22 May 2024 11:36:25 +0200 Subject: [PATCH] libmount: (loop) detect and report lost loop nodes Fixed: https://github.com/util-linux/util-linux/issues/2605 Signed-off-by: Karel Zak --- libmount/src/hook_loopdev.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libmount/src/hook_loopdev.c b/libmount/src/hook_loopdev.c index 597b9339ac0..c01d536ce15 100644 --- a/libmount/src/hook_loopdev.c +++ b/libmount/src/hook_loopdev.c @@ -277,6 +277,14 @@ static int setup_loopdev(struct libmnt_context *cxt, goto done_no_deinit; if (mnt_opt_has_value(loopopt)) { rc = loopcxt_set_device(&lc, mnt_opt_get_value(loopopt)); + if (rc == 0 && loopcxt_is_lost(&lc)) { + DBG(LOOP, ul_debugobj(cxt, "node lost")); + + dev_t devno = loopcxt_get_devno(&lc); + mnt_context_sprintf_errmsg(cxt, _("device node %s (%u:%u) is lost"), + loopcxt_get_device(&lc), major(devno), minor(devno)); + rc = -EINVAL; + } if (rc == 0) loopdev = loopcxt_get_device(&lc); }