xentop: Fix xentop for blktap
authorKeir Fraser <keir.fraser@citrix.com>
Wed, 3 Dec 2008 15:58:23 +0000 (15:58 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Wed, 3 Dec 2008 15:58:23 +0000 (15:58 +0000)
Blktap devices information isn't shown by xentop currently.

xen-unstable c/s 17813 said "blktap devices have statistics
counters (e.g., rd_req, wr_req, oo_req) prepended by tap_".
In fact, it is as follows.

# ls -l /sys/devices/xen-backend/tap-1-769/statistics/
total 0
-r--r--r-- 1 root root 4096 Dec  3 20:37 oo_req
-r--r--r-- 1 root root 4096 Dec  3 20:37 rd_req
-r--r--r-- 1 root root 4096 Dec  3 20:37 rd_sect
-r--r--r-- 1 root root 4096 Dec  3 20:37 wr_req
-r--r--r-- 1 root root 4096 Dec  3 20:37 wr_sect

The statistics counters haven't had "tap_" because it was removed
by linux-2.6.18-xen c/s 34.

This patch reverts xen-unstable c/s 17813, then we can get the
blktap devices information by using xentop.

Signed-off-by: Masaki Kanno <kanno.masaki@jp.fujitsu.com>
tools/xenstat/libxenstat/src/xenstat_linux.c

index 69f483e8edc415aeadf0edc7efb26639f505fe11..2ac3ccfa01b03bd16ca43a09ba6b77f24abf1a1b 100644 (file)
@@ -182,12 +182,6 @@ int xenstat_collect_vbds(xenstat_node * node)
        struct dirent *dp;
        struct priv_data *priv = get_priv_data(node->handle);
 
-       char *sys_prefix = "statistics/";
-
-       /* 23 = "statistics/" + "xxxx_xx_req" */
-       char ooreq[23], rdreq[23], wrreq[23]; 
-       char *stat_prefix = NULL;
-
        if (priv == NULL) {
                perror("Allocation error");
                return 0;
@@ -215,16 +209,12 @@ int xenstat_collect_vbds(xenstat_node * node)
                if (ret != 3)
                        continue;
 
-
-               if (strcmp(buf,"vbd") == 0){
-                       stat_prefix = "";
+               if (strcmp(buf,"vbd") == 0)
                        vbd.back_type = 1;
-               } else if (strcmp(buf,"tap") == 0){
-                       stat_prefix = "tap_";
+               else if (strcmp(buf,"tap") == 0)
                        vbd.back_type = 2;
-               } else {
+               else
                        continue;
-               }
 
                domain = xenstat_node_domain(node, domid);
                if (domain == NULL) {
@@ -235,22 +225,19 @@ int xenstat_collect_vbds(xenstat_node * node)
                        continue;
                }
 
-               snprintf(ooreq, sizeof(ooreq), "%s%soo_req", sys_prefix, stat_prefix);
-               if((read_attributes_vbd(dp->d_name, ooreq, buf, 256)<=0)
+               if((read_attributes_vbd(dp->d_name, "statistics/oo_req", buf, 256)<=0)
                   || ((ret = sscanf(buf, "%llu", &vbd.oo_reqs)) != 1))
                {
                        continue;
                }
 
-               snprintf(rdreq,  sizeof(rdreq),"%s%srd_req", sys_prefix, stat_prefix);
-               if((read_attributes_vbd(dp->d_name, rdreq, buf, 256)<=0)
+               if((read_attributes_vbd(dp->d_name, "statistics/rd_req", buf, 256)<=0)
                   || ((ret = sscanf(buf, "%llu", &vbd.rd_reqs)) != 1))
                {
                        continue;
                }
 
-               snprintf(wrreq,  sizeof(wrreq),"%s%swr_req", sys_prefix, stat_prefix);
-               if((read_attributes_vbd(dp->d_name, wrreq, buf, 256)<=0)
+               if((read_attributes_vbd(dp->d_name, "statistics/wr_req", buf, 256)<=0)
                   || ((ret = sscanf(buf, "%llu", &vbd.wr_reqs)) != 1))
                {
                        continue;