47 lines
1.4 KiB
C
47 lines
1.4 KiB
C
#include <libcbd.h>
|
|
|
|
#include <cbdutil.h>
|
|
|
|
static u64
|
|
get_sysfs_value(const char* dirname, const char* filename)
|
|
{
|
|
char pathname[PATH_MAX];
|
|
int fd;
|
|
char buf[80];
|
|
|
|
sprintf(pathname, "%s/%s", dirname, filename);
|
|
fd = open(pathname, O_RDONLY);
|
|
if (fd < 0) {
|
|
error("Cannot open device\n");
|
|
}
|
|
if (read(fd, buf, sizeof(buf)) < 1) {
|
|
error("Cannot read device\n");
|
|
}
|
|
close(fd);
|
|
return (u64)strtoul(buf, NULL, 10);
|
|
}
|
|
|
|
int
|
|
cbd_info(const char* dev, struct cbd_info* info)
|
|
{
|
|
char dirname[PATH_MAX];
|
|
|
|
sprintf(dirname, "/sys/fs/compress/%s", dev);
|
|
|
|
info->lbatpblk_r = get_sysfs_value(dirname, "lbatpblk_r");
|
|
info->lbatpblk_w = get_sysfs_value(dirname, "lbatpblk_w");
|
|
info->lbd_r = get_sysfs_value(dirname, "lbd_r");
|
|
info->lbd_w = get_sysfs_value(dirname, "lbd_w");
|
|
info->lblk_size = get_sysfs_value(dirname, "lblk_size");
|
|
info->lblk_total = get_sysfs_value(dirname, "lblk_total");
|
|
info->lblk_used = get_sysfs_value(dirname, "lblk_used");
|
|
info->pbat_r = get_sysfs_value(dirname, "pbat_r");
|
|
info->pbat_w = get_sysfs_value(dirname, "pbat_w");
|
|
info->pblk_total = get_sysfs_value(dirname, "pblk_total");
|
|
info->pblk_used = get_sysfs_value(dirname, "pblk_used");
|
|
info->zone_init = get_sysfs_value(dirname, "zone_init");
|
|
info->zone_total = get_sysfs_value(dirname, "zone_total");
|
|
|
|
return 0;
|
|
}
|