+ ds->read_bytes += 512 * diff_read_sectors;
+ ds->write_bytes += 512 * diff_write_sectors;
+ ds->read_sectors = read_sectors;
+ ds->write_sectors = write_sectors;
+ }
+
+ /* Calculate the average time an io-op needs to complete */
+ if (is_disk)
+ {
+ counter_t diff_read_ops;
+ counter_t diff_write_ops;
+ counter_t diff_read_time;
+ counter_t diff_write_time;
+
+ if (read_ops < ds->read_ops)
+ diff_read_ops = 1 + read_ops
+ + (UINT_MAX - ds->read_ops);
+ else
+ diff_read_ops = read_ops - ds->read_ops;
+ DEBUG ("disk plugin: disk_name = %s; read_ops = %llu; "
+ "ds->read_ops = %llu; diff_read_ops = %llu;",
+ disk_name,
+ read_ops, ds->read_ops, diff_read_ops);
+
+ if (write_ops < ds->write_ops)
+ diff_write_ops = 1 + write_ops
+ + (UINT_MAX - ds->write_ops);
+ else
+ diff_write_ops = write_ops - ds->write_ops;
+
+ if (read_time < ds->read_time)
+ diff_read_time = 1 + read_time
+ + (UINT_MAX - ds->read_time);
+ else
+ diff_read_time = read_time - ds->read_time;