lkml.org 
[lkml]   [2011]   [Aug]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [Xen-devel] [PATCH 1/3] xen/pv-on-hvm kexec: add xs_introduce to shutdown watches from old kernel
    From
    Date
    > Index: linux-3.0/drivers/xen/xenbus/xenbus_xs.c
    > ===================================================================
    > --- linux-3.0.orig/drivers/xen/xenbus/xenbus_xs.c
    > +++ linux-3.0/drivers/xen/xenbus/xenbus_xs.c
    > @@ -620,6 +620,20 @@ static struct xenbus_watch *find_watch(c
    > return NULL;
    > }
    >
    > +static int xs_introduce(const char *domid, const char *mfn, const char *port)
    > +{
    > + struct kvec iov[3];
    > +
    > + iov[0].iov_base = (char *)domid;
    > + iov[0].iov_len = strlen(domid) + 1;
    > + iov[1].iov_base = (char *)mfn;
    > + iov[1].iov_len = strlen(mfn) + 1;
    > + iov[2].iov_base = (char *)port;
    > + iov[2].iov_len = strlen(port) + 1;
    > +
    > + return xs_error(xs_talkv(XBT_NIL, XS_INTRODUCE, iov,
    > + ARRAY_SIZE(iov), NULL));

    What should we do if this fails?

    > +}
    > /* Register callback to watch this node. */
    > int register_xenbus_watch(struct xenbus_watch *watch)
    > {
    > @@ -867,10 +881,11 @@ static int xenbus_thread(void *unused)
    > return 0;
    > }
    >
    > -int xs_init(void)
    > +int xs_init(unsigned long xen_store_mfn)
    > {
    > int err;
    > struct task_struct *task;
    > + char domid[12], mfn[24], port[24];
    >
    > INIT_LIST_HEAD(&xs_state.reply_list);
    > spin_lock_init(&xs_state.reply_lock);
    > @@ -897,5 +912,15 @@ int xs_init(void)
    > if (IS_ERR(task))
    > return PTR_ERR(task);
    >
    > + snprintf(domid, sizeof(domid), "%u", DOMID_SELF);
    > + snprintf(mfn, sizeof(mfn), "%lu", xen_store_mfn);
    > + snprintf(port, sizeof(port), "%d", xen_store_evtchn);

    These can be within the if, or better within the xs_introduce function
    itself.

    > + if (xen_hvm_domain()) {
    > + /* shutdown watches for kexec boot */
    > + err = xs_introduce(domid, mfn, port);
    > + if (err)
    > + printk(KERN_WARNING "xs_introduce failed: %d\n", err);
    > + }
    > +
    > return 0;
    > }
    >
    >
    > _______________________________________________
    > Xen-devel mailing list
    > Xen-devel@lists.xensource.com
    > http://lists.xensource.com/xen-devel




    \
     
     \ /
      Last update: 2011-08-09 11:17    [W:0.026 / U:151.308 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site