From: Yu Watanabe Date: Sun, 18 Sep 2022 07:18:53 +0000 (+0900) Subject: blockdev-util: split-out block_device_is_whole_disk() X-Git-Tag: v252-rc1~148^2~4 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c07186ec03e888bce8d7929554d4141db6e6824e;p=thirdparty%2Fsystemd.git blockdev-util: split-out block_device_is_whole_disk() No functional changes, just preparation for later commits. --- diff --git a/src/shared/blockdev-util.c b/src/shared/blockdev-util.c index e5abb524d5e..829abba6758 100644 --- a/src/shared/blockdev-util.c +++ b/src/shared/blockdev-util.c @@ -20,6 +20,26 @@ #include "missing_magic.h" #include "parse-util.h" +static int block_device_is_whole_disk(sd_device *dev) { + const char *s; + int r; + + assert(dev); + + r = sd_device_get_subsystem(dev, &s); + if (r < 0) + return r; + + if (!streq(s, "block")) + return -ENOTBLK; + + r = sd_device_get_devtype(dev, &s); + if (r < 0) + return r; + + return streq(s, "disk"); +} + int block_get_whole_disk(dev_t d, dev_t *ret) { char p[SYS_BLOCK_PATH_MAX("/partition")]; _cleanup_free_ char *s = NULL; @@ -518,18 +538,11 @@ int partition_enumerator_new(sd_device *dev, sd_device_enumerator **ret) { assert(dev); assert(ret); - r = sd_device_get_subsystem(dev, &s); + /* Refuse invocation on partition block device, insist on "whole" device */ + r = block_device_is_whole_disk(dev); if (r < 0) return r; - - if (!streq(s, "block")) - return -ENOTBLK; - - r = sd_device_get_devtype(dev, &s); - if (r < 0) - return r; - - if (!streq(s, "disk")) /* Refuse invocation on partition block device, insist on "whole" device */ + if (r == 0) return -EINVAL; r = sd_device_enumerator_new(&e);