diff -up dstat-0.7.2/dstat.disk-path dstat-0.7.2/dstat --- dstat-0.7.2/dstat.disk-path 2011-12-12 17:25:23.000000000 +0100 +++ dstat-0.7.2/dstat 2011-12-12 16:15:33.000000000 +0100 @@ -130,7 +130,7 @@ class Options: elif opt in ['-d']: self.plugins.append('disk') elif opt in ['-D']: - self.disklist = arg.split(',') + self.disklist = self.get_disklist(arg) elif opt in ['--filesystem']: self.plugins.append('fs') elif opt in ['-g']: @@ -240,6 +240,32 @@ class Options: print 'dstat: delay must be an integer, greater than zero' sys.exit(1) + def get_disklist(self, disks): + disklist = disks.split(',') + ret = [] + for disk in disklist: + # e.g. /dev/sda1 + if disk[:5] == '/dev/': + # file or symlink + if os.path.exists(disk): + # e.g. /dev/disk/by-uuid/15e40cc5-85de-40ea-b8fb-cb3a2eaf872 + if os.path.islink(disk): + target = os.readlink(disk) + # convert relative pathname to absolute + if target[0] != '/': + target = os.path.join(os.path.dirname(disk), target) + target = os.path.normpath(target) + print 'dstat: symlink %s -> %s' % (disk, target) + disk = target + # trim leading /dev/ + disk = disk[5:] + ret.append(disk) + else: + print 'dstat: %s does not exist' % disk + else: + ret.append(disk) + return ret + def version(self): print 'Dstat %s' % VERSION print 'Written by Dag Wieers '