Adding spare VOPs to allow new VOPs to be MFC'd
John Baldwin
jhb at freebsd.org
Fri Jan 6 16:34:07 UTC 2012
Right now if we MFC a new VOP into a stable branch this breaks the KBI for any
VFS kernel modules since the size and layout of struct vop_vector changes.
What I am proposing is to add N (currently 5) spare VOPs at the end of the
table that can be used by MFCs to add new VOPs onto a stable branch (assuming
the change includes a suitable default VOP implementation).
Index: vnode_if.src
===================================================================
--- vnode_if.src (revision 229703)
+++ vnode_if.src (working copy)
@@ -50,7 +50,7 @@
# X: locked if not nil.
#
# The paramater named "vpp" is assumed to be always used with double
-# indirection (**vpp) and that name is hard-codeed in vnode_if.awk !
+# indirection (**vpp) and that name is hard-coded in vnode_if.awk !
#
# Lines starting with %! specify a pre or post-condition function
# to call before/after the vop call.
@@ -639,3 +639,28 @@ vop_advise {
IN off_t end;
IN int advice;
};
+
+# The VOPs below are spares at the end of the table to allow new VOPs to be
+# added in stable branches without breaking the KBI. New VOPs in HEAD should
+# be added above these spares. When merging a new VOP to a stable branch,
+# the new VOP should replace one of the spares.
+
+vop_spare1 {
+ IN struct vnode *vp;
+};
+
+vop_spare2 {
+ IN struct vnode *vp;
+};
+
+vop_spare3 {
+ IN struct vnode *vp;
+};
+
+vop_spare4 {
+ IN struct vnode *vp;
+};
+
+vop_spare5 {
+ IN struct vnode *vp;
+};
--
John Baldwin
More information about the freebsd-arch
mailing list