Lines Matching refs:ipipe
1001 static int splice_pipe_to_pipe(struct pipe_inode_info *ipipe,
1011 struct pipe_inode_info *ipipe;
1020 ipipe = get_pipe_info(in, true);
1023 if (ipipe && opipe) {
1028 if (ipipe == opipe)
1034 return splice_pipe_to_pipe(ipipe, opipe, len, flags);
1037 if (ipipe) {
1059 ret = do_splice_from(ipipe, out, &offset, len, flags);
1113 struct pipe_inode_info *ipipe;
1118 ipipe = get_pipe_info(in, true);
1121 if (ipipe && off_in)
1428 * Splice contents of ipipe to opipe.
1430 static int splice_pipe_to_pipe(struct pipe_inode_info *ipipe,
1443 ret = ipipe_prep(ipipe, flags);
1456 pipe_double_lock(ipipe, opipe);
1458 i_tail = ipipe->tail;
1459 i_mask = ipipe->ring_size - 1;
1473 i_head = ipipe->head;
1476 if (pipe_empty(i_head, i_tail) && !ipipe->writers)
1499 pipe_unlock(ipipe);
1504 ibuf = &ipipe->bufs[i_tail & i_mask];
1509 * Simply move the whole buffer from ipipe to opipe
1514 ipipe->tail = i_tail;
1524 if (!pipe_buf_get(ipipe, ibuf)) {
1549 pipe_unlock(ipipe);
1559 wakeup_pipe_writers(ipipe);
1565 * Link contents of ipipe to opipe.
1567 static int link_pipe(struct pipe_inode_info *ipipe,
1582 pipe_double_lock(ipipe, opipe);
1584 i_tail = ipipe->tail;
1585 i_mask = ipipe->ring_size - 1;
1597 i_head = ipipe->head;
1608 ibuf = &ipipe->bufs[i_tail & i_mask];
1615 if (!pipe_buf_get(ipipe, ibuf)) {
1640 pipe_unlock(ipipe);
1660 struct pipe_inode_info *ipipe = get_pipe_info(in, true);
1669 * Duplicate the contents of ipipe to opipe without actually
1672 if (ipipe && opipe && ipipe != opipe) {
1677 * Keep going, unless we encounter an error. The ipipe/opipe
1680 ret = ipipe_prep(ipipe, flags);
1684 ret = link_pipe(ipipe, opipe, len, flags);