From: Lennart Poettering Date: Thu, 1 Sep 2022 12:59:56 +0000 (+0200) Subject: dissect: don't remove partitions explicitly on umount anymore X-Git-Tag: v252-rc1~275^2~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e8383058b2378e516b1a6c092b323537624db475;p=thirdparty%2Fsystemd.git dissect: don't remove partitions explicitly on umount anymore We do that now automatically when releasing the loopback device, hence we can drop the redundant try entirely. --- diff --git a/src/dissect/dissect.c b/src/dissect/dissect.c index 17291cf22f6..0c33cacdbad 100644 --- a/src/dissect/dissect.c +++ b/src/dissect/dissect.c @@ -864,7 +864,7 @@ static int action_umount(const char *path) { _cleanup_free_ char *canonical = NULL, *devname = NULL; _cleanup_(loop_device_unrefp) LoopDevice *d = NULL; dev_t devno; - int r, k; + int r; fd = chase_symlinks_and_open(path, NULL, 0, O_DIRECTORY, &canonical); if (fd == -ENOTDIR) @@ -907,25 +907,12 @@ static int action_umount(const char *path) { loop_device_unrelinquish(d); if (arg_rmdir) { - k = RET_NERRNO(rmdir(canonical)); - if (k < 0) - log_error_errno(k, "Failed to remove mount directory '%s': %m", canonical); - } else - k = 0; - - /* Before loop_device_unrefp() kicks in, let's explicitly remove all the partition subdevices of the - * loop device. We do this to ensure that all traces of the loop device are gone by the time this - * command exits. */ - r = block_device_remove_all_partitions(d->fd); - if (r == -EBUSY) { - log_error_errno(r, "One or more partitions of '%s' are busy, ignoring", devname); - r = 0; + r = RET_NERRNO(rmdir(canonical)); + if (r < 0) + return log_error_errno(r, "Failed to remove mount directory '%s': %m", canonical); } - if (r < 0) - log_error_errno(r, "Failed to remove one or more partitions of '%s': %m", devname); - - return k < 0 ? k : r; + return 0; } static int run(int argc, char *argv[]) {