summaryrefslogtreecommitdiffstats
path: root/src/shared/loop-util.c
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2022-09-05 22:01:34 +0200
committerYu Watanabe <watanabe.yu+github@gmail.com>2022-09-07 13:45:24 +0200
commitaa0295f1d9ac2b94f9506e707a01905c6af591d4 (patch)
tree3c2a7e1c2b6bcec12abb867759708d6917c79cb4 /src/shared/loop-util.c
parentblockdev-util: check if provided sd_device is for a whole block device (diff)
downloadsystemd-aa0295f1d9ac2b94f9506e707a01905c6af591d4.tar.xz
systemd-aa0295f1d9ac2b94f9506e707a01905c6af591d4.zip
loop-util: move device_has_block_children() to blockdev-util.c
As the function is not only for loopback block device. No actual code changes, just refactoring.
Diffstat (limited to 'src/shared/loop-util.c')
-rw-r--r--src/shared/loop-util.c49
1 files changed, 1 insertions, 48 deletions
diff --git a/src/shared/loop-util.c b/src/shared/loop-util.c
index 56574ee7f2..b5c16b0b0e 100644
--- a/src/shared/loop-util.c
+++ b/src/shared/loop-util.c
@@ -70,53 +70,6 @@ static int get_current_uevent_seqnum(uint64_t *ret) {
return 0;
}
-static int device_has_block_children(sd_device *d) {
- _cleanup_(sd_device_enumerator_unrefp) sd_device_enumerator *e = NULL;
- const char *main_ss, *main_dt;
- int r;
-
- assert(d);
-
- /* Checks if the specified device currently has block device children (i.e. partition block
- * devices). */
-
- r = sd_device_get_subsystem(d, &main_ss);
- if (r < 0)
- return r;
-
- if (!streq(main_ss, "block"))
- return -EINVAL;
-
- r = sd_device_get_devtype(d, &main_dt);
- if (r < 0)
- return r;
-
- if (!streq(main_dt, "disk")) /* Refuse invocation on partition block device, insist on "whole" device */
- return -EINVAL;
-
- r = sd_device_enumerator_new(&e);
- if (r < 0)
- return r;
-
- r = sd_device_enumerator_allow_uninitialized(e);
- if (r < 0)
- return r;
-
- r = sd_device_enumerator_add_match_parent(e, d);
- if (r < 0)
- return r;
-
- r = sd_device_enumerator_add_match_subsystem(e, "block", /* match = */ true);
- if (r < 0)
- return r;
-
- r = sd_device_enumerator_add_match_property(e, "DEVTYPE", "partition");
- if (r < 0)
- return r;
-
- return !!sd_device_enumerator_get_device_first(e);
-}
-
static int open_lock_fd(int primary_fd, int operation) {
int lock_fd;
@@ -168,7 +121,7 @@ static int loop_configure(
* superficially is detached but still has partition block devices associated for it. Let's then
* manually remove the partitions via BLKPG, and tell the caller we did that via EUCLEAN, so they try
* again. */
- r = device_has_block_children(dev);
+ r = block_device_has_partitions(dev);
if (r < 0)
return r;
if (r > 0) {