Changeset View
Changeset View
Standalone View
Standalone View
sys/ufs/ffs/ffs_vnops.c
Show First 20 Lines • Show All 219 Lines • ▼ Show 20 Lines | |||||
static int | static int | ||||
ffs_fsync(struct vop_fsync_args *ap) | ffs_fsync(struct vop_fsync_args *ap) | ||||
{ | { | ||||
struct vnode *vp; | struct vnode *vp; | ||||
struct bufobj *bo; | struct bufobj *bo; | ||||
int error; | int error; | ||||
vp = ap->a_vp; | vp = ap->a_vp; | ||||
bo = &vp->v_bufobj; | bo = vp2bo(vp); | ||||
retry: | retry: | ||||
error = ffs_syncvnode(vp, ap->a_waitfor, 0); | error = ffs_syncvnode(vp, ap->a_waitfor, 0); | ||||
if (error) | if (error) | ||||
return (error); | return (error); | ||||
if (ap->a_waitfor == MNT_WAIT && DOINGSOFTDEP(vp)) { | if (ap->a_waitfor == MNT_WAIT && DOINGSOFTDEP(vp)) { | ||||
error = softdep_fsync(vp); | error = softdep_fsync(vp); | ||||
if (error) | if (error) | ||||
return (error); | return (error); | ||||
Show All 23 Lines | ffs_syncvnode(struct vnode *vp, int waitfor, int flags) | ||||
struct bufobj *bo; | struct bufobj *bo; | ||||
struct ufsmount *ump; | struct ufsmount *ump; | ||||
struct buf *bp, *nbp; | struct buf *bp, *nbp; | ||||
ufs_lbn_t lbn; | ufs_lbn_t lbn; | ||||
int error, passes; | int error, passes; | ||||
bool still_dirty, unlocked, wait; | bool still_dirty, unlocked, wait; | ||||
ip = VTOI(vp); | ip = VTOI(vp); | ||||
bo = &vp->v_bufobj; | bo = vp2bo(vp); | ||||
ump = VFSTOUFS(vp->v_mount); | ump = VFSTOUFS(vp->v_mount); | ||||
/* | /* | ||||
* When doing MNT_WAIT we must first flush all dependencies | * When doing MNT_WAIT we must first flush all dependencies | ||||
* on the inode. | * on the inode. | ||||
*/ | */ | ||||
if (DOINGSOFTDEP(vp) && waitfor == MNT_WAIT && | if (DOINGSOFTDEP(vp) && waitfor == MNT_WAIT && | ||||
(error = softdep_sync_metadata(vp)) != 0) { | (error = softdep_sync_metadata(vp)) != 0) { | ||||
▲ Show 20 Lines • Show All 1,612 Lines • ▼ Show 20 Lines | |||||
ffs_getpages(struct vop_getpages_args *ap) | ffs_getpages(struct vop_getpages_args *ap) | ||||
{ | { | ||||
struct vnode *vp; | struct vnode *vp; | ||||
struct ufsmount *um; | struct ufsmount *um; | ||||
vp = ap->a_vp; | vp = ap->a_vp; | ||||
um = VFSTOUFS(vp->v_mount); | um = VFSTOUFS(vp->v_mount); | ||||
if (!use_buf_pager && um->um_devvp->v_bufobj.bo_bsize <= PAGE_SIZE) | if (!use_buf_pager && vp2bo(um->um_devvp)->bo_bsize <= PAGE_SIZE) | ||||
return (vnode_pager_generic_getpages(vp, ap->a_m, ap->a_count, | return (vnode_pager_generic_getpages(vp, ap->a_m, ap->a_count, | ||||
ap->a_rbehind, ap->a_rahead, NULL, NULL)); | ap->a_rbehind, ap->a_rahead, NULL, NULL)); | ||||
return (vfs_bio_getpages(vp, ap->a_m, ap->a_count, ap->a_rbehind, | return (vfs_bio_getpages(vp, ap->a_m, ap->a_count, ap->a_rbehind, | ||||
ap->a_rahead, ffs_gbp_getblkno, ffs_gbp_getblksz)); | ap->a_rahead, ffs_gbp_getblkno, ffs_gbp_getblksz)); | ||||
} | } | ||||
static int | static int | ||||
ffs_getpages_async(struct vop_getpages_async_args *ap) | ffs_getpages_async(struct vop_getpages_async_args *ap) | ||||
{ | { | ||||
struct vnode *vp; | struct vnode *vp; | ||||
struct ufsmount *um; | struct ufsmount *um; | ||||
bool do_iodone; | bool do_iodone; | ||||
int error; | int error; | ||||
vp = ap->a_vp; | vp = ap->a_vp; | ||||
um = VFSTOUFS(vp->v_mount); | um = VFSTOUFS(vp->v_mount); | ||||
do_iodone = true; | do_iodone = true; | ||||
if (um->um_devvp->v_bufobj.bo_bsize <= PAGE_SIZE) { | if (vp2bo(um->um_devvp)->bo_bsize <= PAGE_SIZE) { | ||||
error = vnode_pager_generic_getpages(vp, ap->a_m, ap->a_count, | error = vnode_pager_generic_getpages(vp, ap->a_m, ap->a_count, | ||||
ap->a_rbehind, ap->a_rahead, ap->a_iodone, ap->a_arg); | ap->a_rbehind, ap->a_rahead, ap->a_iodone, ap->a_arg); | ||||
if (error == 0) | if (error == 0) | ||||
do_iodone = false; | do_iodone = false; | ||||
} else { | } else { | ||||
error = vfs_bio_getpages(vp, ap->a_m, ap->a_count, | error = vfs_bio_getpages(vp, ap->a_m, ap->a_count, | ||||
ap->a_rbehind, ap->a_rahead, ffs_gbp_getblkno, | ap->a_rbehind, ap->a_rahead, ffs_gbp_getblkno, | ||||
ffs_gbp_getblksz); | ffs_gbp_getblksz); | ||||
▲ Show 20 Lines • Show All 117 Lines • Show Last 20 Lines |