The current iterator always ends up taking the interlock without letting the caller decide if it wants to do anything with the vnode upfront. In particular vfs_msync tends to not need to do anything.
This functionality is motivated by a different (to be proposed) patch which will end up adding vnodes to the active list.
The use in vfs_msync will be committed separately. Note the checks are now duplicated but will become useful with further patches and I don't think removing this right now adds much benefit.