diff --git a/src/basic/btrfs-util.c b/src/basic/btrfs-util.c index 775b97b100..17ee474f73 100644 --- a/src/basic/btrfs-util.c +++ b/src/basic/btrfs-util.c @@ -319,7 +319,7 @@ int btrfs_get_block_device_fd(int fd, dev_t *dev) { return -errno; if (!S_ISBLK(st.st_mode)) - return -ENODEV; + return -ENOTBLK; if (major(st.st_rdev) == 0) return -ENODEV; diff --git a/src/test/test-fs-util.c b/src/test/test-fs-util.c index d005b3e8e5..e144551eb7 100644 --- a/src/test/test-fs-util.c +++ b/src/test/test-fs-util.c @@ -850,6 +850,12 @@ static void test_path_is_encrypted_one(const char *p, int expect) { int r; r = path_is_encrypted(p); + if (r == -ENOENT) /* This might fail, if btrfs is used and we run in a container. In that case we + * cannot resolve the device node paths that BTRFS_IOC_DEV_INFO returns, because + * the device nodes are unlikely to exist in the container. But if we can't stat() + * them we cannot determine the dev_t of them, and thus cannot figure out if they + * are enrypted. Hence let's just ignore ENOENT here. */ + return; assert_se(r >= 0); printf("%s encrypted: %s\n", p, yes_no(r));