Changeset View
Changeset View
Standalone View
Standalone View
head/sys/kern/vfs_aio.c
Show First 20 Lines • Show All 2,333 Lines • ▼ Show 20 Lines | sys_lio_listio(struct thread *td, struct lio_listio_args *uap) | ||||
free(acb_list, M_LIO); | free(acb_list, M_LIO); | ||||
return (error); | return (error); | ||||
} | } | ||||
static void | static void | ||||
aio_biowakeup(struct bio *bp) | aio_biowakeup(struct bio *bp) | ||||
{ | { | ||||
struct kaiocb *job = (struct kaiocb *)bp->bio_caller1; | struct kaiocb *job = (struct kaiocb *)bp->bio_caller1; | ||||
struct proc *userp; | |||||
struct kaioinfo *ki; | struct kaioinfo *ki; | ||||
size_t nbytes; | size_t nbytes; | ||||
int error, nblks; | int error, nblks; | ||||
/* Release mapping into kernel space. */ | /* Release mapping into kernel space. */ | ||||
userp = job->userproc; | |||||
ki = userp->p_aioinfo; | |||||
vm_page_unhold_pages(job->pages, job->npages); | |||||
if (job->pbuf != NULL) { | if (job->pbuf != NULL) { | ||||
pmap_qremove((vm_offset_t)job->pbuf->b_data, job->npages); | pmap_qremove((vm_offset_t)job->pbuf->b_data, job->npages); | ||||
vm_page_unhold_pages(job->pages, job->npages); | |||||
uma_zfree(pbuf_zone, job->pbuf); | uma_zfree(pbuf_zone, job->pbuf); | ||||
job->pbuf = NULL; | job->pbuf = NULL; | ||||
atomic_subtract_int(&num_buf_aio, 1); | atomic_subtract_int(&num_buf_aio, 1); | ||||
ki = job->userproc->p_aioinfo; | |||||
AIO_LOCK(ki); | AIO_LOCK(ki); | ||||
ki->kaio_buffer_count--; | ki->kaio_buffer_count--; | ||||
AIO_UNLOCK(ki); | AIO_UNLOCK(ki); | ||||
} else { | } else { | ||||
vm_page_unhold_pages(job->pages, job->npages); | |||||
free(job->pages, M_TEMP); | free(job->pages, M_TEMP); | ||||
atomic_subtract_int(&num_unmapped_aio, 1); | atomic_subtract_int(&num_unmapped_aio, 1); | ||||
} | } | ||||
bp = job->bp; | bp = job->bp; | ||||
job->bp = NULL; | job->bp = NULL; | ||||
nbytes = job->uaiocb.aio_nbytes - bp->bio_resid; | nbytes = job->uaiocb.aio_nbytes - bp->bio_resid; | ||||
error = 0; | error = 0; | ||||
▲ Show 20 Lines • Show All 627 Lines • Show Last 20 Lines |