From c07186ec03e888bce8d7929554d4141db6e6824e Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Sun, 18 Sep 2022 16:18:53 +0900 Subject: blockdev-util: split-out block_device_is_whole_disk() No functional changes, just preparation for later commits. --- src/shared/blockdev-util.c | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/src/shared/blockdev-util.c b/src/shared/blockdev-util.c index e5abb524d5..829abba675 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); -- cgit v1.2.3