Indeed!
Any chance of someone re-working it?
;-)
Gareth.
----- Original Message -----
step 3.: "Daniel P. Berrange" <berrange(a)redhat.com>
To: "Gareth Bult" <gareth(a)encryptec.net>
Cc: libvir-list(a)redhat.com
Sent: 27 January 2008 20:21:06 o'clock (GMT) Europe/London
Subject: Re: [Libvir] Re; virDomainBlockStats
On Thu, Jan 17, 2008 at 04:44:31PM +0000, Gareth Bult wrote:
Hi,
I've a number of servers running XEN and am trying to write some code to monitor them
through libvirt.
(Xeon/Dual Core/Ubuntu Gutsy/Xen 3.1)
All was going well until I got to virDomainBlockStats and it simply refused to accept my
coding ..
My solution (the code now works) is to change the following;
src/stats_linux.c:
#ifndef XENVBD_MAJOR
#define XENVBD_MAJOR 3 // <--- I changed this!
/*#define XENVBD_MAJOR 202*/
#endif
device = XENVBD_MAJOR * 256 + 1 + minor /* * 16 */; <-- this too!
It now seems to give me some meaningful numbers without feeding my any error messages.
Can anyone tell me "why" I needed to do this?
I'm using "xvda" as the device path .. tried every other device name
I could think of with out any good results ...
Actually looking at the xenstore-ls output that you sent me (offlist),
you are not using xvda - you're using hda1
9 = ""
769 = ""
domain = "mgm"
frontend = "/local/domain/9/device/vbd/769"
uuid = "d6d17ae3-c08c-8a5b-fbc6-3258ea5e06bf"
dev = "hda1"
state = "4"
params = "/cluster/images/domains/mgm/disk.img"
mode = "w"
online = "1"
frontend-id = "9"
type = "file"
node = "/dev/loop13"
physical-device = "7:d"
hotplug-status = "connected"
feature-barrier = "1"
sectors = "4194304"
info = "0"
sector-size = "512"
That is a minor detail though. The file: vs tap:aio: is actually a
red herring. Having examined the code for calculating device numbers
I see that it is flawed in multiple ways
- It doesn't add in the partition number to device number. So 'hdc1'
gets calculated as 'hdc' which fails
- It uses completely wrong formula for IDE disks. It is not simply
HD_MAJOR * 256 + minor * 16. There are in fact 10 IDE major numbers
each holding 2 disks, with 63 partitions.
- It doesn't handle SCSI disks at all.
- It doesn't strip the leading /dev/ if given a fully qualified dev
Basically only xvda -> xvdp with no partitions, and hda with no partitions
was working. This is why it failed for you with 'hda1' and most other
example disks.
Dan.
--
|=- Red Hat, Engineering, Emerging Technologies, Boston. +1 978 392 2496 -=|
|=- Perl modules:
http://search.cpan.org/~danberr/ -=|
|=- Projects:
http://freshmeat.net/~danielpb/ -=|
|=- GnuPG: 7D3B9505 F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 -=|