• P
    io_uring: share fixed_file_refs b/w multiple rsrcs · 36f72fe2
    Pavel Begunkov 提交于
    Double fixed files for splice/tee are done in a nasty way, it takes 2
    ref_node refs, and during the second time it blindly overrides
    req->fixed_file_refs hoping that it haven't changed. That works because
    all that is done under iouring_lock in a single go but is error-prone.
    
    Bind everything explicitly to a single ref_node and take only one ref,
    with current ref_node ordering it's guaranteed to keep all files valid
    awhile the request is inflight.
    
    That's mainly a cleanup + preparation for generic resource handling,
    but also saves pcpu_ref get/put for splice/tee with 2 fixed files.
    Signed-off-by: NPavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: NJens Axboe <axboe@kernel.dk>
    36f72fe2
io_uring.c 238.0 KB