Lines Matching full:job
97 static void soo_aio_cancel(struct kaiocb *job);
446 * completed by the AIO job so far.
607 soaio_process_job(struct socket *so, sb_which which, struct kaiocb *job) in soaio_process_job() argument
613 struct file *fp = job->fd_file; in soaio_process_job()
620 aio_switch_vmspace(job); in soaio_process_job()
624 td->td_ucred = job->cred; in soaio_process_job()
626 job_total_nbytes = job->uiop->uio_resid + job->aio_done; in soaio_process_job()
627 done = job->aio_done; in soaio_process_job()
628 cnt = job->uiop->uio_resid; in soaio_process_job()
629 job->uiop->uio_offset = 0; in soaio_process_job()
630 job->uiop->uio_td = td; in soaio_process_job()
646 error = soreceive(so, NULL, job->uiop, NULL, NULL, in soaio_process_job()
649 job->msgrcv = 1; in soaio_process_job()
658 error = sousrsend(so, NULL, job->uiop, NULL, flags, in soaio_process_job()
659 job->userproc); in soaio_process_job()
661 job->msgsnd = 1; in soaio_process_job()
664 done += cnt - job->uiop->uio_resid; in soaio_process_job()
665 job->aio_done = done; in soaio_process_job()
688 if (!aio_set_cancel_function(job, soo_aio_cancel)) { in soaio_process_job()
691 aio_complete(job, done, 0); in soaio_process_job()
693 aio_cancel(job); in soaio_process_job()
696 TAILQ_INSERT_HEAD(&sb->sb_aiojobq, job, list); in soaio_process_job()
706 aio_complete(job, -1, error); in soaio_process_job()
708 aio_complete(job, done, 0); in soaio_process_job()
715 struct kaiocb *job; in soaio_process_sb() local
721 job = TAILQ_FIRST(&sb->sb_aiojobq); in soaio_process_sb()
722 TAILQ_REMOVE(&sb->sb_aiojobq, job, list); in soaio_process_sb()
723 if (!aio_clear_cancel_function(job)) in soaio_process_sb()
726 soaio_process_job(so, which, job); in soaio_process_sb()
777 soo_aio_cancel(struct kaiocb *job) in soo_aio_cancel() argument
785 so = job->fd_file->f_data; in soo_aio_cancel()
786 opcode = job->uaiocb.aio_lio_opcode; in soo_aio_cancel()
797 if (!aio_cancel_cleared(job)) in soo_aio_cancel()
798 TAILQ_REMOVE(&sb->sb_aiojobq, job, list); in soo_aio_cancel()
803 done = job->aio_done; in soo_aio_cancel()
805 aio_complete(job, done, 0); in soo_aio_cancel()
807 aio_cancel(job); in soo_aio_cancel()
811 soo_aio_queue(struct file *fp, struct kaiocb *job) in soo_aio_queue() argument
815 return (so->so_proto->pr_aio_queue(so, job)); in soo_aio_queue()
819 soaio_queue_generic(struct socket *so, struct kaiocb *job) in soaio_queue_generic() argument
825 switch (job->uaiocb.aio_lio_opcode & (LIO_WRITE | LIO_READ)) { in soaio_queue_generic()
845 if (!aio_set_cancel_function(job, soo_aio_cancel)) in soaio_queue_generic()
846 panic("new job was cancelled"); in soaio_queue_generic()
847 TAILQ_INSERT_TAIL(&sb->sb_aiojobq, job, list); in soaio_queue_generic()