diff options
author | phk <phk@FreeBSD.org> | 2001-04-29 11:48:41 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2001-04-29 11:48:41 +0000 |
commit | 608c1caf3bebcc3d9b0a01af62a7f57d2c6427ea (patch) | |
tree | 6b5998142cb5ea2562e19f6c067038ea2328965d /sys/kern/vfs_default.c | |
parent | c7663963a91bb0760538088c78d32f2c8585bb43 (diff) | |
download | FreeBSD-src-608c1caf3bebcc3d9b0a01af62a7f57d2c6427ea.zip FreeBSD-src-608c1caf3bebcc3d9b0a01af62a7f57d2c6427ea.tar.gz |
Add a vop_stdbmap(), and make it part of the default vop vector.
Make 7 filesystems which don't really know about VOP_BMAP rely
on the default vector, rather than more or less complete local
vop_nopbmap() implementations.
Diffstat (limited to 'sys/kern/vfs_default.c')
-rw-r--r-- | sys/kern/vfs_default.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/sys/kern/vfs_default.c b/sys/kern/vfs_default.c index e06dfa4..d5e1e24 100644 --- a/sys/kern/vfs_default.c +++ b/sys/kern/vfs_default.c @@ -80,6 +80,7 @@ vop_t **default_vnodeop_p; static struct vnodeopv_entry_desc default_vnodeop_entries[] = { { &vop_default_desc, (vop_t *) vop_eopnotsupp }, { &vop_advlock_desc, (vop_t *) vop_einval }, + { &vop_bmap_desc, (vop_t *) vop_stdbmap }, { &vop_close_desc, (vop_t *) vop_null }, { &vop_createvobject_desc, (vop_t *) vop_stdcreatevobject }, { &vop_destroyvobject_desc, (vop_t *) vop_stddestroyvobject }, @@ -609,6 +610,30 @@ vop_stdgetvobject(ap) return (vp->v_object ? 0 : EINVAL); } +int +vop_stdbmap(ap) + struct vop_bmap_args /* { + struct vnode *a_vp; + daddr_t a_bn; + struct vnode **a_vpp; + daddr_t *a_bnp; + int *a_runp; + int *a_runb; + } */ *ap; +{ + + if (ap->a_vpp != NULL) + *ap->a_vpp = ap->a_vp; + if (ap->a_bnp != NULL) + *ap->a_bnp = ap->a_bn * btodb(ap->a_vp->v_mount->mnt_stat.f_iosize); + if (ap->a_runp != NULL) + *ap->a_runp = 0; + if (ap->a_runb != NULL) + *ap->a_runb = 0; + return (0); +} + + /* * vfs default ops * used to fill the vfs fucntion table to get reasonable default return values. |