[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] libxl: create control/sysrq xenstore node
Wei Liu <wei.liu2@xxxxxxxxxx> writes: > On Tue, Sep 04, 2018 at 01:39:29PM +0200, Vitaly Kuznetsov wrote: >> 'xl sysrq' command doesn't work with modern Linux guests with the following >> message in guest's log: >> >> xen:manage: sysrq_handler: Error -13 writing sysrq in control/sysrq >> >> xenstore trace confirms: >> >> IN 0x24bd9a0 20180904 04:36:32 WRITE (control/sysrq ) >> OUT 0x24bd9a0 20180904 04:36:32 ERROR (EACCES ) >> >> The problem seems to be in the fact that we don't pre-create control/sysrq >> xenstore node and libxl_send_sysrq() doing libxl__xs_printf() creates it as >> read-only. As we want to allow guests to clean 'control/sysrq' after the >> requested action is performed, we need to make this node writable. >> >> Signed-off-by: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> > > Hmm... this node isn't documented. > But libxl already writes it, see libxl_send_sysrq(). > Can you point me to the code in Linux? > Sure, drivers/xen/manage.c: static void sysrq_handler(struct xenbus_watch *watch, const char *path, const char *token) { char sysrq_key = '\0'; struct xenbus_transaction xbt; int err; again: err = xenbus_transaction_start(&xbt); if (err) return; err = xenbus_scanf(xbt, "control", "sysrq", "%c", &sysrq_key); if (err < 0) { /* * The Xenstore watch fires directly after registering it and * after a suspend/resume cycle. So ENOENT is no error but * might happen in those cases. */ if (err != -ENOENT) pr_err("Error %d reading sysrq code in control/sysrq\n", err); xenbus_transaction_end(xbt, 1); return; } if (sysrq_key != '\0') { err = xenbus_printf(xbt, "control", "sysrq", "%c", '\0'); if (err) { pr_err("%s: Error %d writing sysrq in control/sysrq\n", __func__, err); xenbus_transaction_end(xbt, 1); return; } } err = xenbus_transaction_end(xbt, 0); if (err == -EAGAIN) goto again; if (sysrq_key != '\0') handle_sysrq(sysrq_key); } static struct xenbus_watch sysrq_watch = { .node = "control/sysrq", .callback = sysrq_handler }; -- Vitaly _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |