libceph: fix socket write error handling

Pass errors from writing to the socket up the stack. If we get -EAGAIN,
return 0 from the helper to simplify the callers' checks.

Signed-off-by: Sage Weil <sage@newdream.net>

Sage Weil 42961d23 98bdb0aa

+12 -11
+12 -11
net/ceph/messenger.c
··· 268 268 size_t kvlen, size_t len, int more) 269 269 { 270 270 struct msghdr msg = { .msg_flags = MSG_DONTWAIT | MSG_NOSIGNAL }; 271 + int r; 271 272 272 273 if (more) 273 274 msg.msg_flags |= MSG_MORE; 274 275 else 275 276 msg.msg_flags |= MSG_EOR; /* superfluous, but what the hell */ 276 277 277 - return kernel_sendmsg(sock, &msg, iov, kvlen, len); 278 + r = kernel_sendmsg(sock, &msg, iov, kvlen, len); 279 + if (r == -EAGAIN) 280 + r = 0; 281 + return r; 278 282 } 279 283 280 284 ··· 855 851 (msg->pages || msg->pagelist || msg->bio || in_trail)) 856 852 kunmap(page); 857 853 854 + if (ret == -EAGAIN) 855 + ret = 0; 858 856 if (ret <= 0) 859 857 goto out; 860 858 ··· 1747 1741 if (con->out_skip) { 1748 1742 ret = write_partial_skip(con); 1749 1743 if (ret <= 0) 1750 - goto done; 1751 - if (ret < 0) { 1752 - dout("try_write write_partial_skip err %d\n", ret); 1753 - goto done; 1754 - } 1744 + goto out; 1755 1745 } 1756 1746 if (con->out_kvec_left) { 1757 1747 ret = write_partial_kvec(con); 1758 1748 if (ret <= 0) 1759 - goto done; 1749 + goto out; 1760 1750 } 1761 1751 1762 1752 /* msg pages? */ ··· 1767 1765 if (ret == 1) 1768 1766 goto more_kvec; /* we need to send the footer, too! */ 1769 1767 if (ret == 0) 1770 - goto done; 1768 + goto out; 1771 1769 if (ret < 0) { 1772 1770 dout("try_write write_partial_msg_pages err %d\n", 1773 1771 ret); 1774 - goto done; 1772 + goto out; 1775 1773 } 1776 1774 } 1777 1775 ··· 1795 1793 /* Nothing to do! */ 1796 1794 clear_bit(WRITE_PENDING, &con->state); 1797 1795 dout("try_write nothing else to write.\n"); 1798 - done: 1799 1796 ret = 0; 1800 1797 out: 1801 - dout("try_write done on %p\n", con); 1798 + dout("try_write done on %p ret %d\n", con, ret); 1802 1799 return ret; 1803 1800 } 1804 1801