summaryrefslogtreecommitdiffstats
path: root/sys/kern/vfs_default.c
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2001-04-29 11:48:41 +0000
committerphk <phk@FreeBSD.org>2001-04-29 11:48:41 +0000
commit608c1caf3bebcc3d9b0a01af62a7f57d2c6427ea (patch)
tree6b5998142cb5ea2562e19f6c067038ea2328965d /sys/kern/vfs_default.c
parentc7663963a91bb0760538088c78d32f2c8585bb43 (diff)
downloadFreeBSD-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.c25
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.
OpenPOWER on IntegriCloud