Changeset View
Changeset View
Standalone View
Standalone View
sys/fs/pseudofs/pseudofs_vnops.c
Show First 20 Lines • Show All 62 Lines • ▼ Show 20 Lines | |||||
#define KASSERT_PN_IS_FILE(pn) \ | #define KASSERT_PN_IS_FILE(pn) \ | ||||
KASSERT((pn)->pn_type == pfstype_file, \ | KASSERT((pn)->pn_type == pfstype_file, \ | ||||
("%s(): VREG vnode refers to non-file pfs_node", __func__)) | ("%s(): VREG vnode refers to non-file pfs_node", __func__)) | ||||
#define KASSERT_PN_IS_LINK(pn) \ | #define KASSERT_PN_IS_LINK(pn) \ | ||||
KASSERT((pn)->pn_type == pfstype_symlink, \ | KASSERT((pn)->pn_type == pfstype_symlink, \ | ||||
("%s(): VLNK vnode refers to non-link pfs_node", __func__)) | ("%s(): VLNK vnode refers to non-link pfs_node", __func__)) | ||||
static int pfs_bufsiz = MAXPHYS; | |||||
static int | |||||
sysctl_pfs_bufsiz(SYSCTL_HANDLER_ARGS) | |||||
{ | |||||
int error, limit; | |||||
limit = pfs_bufsiz; | |||||
error = sysctl_handle_int(oidp, &limit, 0, req); | |||||
if (error || !req->newptr) | |||||
return (error); | |||||
if (limit < 1 || limit > IOSIZE_MAX) | |||||
return (EINVAL); | |||||
pfs_bufsiz = limit; | |||||
return (0); | |||||
} | |||||
SYSCTL_PROC(_vfs_pfs, OID_AUTO, bufsiz, CTLTYPE_INT|CTLFLAG_RW, | |||||
0, 0, sysctl_pfs_bufsiz, "I", | |||||
"storage buffer size"); | |||||
/* | /* | ||||
* Returns the fileno, adjusted for target pid | * Returns the fileno, adjusted for target pid | ||||
*/ | */ | ||||
static uint32_t | static uint32_t | ||||
pn_fileno(struct pfs_node *pn, pid_t pid) | pn_fileno(struct pfs_node *pn, pid_t pid) | ||||
{ | { | ||||
KASSERT(pn->pn_fileno > 0, | KASSERT(pn->pn_fileno > 0, | ||||
▲ Show 20 Lines • Show All 579 Lines • ▼ Show 20 Lines | pfs_read(struct vop_read_args *va) | ||||
} | } | ||||
if (uio->uio_resid < 0 || uio->uio_offset < 0 || | if (uio->uio_resid < 0 || uio->uio_offset < 0 || | ||||
uio->uio_resid > OFF_MAX - uio->uio_offset) { | uio->uio_resid > OFF_MAX - uio->uio_offset) { | ||||
error = EINVAL; | error = EINVAL; | ||||
goto ret; | goto ret; | ||||
} | } | ||||
buflen = uio->uio_offset + uio->uio_resid; | buflen = uio->uio_offset + uio->uio_resid; | ||||
if (buflen > MAXPHYS) | if (buflen > pfs_bufsiz) | ||||
buflen = MAXPHYS; | buflen = pfs_bufsiz; | ||||
sb = sbuf_new(sb, NULL, buflen + 1, 0); | sb = sbuf_new(sb, NULL, buflen + 1, 0); | ||||
if (sb == NULL) { | if (sb == NULL) { | ||||
error = EIO; | error = EIO; | ||||
goto ret; | goto ret; | ||||
} | } | ||||
error = pn_fill(curthread, proc, pn, sb, uio); | error = pn_fill(curthread, proc, pn, sb, uio); | ||||
▲ Show 20 Lines • Show All 389 Lines • Show Last 20 Lines |