• Home
  • Raw
  • Download

Lines Matching refs:pipe

86 	struct rpc_pipe *pipe =  in rpc_timeout_upcall_queue()  local
91 spin_lock(&pipe->lock); in rpc_timeout_upcall_queue()
92 destroy_msg = pipe->ops->destroy_msg; in rpc_timeout_upcall_queue()
93 if (pipe->nreaders == 0) { in rpc_timeout_upcall_queue()
94 list_splice_init(&pipe->pipe, &free_list); in rpc_timeout_upcall_queue()
95 pipe->pipelen = 0; in rpc_timeout_upcall_queue()
97 dentry = dget(pipe->dentry); in rpc_timeout_upcall_queue()
98 spin_unlock(&pipe->lock); in rpc_timeout_upcall_queue()
135 rpc_queue_upcall(struct rpc_pipe *pipe, struct rpc_pipe_msg *msg) in rpc_queue_upcall() argument
140 spin_lock(&pipe->lock); in rpc_queue_upcall()
141 if (pipe->nreaders) { in rpc_queue_upcall()
142 list_add_tail(&msg->list, &pipe->pipe); in rpc_queue_upcall()
143 pipe->pipelen += msg->len; in rpc_queue_upcall()
145 } else if (pipe->flags & RPC_PIPE_WAIT_FOR_OPEN) { in rpc_queue_upcall()
146 if (list_empty(&pipe->pipe)) in rpc_queue_upcall()
148 &pipe->queue_timeout, in rpc_queue_upcall()
150 list_add_tail(&msg->list, &pipe->pipe); in rpc_queue_upcall()
151 pipe->pipelen += msg->len; in rpc_queue_upcall()
154 dentry = dget(pipe->dentry); in rpc_queue_upcall()
155 spin_unlock(&pipe->lock); in rpc_queue_upcall()
173 struct rpc_pipe *pipe = RPC_I(inode)->pipe; in rpc_close_pipes() local
178 spin_lock(&pipe->lock); in rpc_close_pipes()
179 need_release = pipe->nreaders != 0 || pipe->nwriters != 0; in rpc_close_pipes()
180 pipe->nreaders = 0; in rpc_close_pipes()
181 list_splice_init(&pipe->in_upcall, &free_list); in rpc_close_pipes()
182 list_splice_init(&pipe->pipe, &free_list); in rpc_close_pipes()
183 pipe->pipelen = 0; in rpc_close_pipes()
184 pipe->dentry = NULL; in rpc_close_pipes()
185 spin_unlock(&pipe->lock); in rpc_close_pipes()
186 rpc_purge_list(&RPC_I(inode)->waitq, &free_list, pipe->ops->destroy_msg, -EPIPE); in rpc_close_pipes()
187 pipe->nwriters = 0; in rpc_close_pipes()
188 if (need_release && pipe->ops->release_pipe) in rpc_close_pipes()
189 pipe->ops->release_pipe(inode); in rpc_close_pipes()
190 cancel_delayed_work_sync(&pipe->queue_timeout); in rpc_close_pipes()
192 RPC_I(inode)->pipe = NULL; in rpc_close_pipes()
215 struct rpc_pipe *pipe; in rpc_pipe_open() local
220 pipe = RPC_I(inode)->pipe; in rpc_pipe_open()
221 if (pipe == NULL) in rpc_pipe_open()
223 first_open = pipe->nreaders == 0 && pipe->nwriters == 0; in rpc_pipe_open()
224 if (first_open && pipe->ops->open_pipe) { in rpc_pipe_open()
225 res = pipe->ops->open_pipe(inode); in rpc_pipe_open()
230 pipe->nreaders++; in rpc_pipe_open()
232 pipe->nwriters++; in rpc_pipe_open()
242 struct rpc_pipe *pipe; in rpc_pipe_release() local
247 pipe = RPC_I(inode)->pipe; in rpc_pipe_release()
248 if (pipe == NULL) in rpc_pipe_release()
252 spin_lock(&pipe->lock); in rpc_pipe_release()
255 spin_unlock(&pipe->lock); in rpc_pipe_release()
256 pipe->ops->destroy_msg(msg); in rpc_pipe_release()
259 pipe->nwriters --; in rpc_pipe_release()
261 pipe->nreaders --; in rpc_pipe_release()
262 if (pipe->nreaders == 0) { in rpc_pipe_release()
264 spin_lock(&pipe->lock); in rpc_pipe_release()
265 list_splice_init(&pipe->pipe, &free_list); in rpc_pipe_release()
266 pipe->pipelen = 0; in rpc_pipe_release()
267 spin_unlock(&pipe->lock); in rpc_pipe_release()
269 pipe->ops->destroy_msg, -EAGAIN); in rpc_pipe_release()
272 last_close = pipe->nwriters == 0 && pipe->nreaders == 0; in rpc_pipe_release()
273 if (last_close && pipe->ops->release_pipe) in rpc_pipe_release()
274 pipe->ops->release_pipe(inode); in rpc_pipe_release()
284 struct rpc_pipe *pipe; in rpc_pipe_read() local
289 pipe = RPC_I(inode)->pipe; in rpc_pipe_read()
290 if (pipe == NULL) { in rpc_pipe_read()
296 spin_lock(&pipe->lock); in rpc_pipe_read()
297 if (!list_empty(&pipe->pipe)) { in rpc_pipe_read()
298 msg = list_entry(pipe->pipe.next, in rpc_pipe_read()
301 list_move(&msg->list, &pipe->in_upcall); in rpc_pipe_read()
302 pipe->pipelen -= msg->len; in rpc_pipe_read()
306 spin_unlock(&pipe->lock); in rpc_pipe_read()
311 res = pipe->ops->upcall(filp, msg, buf, len); in rpc_pipe_read()
314 spin_lock(&pipe->lock); in rpc_pipe_read()
316 spin_unlock(&pipe->lock); in rpc_pipe_read()
317 pipe->ops->destroy_msg(msg); in rpc_pipe_read()
332 if (RPC_I(inode)->pipe != NULL) in rpc_pipe_write()
333 res = RPC_I(inode)->pipe->ops->downcall(filp, buf, len); in rpc_pipe_write()
348 if (rpci->pipe == NULL) in rpc_pipe_poll()
350 else if (filp->private_data || !list_empty(&rpci->pipe->pipe)) in rpc_pipe_poll()
360 struct rpc_pipe *pipe; in rpc_pipe_ioctl() local
366 pipe = RPC_I(inode)->pipe; in rpc_pipe_ioctl()
367 if (pipe == NULL) { in rpc_pipe_ioctl()
371 spin_lock(&pipe->lock); in rpc_pipe_ioctl()
372 len = pipe->pipelen; in rpc_pipe_ioctl()
378 spin_unlock(&pipe->lock); in rpc_pipe_ioctl()
543 init_pipe(struct rpc_pipe *pipe) in init_pipe() argument
545 pipe->nreaders = 0; in init_pipe()
546 pipe->nwriters = 0; in init_pipe()
547 INIT_LIST_HEAD(&pipe->in_upcall); in init_pipe()
548 INIT_LIST_HEAD(&pipe->in_downcall); in init_pipe()
549 INIT_LIST_HEAD(&pipe->pipe); in init_pipe()
550 pipe->pipelen = 0; in init_pipe()
551 INIT_DELAYED_WORK(&pipe->queue_timeout, in init_pipe()
553 pipe->ops = NULL; in init_pipe()
554 spin_lock_init(&pipe->lock); in init_pipe()
555 pipe->dentry = NULL; in init_pipe()
558 void rpc_destroy_pipe_data(struct rpc_pipe *pipe) in rpc_destroy_pipe_data() argument
560 kfree(pipe); in rpc_destroy_pipe_data()
566 struct rpc_pipe *pipe; in rpc_mkpipe_data() local
568 pipe = kzalloc(sizeof(struct rpc_pipe), GFP_KERNEL); in rpc_mkpipe_data()
569 if (!pipe) in rpc_mkpipe_data()
571 init_pipe(pipe); in rpc_mkpipe_data()
572 pipe->ops = ops; in rpc_mkpipe_data()
573 pipe->flags = flags; in rpc_mkpipe_data()
574 return pipe; in rpc_mkpipe_data()
582 struct rpc_pipe *pipe) in __rpc_mkpipe_dentry() argument
592 rpci->pipe = pipe; in __rpc_mkpipe_dentry()
804 void *private, struct rpc_pipe *pipe) in rpc_mkpipe_dentry() argument
811 if (pipe->ops->upcall == NULL) in rpc_mkpipe_dentry()
813 if (pipe->ops->downcall == NULL) in rpc_mkpipe_dentry()
821 private, pipe); in rpc_mkpipe_dentry()
1414 struct rpc_pipe *pipe = sn->gssd_dummy; in gssd_running() local
1416 return pipe->nreaders || pipe->nwriters; in gssd_running()
1482 rpci->pipe = NULL; in init_once()