• E
    tcp: tcp_sendpages() should call tcp_push() once · 35f9c09f
    Eric Dumazet 提交于
    commit 2f533844 (tcp: allow splice() to build full TSO packets) added
    a regression for splice() calls using SPLICE_F_MORE.
    
    We need to call tcp_flush() at the end of the last page processed in
    tcp_sendpages(), or else transmits can be deferred and future sends
    stall.
    
    Add a new internal flag, MSG_SENDPAGE_NOTLAST, acting like MSG_MORE, but
    with different semantic.
    
    For all sendpage() providers, its a transparent change. Only
    sock_sendpage() and tcp_sendpages() can differentiate the two different
    flags provided by pipe_to_sendpage()
    Reported-by: NTom Herbert <therbert@google.com>
    Cc: Nandita Dukkipati <nanditad@google.com>
    Cc: Neal Cardwell <ncardwell@google.com>
    Cc: Tom Herbert <therbert@google.com>
    Cc: Yuchung Cheng <ycheng@google.com>
    Cc: H.K. Jerry Chu <hkchu@google.com>
    Cc: Maciej Żenczykowski <maze@google.com>
    Cc: Mahesh Bandewar <maheshb@google.com>
    Cc: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
    Signed-off-by: NEric Dumazet <eric.dumazet@gmail&gt;com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    35f9c09f
socket.c 81.5 KB