From: Karel Zak Date: Wed, 22 May 2024 09:36:25 +0000 (+0200) Subject: libmount: (loop) detect and report lost loop nodes X-Git-Tag: v2.42-start~320^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9f94d121228b924e7dcc81f30efb2de983ea3359;p=thirdparty%2Futil-linux.git libmount: (loop) detect and report lost loop nodes Fixed: https://github.com/util-linux/util-linux/issues/2605 Signed-off-by: Karel Zak --- diff --git a/libmount/src/hook_loopdev.c b/libmount/src/hook_loopdev.c index 597b9339a..c01d536ce 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); }