From: Yu Watanabe Date: Wed, 7 Sep 2022 14:45:29 +0000 (+0900) Subject: Merge pull request #24571 from yuwata/dissect-loop-image-use-backing-file X-Git-Tag: v252-rc1~236 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=30633dbd3250c30b19434eaca190016efa3b59c0;p=thirdparty%2Fsystemd.git Merge pull request #24571 from yuwata/dissect-loop-image-use-backing-file dissect: save image path to LoopDevice and use it when dissect loop device --- 30633dbd3250c30b19434eaca190016efa3b59c0 diff --cc src/shared/loop-util.c index ba818d5371f,7a1b5ad2d39..f380338554d --- a/src/shared/loop-util.c +++ b/src/shared/loop-util.c @@@ -70,58 -71,10 +71,11 @@@ static int get_current_uevent_seqnum(ui 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; + _cleanup_close_ int lock_fd = -1; assert(primary_fd >= 0); + assert(IN_SET(operation & ~LOCK_NB, LOCK_SH, LOCK_EX)); lock_fd = fd_reopen(primary_fd, O_RDWR|O_CLOEXEC|O_NONBLOCK|O_NOCTTY); if (lock_fd < 0)