diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-12 03:50:42 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-12 03:50:42 +0000 |
commit | 78e9bb837c258ac0ec7712b3d612cc2f407e731e (patch) | |
tree | f515d16b6efd858a9aeb5b0ef5d6f90bf288283d /src/test/test-blockdev-util.c | |
parent | Adding debian version 255.5-1. (diff) | |
download | systemd-78e9bb837c258ac0ec7712b3d612cc2f407e731e.tar.xz systemd-78e9bb837c258ac0ec7712b3d612cc2f407e731e.zip |
Merging upstream version 256.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/test/test-blockdev-util.c')
-rw-r--r-- | src/test/test-blockdev-util.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/test/test-blockdev-util.c b/src/test/test-blockdev-util.c index 134386c..19626e0 100644 --- a/src/test/test-blockdev-util.c +++ b/src/test/test-blockdev-util.c @@ -1,7 +1,9 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include "blockdev-util.h" +#include "device-util.h" #include "errno-util.h" +#include "fd-util.h" #include "tests.h" static void test_path_is_encrypted_one(const char *p, int expect) { @@ -38,4 +40,39 @@ TEST(path_is_encrypted) { test_path_is_encrypted_one("/dev", booted > 0 ? false : -1); } +TEST(partscan_enabled) { + + _cleanup_(sd_device_enumerator_unrefp) sd_device_enumerator *e = NULL; + int r; + + assert_se(sd_device_enumerator_new(&e) >= 0); + assert_se(sd_device_enumerator_allow_uninitialized(e) >= 0); + assert_se(sd_device_enumerator_add_match_subsystem(e, "block", /* match = */ true) >= 0); + + FOREACH_DEVICE(e, dev) { + _cleanup_close_ int fd = -EBADF; + const char *name; + + r = sd_device_get_devname(dev, &name); + if (r < 0) { + log_warning_errno(r, "Found block device without a name, skipping."); + continue; + } + + fd = sd_device_open(dev, O_RDONLY|O_CLOEXEC|O_NONBLOCK|O_NOCTTY); + if (fd < 0) { + log_warning_errno(fd, "Found block device '%s' which we cannot open, skipping: %m", name); + continue; + } + + r = blockdev_partscan_enabled(fd); + if (r < 0) { + log_warning_errno(r, "Failed to determine if block device '%s' has partition scanning enabled, skipping: %m", name); + continue; + } + + log_info("%s has partition scanning enabled: %s", name, yes_no(r)); + } +} + DEFINE_TEST_MAIN(LOG_INFO); |