xen/manage: don't complain about an empty value in control/sysrq node
[ Upstream commit 87dffe86d4
]
When guest receives a sysrq request from the host it acknowledges it by
writing '\0' to control/sysrq xenstore node. This, however, make xenstore
watch fire again but xenbus_scanf() fails to parse empty value with "%c"
format string:
sysrq: SysRq : Emergency Sync
Emergency Sync complete
xen:manage: Error -34 reading sysrq code in control/sysrq
Ignore -ERANGE the same way we already ignore -ENOENT, empty value in
control/sysrq is totally legal.
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Reviewed-by: Wei Liu <wei.liu2@citrix.com>
Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
pull/10/head
parent
dfb29d69e4
commit
4e1494794e
|
@ -283,9 +283,11 @@ static void sysrq_handler(struct xenbus_watch *watch, const char *path,
|
||||||
/*
|
/*
|
||||||
* The Xenstore watch fires directly after registering it and
|
* The Xenstore watch fires directly after registering it and
|
||||||
* after a suspend/resume cycle. So ENOENT is no error but
|
* after a suspend/resume cycle. So ENOENT is no error but
|
||||||
* might happen in those cases.
|
* might happen in those cases. ERANGE is observed when we get
|
||||||
|
* an empty value (''), this happens when we acknowledge the
|
||||||
|
* request by writing '\0' below.
|
||||||
*/
|
*/
|
||||||
if (err != -ENOENT)
|
if (err != -ENOENT && err != -ERANGE)
|
||||||
pr_err("Error %d reading sysrq code in control/sysrq\n",
|
pr_err("Error %d reading sysrq code in control/sysrq\n",
|
||||||
err);
|
err);
|
||||||
xenbus_transaction_end(xbt, 1);
|
xenbus_transaction_end(xbt, 1);
|
||||||
|
|
Loading…
Reference in New Issue