blockdev-util: add fd-based flavour of get_block_device()

This commit is contained in:
Lennart Poettering
2021-07-08 09:29:18 +02:00
parent 011d129cf4
commit 0bfef8b46f
2 changed files with 16 additions and 7 deletions
+15 -7
View File
@@ -57,21 +57,16 @@ int block_get_whole_disk(dev_t d, dev_t *ret) {
return 1;
}
int get_block_device(const char *path, dev_t *ret) {
_cleanup_close_ int fd = -1;
int get_block_device_fd(int fd, dev_t *ret) {
struct stat st;
int r;
assert(path);
assert(fd >= 0);
assert(ret);
/* Gets the block device directly backing a file system. If the block device is encrypted, returns
* the device mapper block device. */
fd = open(path, O_RDONLY|O_NOFOLLOW|O_CLOEXEC);
if (fd < 0)
return -errno;
if (fstat(fd, &st))
return -errno;
@@ -90,6 +85,19 @@ int get_block_device(const char *path, dev_t *ret) {
return 0;
}
int get_block_device(const char *path, dev_t *ret) {
_cleanup_close_ int fd = -1;
assert(path);
assert(ret);
fd = open(path, O_RDONLY|O_NOFOLLOW|O_CLOEXEC);
if (fd < 0)
return -errno;
return get_block_device_fd(fd, ret);
}
int block_get_originating(dev_t dt, dev_t *ret) {
_cleanup_closedir_ DIR *d = NULL;
_cleanup_free_ char *t = NULL;
+1
View File
@@ -15,6 +15,7 @@
int block_get_whole_disk(dev_t d, dev_t *ret);
int block_get_originating(dev_t d, dev_t *ret);
int get_block_device_fd(int fd, dev_t *ret);
int get_block_device(const char *path, dev_t *dev);
int get_block_device_harder(const char *path, dev_t *dev);