splice_from_pipe_feed — feed available data from a pipe to a file


int splice_from_pipe_feed (struct pipe_inode_info * pipe,
 struct splice_desc * sd,
 splice_actor * actor);


struct pipe_inode_info * pipe

pipe to splice from

struct splice_desc * sd

information to actor

splice_actor * actor

handler that splices the data


This function loops over the pipe and calls actor to do the actual moving of a single struct pipe_buffer to the desired destination. It returns when there's no more buffers left in the pipe or if the requested number of bytes (sd->total_len) have been copied. It returns a positive number (one) if the pipe needs to be filled with more data, zero if the required number of bytes have been copied and -errno on error.

This, together with splice_from_pipe_{begin,end,next}, may be used to implement the functionality of __splice_from_pipe when locking is required around copying the pipe buffers to the destination.