Messages in this thread Patch in this message |  | | Date | Fri, 11 May 2001 10:58:30 +0200 | Subject | [PATCH] 2.4.4 linearize UDP RPC requests using GFP_KERNEL... | From | Trond Myklebust <> |
| |
Hi,
The zero-copy TCP patch that was integrated in 2.4.4 has allowed us to move the task of reassembling of the fragments into one buffer until we're out of the ->data_ready() bottom half context. In 2.4.4 therefore, the nfsd thread can end up calling the function skb_linearize(), in order to allocate a new buffer and copy over the fragments.
IMHO allocating the buffer using GFP_ATOMIC is a mistake. As I said we're in a thread context, so sleeping in GFP_KERNEL is safe. In addition, the cost of dropping the request if we can't allocate the buffer is heavy in that the client has to wait for a timeout, and then retry.
I'd therefore like to propose the following change.
Cheers, Trond
--- linux-2.4.4/net/sunrpc/svcsock.c.orig Fri Apr 27 23:15:01 2001 +++ linux-2.4.4/net/sunrpc/svcsock.c Fri May 11 10:08:36 2001 @@ -383,7 +383,7 @@ /* Sorry. */ if (skb_is_nonlinear(skb)) { - if (skb_linearize(skb, GFP_ATOMIC) != 0) { + if (skb_linearize(skb, GFP_KERNEL) != 0) { kfree_skb(skb); svc_sock_received(svsk, 0); return 0; - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |