On Thu, Jul 28, Keir Fraser wrote:
> On 28/07/2011 15:07, "Olaf Hering" <olaf@xxxxxxxxx> wrote:
>
> > On Thu, Jul 28, Ian Campbell wrote:
> >
> >>> Are you suggesting that there have to be ways for a domU to query the
> >>> state of its registered watches and shut them all down during very early
> >>> boot?
> >>
> >> Perhaps the xenstore protocol could be enhanced with a mechanism to
> >> clear all existing watches? A kernel could call that at start of day.
> >
> > I poked around in the xenstore sources, there is appearently nothing
> > that can be used to shutdown all. Or would calling XS_RELEASE do the trick?
>
> XS_INTRODUCE
Unfortunately do_introduce() is not preprared for that.
On enter, conn->id contains the domain_id, so it errors out early.
Later it compares domain->conn != conn and does not enter the correct path.
If I remove both checks the kexec appears to work ok.
Is it save to remove both checks?
The only issue I havent figured out:
How to get the domid from within the kernel?
Olaf
diff -r 42edf1481c57 tools/xenstore/xenstored_domain.c
--- a/tools/xenstore/xenstored_domain.c
+++ b/tools/xenstore/xenstored_domain.c
@@ -326,7 +326,7 @@ void do_introduce(struct connection *con
return;
}
- if (conn->id != 0 || !conn->can_write) {
+ if (!conn->can_write) {
send_error(conn, EACCES);
return;
}
@@ -365,7 +365,7 @@ void do_introduce(struct connection *con
talloc_steal(domain->conn, domain);
fire_watches(NULL, "@introduceDomain", false);
- } else if ((domain->mfn == mfn) && (domain->conn != conn)) {
+ } else if (domain->mfn == mfn) {
/* Use XS_INTRODUCE for recreating the xenbus event-channel. */
if (domain->port)
xc_evtchn_unbind(xce_handle, domain->port);
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|