From: Lennart Poettering Date: Thu, 6 Aug 2020 08:35:29 +0000 (+0200) Subject: dissect: use new blockdev_partscan_enabled() API where appropriate X-Git-Tag: v247-rc1~432^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=834c15ec383ba7cf4be9d064c080d49294f98901;p=thirdparty%2Fsystemd.git dissect: use new blockdev_partscan_enabled() API where appropriate --- diff --git a/src/shared/dissect-image.c b/src/shared/dissect-image.c index c98c84993e2..d3f183b50c5 100644 --- a/src/shared/dissect-image.c +++ b/src/shared/dissect-image.c @@ -215,22 +215,18 @@ static int wait_for_partitions_to_appear( break; r = -errno; if (r == -EINVAL) { - struct loop_info64 info; + /* If we are running on a block device that has partition scanning off, return an + * explicit recognizable error about this, so that callers can generate a proper + * message explaining the situation. */ - /* If we are running on a loop device that has partition scanning off, return - * an explicit recognizable error about this, so that callers can generate a - * proper message explaining the situation. */ - - if (ioctl(fd, LOOP_GET_STATUS64, &info) >= 0) { -#if HAVE_VALGRIND_MEMCHECK_H - /* Valgrind currently doesn't know LOOP_GET_STATUS64. Remove this once it does */ - VALGRIND_MAKE_MEM_DEFINED(&info, sizeof(info)); -#endif + r = blockdev_partscan_enabled(fd); + if (r < 0) + return r; + if (r == 0) + return log_debug_errno(EPROTONOSUPPORT, + "Device is a loop device and partition scanning is off!"); - if ((info.lo_flags & LO_FLAGS_PARTSCAN) == 0) - return log_debug_errno(EPROTONOSUPPORT, - "Device is a loop device and partition scanning is off!"); - } + return -EINVAL; /* original error */ } if (r != -EBUSY) return r;