Changeset View
Changeset View
Standalone View
Standalone View
head/sys/kern/kern_descrip.c
Show First 20 Lines • Show All 789 Lines • ▼ Show 20 Lines | case F_READAHEAD: | ||||
error = vn_lock(vp, LK_EXCLUSIVE); | error = vn_lock(vp, LK_EXCLUSIVE); | ||||
if (error != 0) { | if (error != 0) { | ||||
fdrop(fp, td); | fdrop(fp, td); | ||||
break; | break; | ||||
} | } | ||||
if (arg >= 0) { | if (arg >= 0) { | ||||
bsize = fp->f_vnode->v_mount->mnt_stat.f_iosize; | bsize = fp->f_vnode->v_mount->mnt_stat.f_iosize; | ||||
arg = MIN(arg, INT_MAX - bsize + 1); | arg = MIN(arg, INT_MAX - bsize + 1); | ||||
fp->f_seqcount = MIN(IO_SEQMAX, | fp->f_seqcount[UIO_READ] = MIN(IO_SEQMAX, | ||||
(arg + bsize - 1) / bsize); | (arg + bsize - 1) / bsize); | ||||
atomic_set_int(&fp->f_flag, FRDAHEAD); | atomic_set_int(&fp->f_flag, FRDAHEAD); | ||||
} else { | } else { | ||||
atomic_clear_int(&fp->f_flag, FRDAHEAD); | atomic_clear_int(&fp->f_flag, FRDAHEAD); | ||||
} | } | ||||
VOP_UNLOCK(vp); | VOP_UNLOCK(vp); | ||||
fdrop(fp, td); | fdrop(fp, td); | ||||
break; | break; | ||||
▲ Show 20 Lines • Show All 3,784 Lines • Show Last 20 Lines |