Lines Matching full:job
97 static void soo_aio_cancel(struct kaiocb *job);
438 * completed by the AIO job so far.
599 soaio_process_job(struct socket *so, sb_which which, struct kaiocb *job)
605 struct file *fp = job->fd_file;
612 aio_switch_vmspace(job);
616 td->td_ucred = job->cred;
618 job_total_nbytes = job->uiop->uio_resid + job->aio_done;
619 done = job->aio_done;
620 cnt = job->uiop->uio_resid;
621 job->uiop->uio_offset = 0;
622 job->uiop->uio_td = td;
638 error = soreceive(so, NULL, job->uiop, NULL, NULL,
641 job->msgrcv = 1;
650 error = sousrsend(so, NULL, job->uiop, NULL, flags,
651 job->userproc);
653 job->msgsnd = 1;
656 done += cnt - job->uiop->uio_resid;
657 job->aio_done = done;
680 if (!aio_set_cancel_function(job, soo_aio_cancel)) {
683 aio_complete(job, done, 0);
685 aio_cancel(job);
688 TAILQ_INSERT_HEAD(&sb->sb_aiojobq, job, list);
698 aio_complete(job, -1, error);
700 aio_complete(job, done, 0);
707 struct kaiocb *job;
713 job = TAILQ_FIRST(&sb->sb_aiojobq);
714 TAILQ_REMOVE(&sb->sb_aiojobq, job, list);
715 if (!aio_clear_cancel_function(job))
718 soaio_process_job(so, which, job);
769 soo_aio_cancel(struct kaiocb *job)
777 so = job->fd_file->f_data;
778 opcode = job->uaiocb.aio_lio_opcode;
789 if (!aio_cancel_cleared(job))
790 TAILQ_REMOVE(&sb->sb_aiojobq, job, list);
795 done = job->aio_done;
797 aio_complete(job, done, 0);
799 aio_cancel(job);
803 soo_aio_queue(struct file *fp, struct kaiocb *job)
811 error = so->so_proto->pr_aio_queue(so, job);
816 switch (job->uaiocb.aio_lio_opcode & (LIO_WRITE | LIO_READ)) {
836 if (!aio_set_cancel_function(job, soo_aio_cancel))
837 panic("new job was cancelled");
838 TAILQ_INSERT_TAIL(&sb->sb_aiojobq, job, list);