Generally looks reasonable to me, assuming it passes the atf tests, but give hannken@ another few days to review it?
Maybe instead of adding vnode_impl.h to vfs_vnops.c, we can put the vn_knote_* in vfs_vnode.c or create a new file vfs_knote.c, to avoid having tentacles of vnode guts creep back into places we successfully cut them out of before?