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);
|
||||
|
||||
if (len < 0) {
|
||||
int saved_errno = errno;
|
||||
syslog(LOG_ERR, "recvfrom failed; pid:%u error:%d %s",
|
||||
addr.nl_pid, errno, strerror(errno));
|
||||
|
||||
if (saved_errno == ENOBUFS) {
|
||||
syslog(LOG_ERR, "receive error: ignored");
|
||||
continue;
|
||||
}
|
||||
|
||||
close(fd);
|
||||
return -1;
|
||||
}
|
||||
|
@ -1763,8 +1770,15 @@ int main(int argc, char *argv[])
|
|||
|
||||
len = netlink_send(fd, incoming_cn_msg);
|
||||
if (len < 0) {
|
||||
int saved_errno = errno;
|
||||
syslog(LOG_ERR, "net_link send failed; error: %d %s", errno,
|
||||
strerror(errno));
|
||||
|
||||
if (saved_errno == ENOMEM || saved_errno == ENOBUFS) {
|
||||
syslog(LOG_ERR, "send error: ignored");
|
||||
continue;
|
||||
}
|
||||
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue