So what else was in the fake qemu-dm-wrapper? Do we need to simulate all that
in xiu too?
That can't be the whole story anyway, because PV domains wouldn't have run
qemu-dm at all. I can imagine that simulated PV VMs have always been broken
though.
Ewan.
On Thu, Aug 05, 2010 at 04:06:37PM +0100, Dave Scott wrote:
> Thanks for this...
>
> What's probably happened is that the old SDK .xva had a fake qemu-dm-wrapper
> which did a bit of xenstore-write'ing. This has been lost (probably a good
> thing) by the move to the new SDK-from-main.iso.
>
> Cheers,
> Dave
>
> > -----Original Message-----
> > From: xen-api-bounces@xxxxxxxxxxxxxxxxxxx [mailto:xen-api-
> > bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of Ewan Mellor
> > Sent: 05 August 2010 10:29
> > To: Xen-API
> > Subject: [Xen-API] [PATCH] Make xiu add a vnc-port entry in XenStore
> >
> > Starting simulated VMs when using xiu is completely broken at the
> > moment.
> > xapi waits for a vnc-port to be written to XenStore (in one of two
> > places, depending upon whether the VM is HVM or PV). xiu doesn't
> > currently write a value for this field, and so the VM start hangs for
> > 20 minutes until the watch times out.
> >
> > The first patch here fixes all the compile-time warnings in xiu.
> >
> > The second patch writes a vnc-port entry in the two necessary places,
> > for every VM that is created.
> >
> > Ewan.
> >
> > diff -r 9e71f6b54bfc ocaml/xiu/xiu.ml
> > --- a/ocaml/xiu/xiu.ml Wed Aug 04 20:42:21 2010 +0100
> > +++ b/ocaml/xiu/xiu.ml Wed Aug 04 23:16:36 2010 +0100
> > @@ -120,10 +120,11 @@
> >
> > type sysctl = Sysctl_getdomaininfolist | Sysctl_physinfo |
> > Sysctl_getcpuinfo | Sysctl_unknown of int
> >
> > -type hypcall = Hypcall_domain_shutdown
> > +type hypcall = Hypcall_domain_shutdown | Hypcall_unknown
> >
> > let hypcall_of_int = function
> > | 1 -> Hypcall_domain_shutdown
> > + | _ -> Hypcall_unknown
> >
> > let domctl_of_int = function
> > | 1 -> Domctl_create | 2 -> Domctl_destroy @@ -199,8 +200,8 @@
> >
> > (** Perform the module (re)loading *)
> > let initialise_dummy_devices () =
> > - Unix.system("/sbin/rmmod dummy");
> > - Unix.system(sprintf "/sbin/modprobe dummy numdummies=%d"
> > max_dummy_vifs)
> > + ignore(Unix.system("/sbin/rmmod dummy"));
> > ignore(Unix.system(sprintf
> > + "/sbin/modprobe dummy numdummies=%d" max_dummy_vifs))
> >
> > (** Free list of dummy<N> devices, used to simulate guest VIF backends
> > *) let vif_free_list = ref (List.map (fun x -> sprintf "dummy%d" x)
> > (Range.to_list (Range.make 0 max_dummy_vifs))) @@ -273,7 +274,6 @@
> > | Xenbus.InitWait -> ()
> > | Xenbus.Closing ->
> > xs.Xs.write w (Xenbus.string_of Xenbus.Closed);
> > - let hotplugpath = sprintf
> > "/xapi/%s/hotplug/%s/%s/hotplug" domid ty id in
> > if ty = "vif" then (
> > let device_path = sprintf
> > "/xapi/%s/hotplug/vif/%s/vif" domid id in
> > let device = xs.Xs.read device_path in
> >
> >
> > ---
> >
> >
> > diff -r 9e71f6b54bfc ocaml/xiu/xiu.ml
> > --- a/ocaml/xiu/xiu.ml Wed Aug 04 20:42:21 2010 +0100
> > +++ b/ocaml/xiu/xiu.ml Thu Aug 05 11:18:01 2010 +0100
> > @@ -349,6 +349,12 @@
> > xs.Xs.unwatch (sprintf
> > "/local/domain/%d/device" dom) "frontend";
> > xs.Xs.unwatch (sprintf "/local/domain/0/device-
> > model/%d" dom) "devicemodel"
> > in
> > + let write_vnc_port dom =
> > + let port = sprintf "%d" (5900 + dom) in
> > + xs.Xs.write (sprintf
> > "/local/domain/%d/serial/0/vnc-port" dom) port; (* PV *)
> > + xs.Xs.write (sprintf
> > "/local/domain/%d/console/vnc-port" dom) port (* HVM *)
> > + in
> > +
> > (* diff old list and new list *)
> > let currents = Hashtbl.fold (fun k v acc -> k :: acc)
> > domains [] in
> >
> > @@ -359,6 +365,7 @@
> >
> > List.iter (fun old -> remove_watch_for_olddomain old)
> > disappeared;
> > List.iter (fun n -> add_watch_for_newdomain n) news;
> > + List.iter write_vnc_port news;
> > olds := currents;
> > ()
> > in
_______________________________________________
xen-api mailing list
xen-api@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/mailman/listinfo/xen-api
|