• M
    splice: fix kmaps in default_file_splice_write() · b2858d7d
    Miklos Szeredi 提交于
    Unfortunately multiple kmap() within a single thread are deadlockable,
    so writing out multiple buffers with writev() isn't possible.
    
    Change the implementation so that it does a separate write() for each
    buffer.  This actually simplifies the code a lot since the
    splice_from_pipe() helper can be used.
    
    This limitation is caused by HIGHMEM pages, and so only affects a
    subset of architectures and configurations.  In the future it may be
    worth to implement default_file_splice_write() in a more efficient way
    on configs that allow it.
    Signed-off-by: NMiklos Szeredi <mszeredi@suse.cz>
    Signed-off-by: NJens Axboe <jens.axboe@oracle.com>
    b2858d7d
splice.c 46.1 KB