tools: hv: ignore ENOBUFS and ENOMEM in the KVP daemon
Under high memory pressure and very high KVP R/W test pressure, the netlink recvfrom() may transiently return ENOBUFS to the daemon -- we found this during a 2-week stress test. We'd better not terminate the daemon on the failure, because a typical KVP user will re-try the R/W and hopefully it will succeed next time. We can also ignore the errors on sending. Cc: K. Y. Srinivasan <kys@microsoft.com> Signed-off-by: Dexuan Cui <decui@microsoft.com> Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
9e5db05aae
commit
4300f26492
1 changed files with 14 additions and 0 deletions
|
@ -1559,8 +1559,15 @@ int main(int argc, char *argv[])
|
||||||
addr_p, &addr_l);
|
addr_p, &addr_l);
|
||||||
|
|
||||||
if (len < 0) {
|
if (len < 0) {
|
||||||
|
int saved_errno = errno;
|
||||||
syslog(LOG_ERR, "recvfrom failed; pid:%u error:%d %s",
|
syslog(LOG_ERR, "recvfrom failed; pid:%u error:%d %s",
|
||||||
addr.nl_pid, errno, strerror(errno));
|
addr.nl_pid, errno, strerror(errno));
|
||||||
|
|
||||||
|
if (saved_errno == ENOBUFS) {
|
||||||
|
syslog(LOG_ERR, "receive error: ignored");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
close(fd);
|
close(fd);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -1763,8 +1770,15 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
len = netlink_send(fd, incoming_cn_msg);
|
len = netlink_send(fd, incoming_cn_msg);
|
||||||
if (len < 0) {
|
if (len < 0) {
|
||||||
|
int saved_errno = errno;
|
||||||
syslog(LOG_ERR, "net_link send failed; error: %d %s", errno,
|
syslog(LOG_ERR, "net_link send failed; error: %d %s", errno,
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
|
|
||||||
|
if (saved_errno == ENOMEM || saved_errno == ENOBUFS) {
|
||||||
|
syslog(LOG_ERR, "send error: ignored");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue