Loading fs/ocfs2/cluster/tcp.c +16 −8 Original line number Diff line number Diff line Loading @@ -854,17 +854,25 @@ static void o2net_sendpage(struct o2net_sock_container *sc, struct o2net_node *nn = o2net_nn_from_num(sc->sc_node->nd_num); ssize_t ret; while (1) { mutex_lock(&sc->sc_send_lock); ret = sc->sc_sock->ops->sendpage(sc->sc_sock, virt_to_page(kmalloced_virt), (long)kmalloced_virt & ~PAGE_MASK, size, MSG_DONTWAIT); mutex_unlock(&sc->sc_send_lock); if (ret != size) { if (ret == size) break; if (ret == (ssize_t)-EAGAIN) { mlog(0, "sendpage of size %zu to " SC_NODEF_FMT " returned EAGAIN\n", size, SC_NODEF_ARGS(sc)); cond_resched(); continue; } mlog(ML_ERROR, "sendpage of size %zu to " SC_NODEF_FMT " failed with %zd\n", size, SC_NODEF_ARGS(sc), ret); o2net_ensure_shutdown(nn, sc, 0); break; } } Loading Loading
fs/ocfs2/cluster/tcp.c +16 −8 Original line number Diff line number Diff line Loading @@ -854,17 +854,25 @@ static void o2net_sendpage(struct o2net_sock_container *sc, struct o2net_node *nn = o2net_nn_from_num(sc->sc_node->nd_num); ssize_t ret; while (1) { mutex_lock(&sc->sc_send_lock); ret = sc->sc_sock->ops->sendpage(sc->sc_sock, virt_to_page(kmalloced_virt), (long)kmalloced_virt & ~PAGE_MASK, size, MSG_DONTWAIT); mutex_unlock(&sc->sc_send_lock); if (ret != size) { if (ret == size) break; if (ret == (ssize_t)-EAGAIN) { mlog(0, "sendpage of size %zu to " SC_NODEF_FMT " returned EAGAIN\n", size, SC_NODEF_ARGS(sc)); cond_resched(); continue; } mlog(ML_ERROR, "sendpage of size %zu to " SC_NODEF_FMT " failed with %zd\n", size, SC_NODEF_ARGS(sc), ret); o2net_ensure_shutdown(nn, sc, 0); break; } } Loading