1 Star 0 Fork 8

wangkang101 / lxcfs

forked from src-openEuler / lxcfs 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
0010-diskstats-support-devicemapper-device.patch 2.44 KB
一键复制 编辑 原始数据 按行查看 历史
wangkang101 提交于 2020-08-28 15:17 . update to 4.0.5
diff --git a/src/proc_fuse.c b/src/proc_fuse.c
index 145e2e2..7442d4c 100644
--- a/src/proc_fuse.c
+++ b/src/proc_fuse.c
@@ -537,6 +537,15 @@ void free_devinfo_list(struct devinfo *ptr)
}
}
+static bool need_record_diskstats(unsigned int major, unsigned int minor)
+{
+ // support device which major is 253 and 252
+ if (major == 253 || major == 252) {
+ return true;
+ }
+ return false;
+}
+
static int proc_diskstats_read(char *buf, size_t size, off_t offset,
struct fuse_file_info *fi)
{
@@ -562,6 +571,7 @@ static int proc_diskstats_read(char *buf, size_t size, off_t offset,
int i = 0;
int ret;
char dev_name[72];
+ char tmp_dev_name[72];
if (offset) {
int left;
@@ -629,6 +639,7 @@ static int proc_diskstats_read(char *buf, size_t size, off_t offset,
while (getline(&line, &linelen, f) != -1) {
ssize_t l;
char lbuf[256];
+ bool match = false;
memset(dev_name, 0, sizeof(dev_name));
i = sscanf(line, "%u %u %71s", &major, &minor, dev_name);
@@ -638,9 +649,14 @@ static int proc_diskstats_read(char *buf, size_t size, off_t offset,
if (major == ptr->major && minor == ptr->minor) {
snprintf(dev_name, sizeof(dev_name), "%s", ptr->name);
dev_name[71] = '\0';
+ match = true;
}
}
+ if (!match) {
+ continue;
+ }
+
get_blkio_io_value(io_serviced_str, major, minor, "Read", &read);
get_blkio_io_value(io_serviced_str, major, minor, "Write", &write);
get_blkio_io_value(io_merged_str, major, minor, "Read", &read_merged);
@@ -670,8 +686,16 @@ static int proc_diskstats_read(char *buf, size_t size, off_t offset,
snprintf(lbuf, 256, "%u %u %s %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu\n",
major, minor, dev_name, read, read_merged, read_sectors, read_ticks,
write, write_merged, write_sectors, write_ticks, ios_pgr, tot_ticks, rq_ticks);
- else
+ else if (need_record_diskstats(major, minor)) {
+ sscanf(line, "%u %u %71s %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu\n",
+ &major, &minor, tmp_dev_name, &read, &read_merged, &read_sectors, &read_ticks,
+ &write, &write_merged, &write_sectors, &write_ticks, &ios_pgr, &tot_ticks, &rq_ticks);
+ snprintf(lbuf, 256, "%u %u %s %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu\n",
+ major, minor, dev_name, read, read_merged, read_sectors, read_ticks,
+ write, write_merged, write_sectors, write_ticks, ios_pgr, tot_ticks, rq_ticks);
+ } else {
continue;
+ }
l = snprintf(cache, cache_size, "%s", lbuf);
if (l < 0) {
1
https://gitee.com/wangkang101/lxcfs.git
git@gitee.com:wangkang101/lxcfs.git
wangkang101
lxcfs
lxcfs
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891