From: Lennart Poettering Date: Mon, 10 Jul 2017 19:41:14 +0000 (+0200) Subject: mount: change find_loop_device() error code when no loop device is found to ENXIO X-Git-Tag: v234~13^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=aa46fa6420c641552eda6cde5de712cbebbc8dc6;p=thirdparty%2Fsystemd.git mount: change find_loop_device() error code when no loop device is found to ENXIO ENOENT is a bit too likely to be returned for various reasons, for example if /sys or /proc are not mounted and hence the files we need not around. Hence, let's use ENXIO instead, which is equally fitting for the purpose but has the benefit that the underlying calls won't generate this error on their own, hence any ambiguity is removed. --- diff --git a/src/mount/mount-tool.c b/src/mount/mount-tool.c index 23083fd16ea..c0b0e4630c0 100644 --- a/src/mount/mount-tool.c +++ b/src/mount/mount-tool.c @@ -795,7 +795,7 @@ static int find_loop_device(const char *backing_file, char **loop_dev) { } if (!l) - return -ENOENT; + return -ENXIO; *loop_dev = l; l = NULL; /* avoid freeing */ @@ -954,7 +954,7 @@ static int umount_loop(sd_bus *bus, const char *backing_file) { r = find_loop_device(backing_file, &loop_dev); if (r < 0) - return log_error_errno(r, r == -ENOENT ? "File %s is not mounted." : "Can't get loop device for %s: %m", backing_file); + return log_error_errno(r, r == -ENXIO ? "File %s is not mounted." : "Can't get loop device for %s: %m", backing_file); return umount_by_device(bus, loop_dev); } @@ -1229,10 +1229,10 @@ static int discover_loop_backing_file(void) { int r; r = find_loop_device(arg_mount_what, &loop_dev); - if (r < 0 && r != -ENOENT) + if (r < 0 && r != -ENXIO) return log_error_errno(errno, "Can't get loop device for %s: %m", arg_mount_what); - if (r == -ENOENT) { + if (r == -ENXIO) { _cleanup_free_ char *escaped = NULL; if (arg_mount_where)