diff options
author | Vitaly Kuznetsov <vkuznets@redhat.com> | 2018-09-06 07:26:08 -0400 |
---|---|---|
committer | Boris Ostrovsky <boris.ostrovsky@oracle.com> | 2018-09-14 08:51:10 -0400 |
commit | 87dffe86d406bee8782cac2db035acb9a28620a7 (patch) | |
tree | ee0ab909b1280f621dad908ac4a65f2765ca9371 /drivers/xen/manage.c | |
parent | 11da3a7f84f19c26da6f86af878298694ede0804 (diff) |
xen/manage: don't complain about an empty value in control/sysrq node
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>
Diffstat (limited to 'drivers/xen/manage.c')
-rw-r--r-- | drivers/xen/manage.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/xen/manage.c b/drivers/xen/manage.c index c93d8ef8df34..5bb01a62f214 100644 --- a/drivers/xen/manage.c +++ b/drivers/xen/manage.c | |||
@@ -280,9 +280,11 @@ static void sysrq_handler(struct xenbus_watch *watch, const char *path, | |||
280 | /* | 280 | /* |
281 | * The Xenstore watch fires directly after registering it and | 281 | * The Xenstore watch fires directly after registering it and |
282 | * after a suspend/resume cycle. So ENOENT is no error but | 282 | * after a suspend/resume cycle. So ENOENT is no error but |
283 | * might happen in those cases. | 283 | * might happen in those cases. ERANGE is observed when we get |
284 | * an empty value (''), this happens when we acknowledge the | ||
285 | * request by writing '\0' below. | ||
284 | */ | 286 | */ |
285 | if (err != -ENOENT) | 287 | if (err != -ENOENT && err != -ERANGE) |
286 | pr_err("Error %d reading sysrq code in control/sysrq\n", | 288 | pr_err("Error %d reading sysrq code in control/sysrq\n", |
287 | err); | 289 | err); |
288 | xenbus_transaction_end(xbt, 1); | 290 | xenbus_transaction_end(xbt, 1); |