From ce726252a9a9487a694cbd68f4d13542ba965258 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 14 Oct 2010 00:43:13 +0200 Subject: [PATCH] umount: simplify code for deactivating loop devices --- src/umount.c | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/src/umount.c b/src/umount.c index bd4f01ff..ff1296fc 100644 --- a/src/umount.c +++ b/src/umount.c @@ -271,23 +271,14 @@ finish: static int delete_loopback(const char *device) { int fd, r; - if ((fd = open(device, O_RDONLY|O_CLOEXEC)) < 0) { - if (errno == ENOENT) { - log_debug("Loop device %s does not exist.", device); - errno = 0; - return 0; - } + if ((fd = open(device, O_RDONLY|O_CLOEXEC)) < 0) return -errno; - } - ioctl(fd, LOOP_CLR_FD, 0); - r = errno; + r = ioctl(fd, LOOP_CLR_FD, 0); close_nointr_nofail(fd); - if (r == ENXIO) /* not bound, so no error */ - r = 0; - errno = r; - return -errno; + /* ENXIO: not bound, so no error */ + return (r >= 0 || errno == ENXIO) ? 0 : -errno; } static int mount_points_list_umount(MountPoint **mount_point_list_head) { -- 2.39.5