Drivers: hv: vmbus: Cleanup vmbus_post_msg()
Posting messages to the host can fail because of transient resource related failures. Correctly deal with these failures and increase the number of attempts to post the message before giving up. In this version of the patch, I have normalized the error code to Linux error code. Signed-off-by: K. Y. Srinivasan <kys@microsoft.com> Cc: <stable@vger.kernel.org> Tested-by: Sitsofe Wheeler <sitsofe@yahoo.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
06c88b0d7a
commit
fdeebcc622
|
@ -427,10 +427,21 @@ int vmbus_post_msg(void *buffer, size_t buflen)
|
|||
* insufficient resources. Retry the operation a couple of
|
||||
* times before giving up.
|
||||
*/
|
||||
while (retries < 3) {
|
||||
ret = hv_post_message(conn_id, 1, buffer, buflen);
|
||||
if (ret != HV_STATUS_INSUFFICIENT_BUFFERS)
|
||||
while (retries < 10) {
|
||||
ret = hv_post_message(conn_id, 1, buffer, buflen);
|
||||
|
||||
switch (ret) {
|
||||
case HV_STATUS_INSUFFICIENT_BUFFERS:
|
||||
ret = -ENOMEM;
|
||||
case -ENOMEM:
|
||||
break;
|
||||
case HV_STATUS_SUCCESS:
|
||||
return ret;
|
||||
default:
|
||||
pr_err("hv_post_msg() failed; error code:%d\n", ret);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
retries++;
|
||||
msleep(100);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user