This patch modify collecting of all VBD's statistics.
The libxenstat library is also searched tap-x-y in /sys/devices/xen-backend/ ,
but not only vbd-x-y.
# HG changeset patch
# User s-uchida@xxxxxxxxxxxxx
# Date 1180665629 -32400
# Node ID 1768a89bb87824249827d935d7803d8193bdeb05
# Parent d06f4b7fec7f132030fa7bd2dbb358c8bd761a6a
XENSTAT: Adding to scan blktap information.
Sigened-off-by: Satoshi UCHIDA <s-uchida@xxxxxxxxxxxxx>
diff -r d06f4b7fec7f -r 1768a89bb878 tools/xenstat/libxenstat/src/xenstat.c
--- a/tools/xenstat/libxenstat/src/xenstat.c Fri Jun 01 11:38:10 2007 +0900
+++ b/tools/xenstat/libxenstat/src/xenstat.c Fri Jun 01 11:40:29 2007 +0900
@@ -625,6 +625,12 @@ static void xenstat_free_vbds(xenstat_no
free(node->domains[i].vbds);
}
+/* Get the back driver type for Virtual Block Device */
+unsigned int xenstat_vbd_type(xenstat_vbd * vbd)
+{
+ return vbd->back_type;
+}
+
/* Get the major number of VBD device */
unsigned int xenstat_vbd_dev(xenstat_vbd * vbd)
{
diff -r d06f4b7fec7f -r 1768a89bb878 tools/xenstat/libxenstat/src/xenstat.h
--- a/tools/xenstat/libxenstat/src/xenstat.h Fri Jun 01 11:38:10 2007 +0900
+++ b/tools/xenstat/libxenstat/src/xenstat.h Fri Jun 01 11:40:29 2007 +0900
@@ -172,6 +172,10 @@ unsigned long long xenstat_network_tdrop
/*
* VBD functions - extract information from a xen_vbd
*/
+
+/* Get the back driver type for Virtual Block Device */
+unsigned int xenstat_vbd_type(xenstat_vbd * vbd);
+
/* Get the device number for Virtual Block Device */
unsigned int xenstat_vbd_dev(xenstat_vbd * vbd);
diff -r d06f4b7fec7f -r 1768a89bb878
tools/xenstat/libxenstat/src/xenstat_linux.c
--- a/tools/xenstat/libxenstat/src/xenstat_linux.c Fri Jun 01 11:38:10
2007 +0900
+++ b/tools/xenstat/libxenstat/src/xenstat_linux.c Fri Jun 01 11:40:29
2007 +0900
@@ -204,17 +204,23 @@ int xenstat_collect_vbds(xenstat_node *
int ret;
char buf[256];
-
- ret = sscanf(dp->d_name, "vbd-%u-%u", &domid, &vbd.dev);
- if (ret != 2)
+ ret = sscanf(dp->d_name, "%3s-%u-%u", buf, &domid, &vbd.dev);
+ if (ret != 3)
+ continue;
+
+ if (strcmp(buf,"vbd") == 0)
+ vbd.back_type = 1;
+ else if (strcmp(buf,"tap") == 0)
+ vbd.back_type = 2;
+ else
continue;
domain = xenstat_node_domain(node, domid);
if (domain == NULL) {
fprintf(stderr,
- "Found interface vbd-%u-%u but domain %u"
+ "Found interface %s-%u-%u but domain %u"
" does not exist.\n",
- domid, vbd.dev, domid);
+ buf, domid, vbd.dev, domid);
continue;
}
diff -r d06f4b7fec7f -r 1768a89bb878 tools/xenstat/libxenstat/src/xenstat_priv.h
--- a/tools/xenstat/libxenstat/src/xenstat_priv.h Fri Jun 01 11:38:10
2007 +0900
+++ b/tools/xenstat/libxenstat/src/xenstat_priv.h Fri Jun 01 11:40:29
2007 +0900
@@ -87,10 +87,11 @@ struct xenstat_network {
};
struct xenstat_vbd {
- unsigned int dev;
- unsigned long long oo_reqs;
- unsigned long long rd_reqs;
- unsigned long long wr_reqs;
+ unsigned int back_type;
+ unsigned int dev;
+ unsigned long long oo_reqs;
+ unsigned long long rd_reqs;
+ unsigned long long wr_reqs;
};
extern int xenstat_collect_networks(xenstat_node * node);
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|