From: Lennart Poettering Date: Wed, 13 Oct 2010 22:43:13 +0000 (+0200) Subject: umount: simplify code for deactivating loop devices X-Git-Tag: v12~237 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=ce726252a9a9487a694cbd68f4d13542ba965258;ds=sidebyside umount: simplify code for deactivating loop devices --- diff --git a/src/umount.c b/src/umount.c index bd4f01ff6..ff1296fc0 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) {