• David Howells's avatar
    splice, net: Add a splice_eof op to file-ops and socket-ops · 2bfc6685
    David Howells authored
    Add an optional method, ->splice_eof(), to allow splice to indicate the
    premature termination of a splice to struct file_operations and struct
    proto_ops.
    
    This is called if sendfile() or splice() encounters all of the following
    conditions inside splice_direct_to_actor():
    
     (1) the user did not set SPLICE_F_MORE (splice only), and
    
     (2) an EOF condition occurred (->splice_read() returned 0), and
    
     (3) we haven't read enough to fulfill the request (ie. len > 0 still), and
    
     (4) we have already spliced at least one byte.
    
    A further patch will modify the behaviour of SPLICE_F_MORE to always be
    passed to the actor if either the user set it or we haven't yet read
    sufficient data to fulfill the request.
    Suggested-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    Link: https://lore.kernel.org/r/CAHk-=wh=V579PDYvkpnTobCLGczbgxpMgGmmhqiTyE34Cpi5Gg@mail.gmail.com/Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    Reviewed-by: default avatarJakub Kicinski <kuba@kernel.org>
    cc: Jens Axboe <axboe@kernel.dk>
    cc: Christoph Hellwig <hch@lst.de>
    cc: Al Viro <viro@zeniv.linux.org.uk>
    cc: Matthew Wilcox <willy@infradead.org>
    cc: Jan Kara <jack@suse.cz>
    cc: Jeff Layton <jlayton@kernel.org>
    cc: David Hildenbrand <david@redhat.com>
    cc: Christian Brauner <brauner@kernel.org>
    cc: Chuck Lever <chuck.lever@oracle.com>
    cc: Boris Pismenny <borisp@nvidia.com>
    cc: John Fastabend <john.fastabend@gmail.com>
    cc: linux-mm@kvack.org
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    2bfc6685
socket.c 88.8 KB