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