• Home
  • Raw
  • Download

Lines Matching refs:pipe

84 	struct rpc_pipe *pipe =  in rpc_timeout_upcall_queue()  local
89 spin_lock(&pipe->lock); in rpc_timeout_upcall_queue()
90 destroy_msg = pipe->ops->destroy_msg; in rpc_timeout_upcall_queue()
91 if (pipe->nreaders == 0) { in rpc_timeout_upcall_queue()
92 list_splice_init(&pipe->pipe, &free_list); in rpc_timeout_upcall_queue()
93 pipe->pipelen = 0; in rpc_timeout_upcall_queue()
95 dentry = dget(pipe->dentry); in rpc_timeout_upcall_queue()
96 spin_unlock(&pipe->lock); in rpc_timeout_upcall_queue()
133 rpc_queue_upcall(struct rpc_pipe *pipe, struct rpc_pipe_msg *msg) in rpc_queue_upcall() argument
138 spin_lock(&pipe->lock); in rpc_queue_upcall()
139 if (pipe->nreaders) { in rpc_queue_upcall()
140 list_add_tail(&msg->list, &pipe->pipe); in rpc_queue_upcall()
141 pipe->pipelen += msg->len; in rpc_queue_upcall()
143 } else if (pipe->flags & RPC_PIPE_WAIT_FOR_OPEN) { in rpc_queue_upcall()
144 if (list_empty(&pipe->pipe)) in rpc_queue_upcall()
146 &pipe->queue_timeout, in rpc_queue_upcall()
148 list_add_tail(&msg->list, &pipe->pipe); in rpc_queue_upcall()
149 pipe->pipelen += msg->len; in rpc_queue_upcall()
152 dentry = dget(pipe->dentry); in rpc_queue_upcall()
153 spin_unlock(&pipe->lock); in rpc_queue_upcall()
171 struct rpc_pipe *pipe = RPC_I(inode)->pipe; in rpc_close_pipes() local
176 spin_lock(&pipe->lock); in rpc_close_pipes()
177 need_release = pipe->nreaders != 0 || pipe->nwriters != 0; in rpc_close_pipes()
178 pipe->nreaders = 0; in rpc_close_pipes()
179 list_splice_init(&pipe->in_upcall, &free_list); in rpc_close_pipes()
180 list_splice_init(&pipe->pipe, &free_list); in rpc_close_pipes()
181 pipe->pipelen = 0; in rpc_close_pipes()
182 pipe->dentry = NULL; in rpc_close_pipes()
183 spin_unlock(&pipe->lock); in rpc_close_pipes()
184 rpc_purge_list(&RPC_I(inode)->waitq, &free_list, pipe->ops->destroy_msg, -EPIPE); in rpc_close_pipes()
185 pipe->nwriters = 0; in rpc_close_pipes()
186 if (need_release && pipe->ops->release_pipe) in rpc_close_pipes()
187 pipe->ops->release_pipe(inode); in rpc_close_pipes()
188 cancel_delayed_work_sync(&pipe->queue_timeout); in rpc_close_pipes()
190 RPC_I(inode)->pipe = NULL; in rpc_close_pipes()
220 struct rpc_pipe *pipe; in rpc_pipe_open() local
225 pipe = RPC_I(inode)->pipe; in rpc_pipe_open()
226 if (pipe == NULL) in rpc_pipe_open()
228 first_open = pipe->nreaders == 0 && pipe->nwriters == 0; in rpc_pipe_open()
229 if (first_open && pipe->ops->open_pipe) { in rpc_pipe_open()
230 res = pipe->ops->open_pipe(inode); in rpc_pipe_open()
235 pipe->nreaders++; in rpc_pipe_open()
237 pipe->nwriters++; in rpc_pipe_open()
247 struct rpc_pipe *pipe; in rpc_pipe_release() local
252 pipe = RPC_I(inode)->pipe; in rpc_pipe_release()
253 if (pipe == NULL) in rpc_pipe_release()
257 spin_lock(&pipe->lock); in rpc_pipe_release()
260 spin_unlock(&pipe->lock); in rpc_pipe_release()
261 pipe->ops->destroy_msg(msg); in rpc_pipe_release()
264 pipe->nwriters --; in rpc_pipe_release()
266 pipe->nreaders --; in rpc_pipe_release()
267 if (pipe->nreaders == 0) { in rpc_pipe_release()
269 spin_lock(&pipe->lock); in rpc_pipe_release()
270 list_splice_init(&pipe->pipe, &free_list); in rpc_pipe_release()
271 pipe->pipelen = 0; in rpc_pipe_release()
272 spin_unlock(&pipe->lock); in rpc_pipe_release()
274 pipe->ops->destroy_msg, -EAGAIN); in rpc_pipe_release()
277 last_close = pipe->nwriters == 0 && pipe->nreaders == 0; in rpc_pipe_release()
278 if (last_close && pipe->ops->release_pipe) in rpc_pipe_release()
279 pipe->ops->release_pipe(inode); in rpc_pipe_release()
289 struct rpc_pipe *pipe; in rpc_pipe_read() local
294 pipe = RPC_I(inode)->pipe; in rpc_pipe_read()
295 if (pipe == NULL) { in rpc_pipe_read()
301 spin_lock(&pipe->lock); in rpc_pipe_read()
302 if (!list_empty(&pipe->pipe)) { in rpc_pipe_read()
303 msg = list_entry(pipe->pipe.next, in rpc_pipe_read()
306 list_move(&msg->list, &pipe->in_upcall); in rpc_pipe_read()
307 pipe->pipelen -= msg->len; in rpc_pipe_read()
311 spin_unlock(&pipe->lock); in rpc_pipe_read()
316 res = pipe->ops->upcall(filp, msg, buf, len); in rpc_pipe_read()
319 spin_lock(&pipe->lock); in rpc_pipe_read()
321 spin_unlock(&pipe->lock); in rpc_pipe_read()
322 pipe->ops->destroy_msg(msg); in rpc_pipe_read()
337 if (RPC_I(inode)->pipe != NULL) in rpc_pipe_write()
338 res = RPC_I(inode)->pipe->ops->downcall(filp, buf, len); in rpc_pipe_write()
353 if (rpci->pipe == NULL) in rpc_pipe_poll()
355 else if (filp->private_data || !list_empty(&rpci->pipe->pipe)) in rpc_pipe_poll()
365 struct rpc_pipe *pipe; in rpc_pipe_ioctl() local
371 pipe = RPC_I(inode)->pipe; in rpc_pipe_ioctl()
372 if (pipe == NULL) { in rpc_pipe_ioctl()
376 spin_lock(&pipe->lock); in rpc_pipe_ioctl()
377 len = pipe->pipelen; in rpc_pipe_ioctl()
383 spin_unlock(&pipe->lock); in rpc_pipe_ioctl()
547 init_pipe(struct rpc_pipe *pipe) in init_pipe() argument
549 pipe->nreaders = 0; in init_pipe()
550 pipe->nwriters = 0; in init_pipe()
551 INIT_LIST_HEAD(&pipe->in_upcall); in init_pipe()
552 INIT_LIST_HEAD(&pipe->in_downcall); in init_pipe()
553 INIT_LIST_HEAD(&pipe->pipe); in init_pipe()
554 pipe->pipelen = 0; in init_pipe()
555 INIT_DELAYED_WORK(&pipe->queue_timeout, in init_pipe()
557 pipe->ops = NULL; in init_pipe()
558 spin_lock_init(&pipe->lock); in init_pipe()
559 pipe->dentry = NULL; in init_pipe()
562 void rpc_destroy_pipe_data(struct rpc_pipe *pipe) in rpc_destroy_pipe_data() argument
564 kfree(pipe); in rpc_destroy_pipe_data()
570 struct rpc_pipe *pipe; in rpc_mkpipe_data() local
572 pipe = kzalloc(sizeof(struct rpc_pipe), GFP_KERNEL); in rpc_mkpipe_data()
573 if (!pipe) in rpc_mkpipe_data()
575 init_pipe(pipe); in rpc_mkpipe_data()
576 pipe->ops = ops; in rpc_mkpipe_data()
577 pipe->flags = flags; in rpc_mkpipe_data()
578 return pipe; in rpc_mkpipe_data()
586 struct rpc_pipe *pipe) in __rpc_mkpipe_dentry() argument
596 rpci->pipe = pipe; in __rpc_mkpipe_dentry()
819 void *private, struct rpc_pipe *pipe) in rpc_mkpipe_dentry() argument
826 if (pipe->ops->upcall == NULL) in rpc_mkpipe_dentry()
828 if (pipe->ops->downcall == NULL) in rpc_mkpipe_dentry()
836 private, pipe); in rpc_mkpipe_dentry()
1441 struct rpc_pipe *pipe = sn->gssd_dummy; in gssd_running() local
1443 return pipe->nreaders || pipe->nwriters; in gssd_running()
1492 rpci->pipe = NULL; in init_once()