Date: Fri, 6 Jan 2012 11:34:06 -0500 From: John Baldwin <jhb@freebsd.org> To: arch@freebsd.org Subject: Adding spare VOPs to allow new VOPs to be MFC'd Message-ID: <201201061134.06351.jhb@freebsd.org>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201201061134.06351.jhb>