Lines Matching defs:a_job
240 struct aio_job *a_job;
250 a_job = TAILQ_FIRST(&aio->jobs_queue);
251 TAILQ_REMOVE(&aio->jobs_queue, a_job, list);
252 pool_put(&aio_job_pool, a_job);
271 struct aio_job *a_job;
292 while ((a_job = TAILQ_FIRST(&aio->jobs_queue)) == NULL) {
305 aio->curjob = a_job;
306 TAILQ_REMOVE(&aio->jobs_queue, a_job, list);
314 aio_process(a_job);
317 (void)copyout(&a_job->aiocbp, a_job->aiocb_uptr,
321 KASSERT(aio->curjob == a_job);
325 lio = a_job->lio;
333 aio_sendsig(p, &a_job->aiocbp.aio_sigevent);
342 pool_put(&aio_job_pool, a_job);
349 aio_process(struct aio_job *a_job)
352 struct aiocb *aiocbp = &a_job->aiocbp;
357 KASSERT(a_job->aio_op != 0);
359 if ((a_job->aio_op & (AIO_READ | AIO_WRITE)) != 0) {
381 if (a_job->aio_op & AIO_READ) {
385 KASSERT((a_job->aio_op & AIO_WRITE) == 0);
399 KASSERT(a_job->aio_op & AIO_WRITE);
413 a_job->aiocbp.aio_nbytes -= auio.uio_resid;
414 a_job->aiocbp._retval = (error == 0) ?
415 a_job->aiocbp.aio_nbytes : -1;
417 } else if ((a_job->aio_op & (AIO_SYNC | AIO_DSYNC)) != 0) {
434 if (a_job->aio_op & AIO_DSYNC) {
437 } else if (a_job->aio_op & AIO_SYNC) {
445 a_job->aiocbp._retval = (error == 0) ? 0 : -1;
452 a_job->aiocbp._errno = error;
453 a_job->aiocbp._state = JOB_DONE;
484 struct aio_job *a_job;
530 TAILQ_FOREACH(a_job, &aio->jobs_queue, list) {
531 if (a_job->aiocb_uptr != aiocb_uptr)
561 a_job = pool_get(&aio_job_pool, PR_WAITOK | PR_ZERO);
568 memcpy(&a_job->aiocbp, &aiocbp, sizeof(struct aiocb));
569 a_job->aiocb_uptr = aiocb_uptr;
570 a_job->aio_op |= op;
571 a_job->lio = lio;
584 pool_put(&aio_job_pool, a_job);
588 TAILQ_INSERT_TAIL(&aio->jobs_queue, a_job, list);
617 struct aio_job *a_job;
648 TAILQ_FOREACH(a_job, &aio->jobs_queue, list) {
650 if (aiocbp_ptr != a_job->aiocb_uptr)
652 if (fildes != a_job->aiocbp.aio_fildes) {
656 } else if (a_job->aiocbp.aio_fildes != fildes)
659 TAILQ_REMOVE(&aio->jobs_queue, a_job, list);
660 TAILQ_INSERT_TAIL(&tmp_jobs_list, a_job, list);
665 lio = a_job->lio;
667 a_job->lio = NULL;
679 a_job = aio->curjob;
680 if (a_job && ((a_job->aiocbp.aio_fildes == fildes) ||
681 (a_job->aiocb_uptr == aiocbp_ptr)))
689 a_job = TAILQ_FIRST(&tmp_jobs_list);
690 TAILQ_REMOVE(&tmp_jobs_list, a_job, list);
692 a_job->aiocbp._errno = SET_ERROR(ECANCELED);
693 a_job->aiocbp._state = JOB_DONE;
694 if (copyout(&a_job->aiocbp, a_job->aiocb_uptr,
698 aio_sendsig(p, &a_job->aiocbp.aio_sigevent);
699 if (a_job->lio) {
700 lio = a_job->lio;
704 pool_put(&aio_job_pool, a_job);
847 struct aio_job *a_job;
873 a_job = aio->curjob;
874 if (a_job->aiocb_uptr == aiocbp_list[i])
879 TAILQ_FOREACH(a_job, &aio->jobs_queue, list)
880 if (a_job->aiocb_uptr == aiocbp_list[i])
883 if (a_job == NULL) {
1133 struct aio_job *a_job;
1152 a_job = aio->curjob;
1155 a_job->aio_op, a_job->aiocbp._errno,
1156 a_job->aiocbp._state, a_job->aiocb_uptr);
1157 aiocbp = &a_job->aiocbp;
1164 TAILQ_FOREACH(a_job, &aio->jobs_queue, list) {
1166 a_job->aio_op, a_job->aiocbp._errno,
1167 a_job->aiocbp._state, a_job->aiocb_uptr);
1168 aiocbp = &a_job->aiocbp;