mirror of
https://github.com/systemd/systemd.git
synced 2025-01-18 10:04:04 +03:00
4fe46c349d
In sd-device, `devpath` is a kind of syspath without '/sys' prefix, e.g. /devices/pci0000:00/0000:00:1c.4/0000:3c:00.0/nvme/nvme0/nvme0n1, and `devname` is a path to the device node, e.g. /dev/nvme0n1. Let's use the consistent name for the helper function.
43 lines
1.2 KiB
C
43 lines
1.2 KiB
C
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
|
|
|
#include <sys/quota.h>
|
|
#include <sys/stat.h>
|
|
|
|
#include "alloc-util.h"
|
|
#include "blockdev-util.h"
|
|
#include "device-util.h"
|
|
#include "quota-util.h"
|
|
|
|
int quotactl_devnum(int cmd, dev_t devnum, int id, void *addr) {
|
|
_cleanup_free_ char *devnode = NULL;
|
|
int r;
|
|
|
|
/* Like quotactl() but takes a dev_t instead of a path to a device node, and fixes caddr_t → void*,
|
|
* like we should, today */
|
|
|
|
r = devname_from_devnum(S_IFBLK, devnum, &devnode);
|
|
if (r < 0)
|
|
return r;
|
|
|
|
if (quotactl(cmd, devnode, id, addr) < 0)
|
|
return -errno;
|
|
|
|
return 0;
|
|
}
|
|
|
|
int quotactl_path(int cmd, const char *path, int id, void *addr) {
|
|
dev_t devno;
|
|
int r;
|
|
|
|
/* Like quotactl() but takes a path to some fs object, and changes the backing file system. I.e. the
|
|
* argument shouldn't be a block device but a regular file system object */
|
|
|
|
r = get_block_device(path, &devno);
|
|
if (r < 0)
|
|
return r;
|
|
if (devno == 0) /* Doesn't have a block device */
|
|
return -ENODEV;
|
|
|
|
return quotactl_devnum(cmd, devno, id, addr);
|
|
}
|