Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/vfs_aio.c
Show First 20 Lines • Show All 1,228 Lines • ▼ Show 20 Lines | if (!(opcode == LIO_WRITE || opcode == LIO_WRITEV || | ||||
opcode == LIO_READ || opcode == LIO_READV)) | opcode == LIO_READ || opcode == LIO_READV)) | ||||
return (-1); | return (-1); | ||||
if (fp == NULL || fp->f_type != DTYPE_VNODE) | if (fp == NULL || fp->f_type != DTYPE_VNODE) | ||||
return (-1); | return (-1); | ||||
vp = fp->f_vnode; | vp = fp->f_vnode; | ||||
if (vp->v_type != VCHR) | if (vp->v_type != VCHR) | ||||
return (-1); | return (-1); | ||||
if (vp->v_bufobj.bo_bsize == 0) | if (vp2bo(vp)->bo_bsize == 0) | ||||
return (-1); | return (-1); | ||||
bio_cmd = (opcode & LIO_WRITE) ? BIO_WRITE : BIO_READ; | bio_cmd = (opcode & LIO_WRITE) ? BIO_WRITE : BIO_READ; | ||||
iovcnt = job->uiop->uio_iovcnt; | iovcnt = job->uiop->uio_iovcnt; | ||||
if (iovcnt > max_buf_aio) | if (iovcnt > max_buf_aio) | ||||
return (-1); | return (-1); | ||||
for (i = 0; i < iovcnt; i++) { | for (i = 0; i < iovcnt; i++) { | ||||
if (job->uiop->uio_iov[i].iov_len % vp->v_bufobj.bo_bsize != 0) | if (job->uiop->uio_iov[i].iov_len % vp2bo(vp)->bo_bsize != 0) | ||||
return (-1); | return (-1); | ||||
if (job->uiop->uio_iov[i].iov_len > maxphys) { | if (job->uiop->uio_iov[i].iov_len > maxphys) { | ||||
error = -1; | error = -1; | ||||
return (-1); | return (-1); | ||||
} | } | ||||
} | } | ||||
offset = cb->aio_offset; | offset = cb->aio_offset; | ||||
▲ Show 20 Lines • Show All 1,897 Lines • Show Last 20 Lines |