cgroup: use log_warning_errno() where possible
This commit is contained in:
parent
9dca1d5723
commit
57f1030b13
|
@ -651,30 +651,31 @@ static int lookup_block_device(const char *p, dev_t *ret) {
|
|||
r = device_path_parse_major_minor(p, &mode, &rdev);
|
||||
if (r == -ENODEV) { /* not a parsable device node, need to go to disk */
|
||||
struct stat st;
|
||||
|
||||
if (stat(p, &st) < 0)
|
||||
return log_warning_errno(errno, "Couldn't stat device '%s': %m", p);
|
||||
|
||||
rdev = (dev_t)st.st_rdev;
|
||||
dev = (dev_t)st.st_dev;
|
||||
mode = st.st_mode;
|
||||
} else if (r < 0)
|
||||
return log_warning_errno(r, "Failed to parse major/minor from path '%s': %m", p);
|
||||
|
||||
if (S_ISCHR(mode)) {
|
||||
log_warning("Device node '%s' is a character device, but block device needed.", p);
|
||||
return -ENOTBLK;
|
||||
} else if (S_ISBLK(mode))
|
||||
if (S_ISCHR(mode))
|
||||
return log_warning_errno(SYNTHETIC_ERRNO(ENOTBLK),
|
||||
"Device node '%s' is a character device, but block device needed.", p);
|
||||
if (S_ISBLK(mode))
|
||||
*ret = rdev;
|
||||
else if (major(dev) != 0)
|
||||
*ret = dev; /* If this is not a device node then use the block device this file is stored on */
|
||||
else {
|
||||
/* If this is btrfs, getting the backing block device is a bit harder */
|
||||
r = btrfs_get_block_device(p, ret);
|
||||
if (r < 0 && r != -ENOTTY)
|
||||
if (r == -ENOTTY)
|
||||
return log_warning_errno(SYNTHETIC_ERRNO(ENODEV),
|
||||
"'%s' is not a block device node, and file system block device cannot be determined or is not local.", p);
|
||||
if (r < 0)
|
||||
return log_warning_errno(r, "Failed to determine block device backing btrfs file system '%s': %m", p);
|
||||
if (r == -ENOTTY) {
|
||||
log_warning("'%s' is not a block device node, and file system block device cannot be determined or is not local.", p);
|
||||
return -ENODEV;
|
||||
}
|
||||
}
|
||||
|
||||
/* If this is a LUKS device, try to get the originating block device */
|
||||
|
|
Loading…
Reference in a new issue