diff --git a/src/basic/blockdev-util.c b/src/basic/blockdev-util.c index 625bbdd943..0ee14cbc0b 100644 --- a/src/basic/blockdev-util.c +++ b/src/basic/blockdev-util.c @@ -21,6 +21,9 @@ int block_get_whole_disk(dev_t d, dev_t *ret) { assert(ret); + if (major(d) == 0) + return -ENODEV; + /* If it has a queue this is good enough for us */ xsprintf_sys_block_path(p, "/queue", d); if (access(p, F_OK) >= 0) { @@ -31,7 +34,7 @@ int block_get_whole_disk(dev_t d, dev_t *ret) { /* If it is a partition find the originating device */ xsprintf_sys_block_path(p, "/partition", d); if (access(p, F_OK) < 0) - return -ENOENT; + return -errno; /* Get parent dev_t */ xsprintf_sys_block_path(p, "/../dev", d); @@ -46,10 +49,10 @@ int block_get_whole_disk(dev_t d, dev_t *ret) { /* Only return this if it is really good enough for us. */ xsprintf_sys_block_path(p, "/queue", devt); if (access(p, F_OK) < 0) - return -ENOENT; + return -errno; *ret = devt; - return 0; + return 1; } int get_block_device(const char *path, dev_t *dev) {