From: Florian Forster Date: Sat, 20 Oct 2012 06:57:02 +0000 (+0200) Subject: Merge remote-tracking branch 'trenkel/collectd-4.10' into collectd-4.10 X-Git-Tag: collectd-5.0.5~1^2~11 X-Git-Url: https://git.octo.it/?a=commitdiff_plain;h=e1cbbf3d7bce76be363f28f83ac87c59156ef2a2;hp=e1da538180881c6dcc1d686e504128327a1f56b9;p=collectd.git Merge remote-tracking branch 'trenkel/collectd-4.10' into collectd-4.10 --- diff --git a/src/disk.c b/src/disk.c index 6187459f..4a78f1bd 100644 --- a/src/disk.c +++ b/src/disk.c @@ -235,6 +235,16 @@ static void disk_submit (const char *plugin_instance, plugin_dispatch_values (&vl); } /* void disk_submit */ +#if KERNEL_LINUX +static counter_t disk_calc_time_incr (counter_t delta_time, counter_t delta_ops) +{ + double avg_time = ((double) delta_time) / ((double) delta_ops); + double avg_time_incr = ((double) interval_g) * avg_time; + + return ((counter_t) (avg_time_incr + .5)); +} +#endif + #if HAVE_IOKIT_IOKITLIB_H static signed long long dict_get_value (CFDictionaryRef dict, const char *key) { @@ -579,13 +589,11 @@ static int disk_read (void) diff_write_time = write_time - ds->write_time; if (diff_read_ops != 0) - ds->avg_read_time += (diff_read_time - + (diff_read_ops / 2)) - / diff_read_ops; + ds->avg_read_time += disk_calc_time_incr ( + diff_read_time, diff_read_ops); if (diff_write_ops != 0) - ds->avg_write_time += (diff_write_time - + (diff_write_ops / 2)) - / diff_write_ops; + ds->avg_write_time += disk_calc_time_incr ( + diff_write_time, diff_write_ops); ds->read_ops = read_ops; ds->read_time = read_time; diff --git a/src/netlink.c b/src/netlink.c index e65aec7a..bac87575 100644 --- a/src/netlink.c +++ b/src/netlink.c @@ -223,7 +223,7 @@ static int link_filter (const struct sockaddr_nl __attribute__((unused)) *sa, msg = NLMSG_DATA (nmh); - msg_len = nmh->nlmsg_len - sizeof (struct ifinfomsg); + msg_len = nmh->nlmsg_len - NLMSG_LENGTH(sizeof (struct ifinfomsg)); if (msg_len < 0) { ERROR ("netlink plugin: link_filter: msg_len = %i < 0;", msg_len); @@ -554,19 +554,15 @@ static int ir_init (void) static int ir_read (void) { - struct ifinfomsg im; struct tcmsg tm; int ifindex; static const int type_id[] = { RTM_GETQDISC, RTM_GETTCLASS, RTM_GETTFILTER }; static const char *type_name[] = { "qdisc", "class", "filter" }; - memset (&im, '\0', sizeof (im)); - im.ifi_type = AF_UNSPEC; - - if (rtnl_dump_request (&rth, RTM_GETLINK, &im, sizeof (im)) < 0) + if (rtnl_wilddump_request (&rth, AF_UNSPEC, RTM_GETLINK) < 0) { - ERROR ("netlink plugin: ir_read: rtnl_dump_request failed."); + ERROR ("netlink plugin: ir_read: rtnl_wilddump_request failed."); return (-1); }