a) The disk stats have issues with the way devices but no partitions are detected. For example with HP servers the disks are named like this:
/dev/cciss/c0d0 -> first controller, first disk
/dev/cciss/c0d0p1 -> first controller, first disk, partition 1
The simple logic in diskio.c removes all cciss/c0d0 devices from the list and thus they can not be monitored.
b) On servers with lot of disks and partitions the reading of diskstats takes too many CPU cycles. For example on of my servers has a /proc/diskstats file with more than 300 lines! Some simple changes in the parsing logic greatly reduce the CPU load by skipping most unneeded reads of /proc/diskstats.
Note: I have also increased MAX_DISKDEVICES to 64 for my environment.
Attached patch fixes those issues.