svn commit: r248084 - in head/sys: amd64/amd64 arm/arm cddl/compat/opensolaris/kern cddl/compat/opensolaris/sys cddl/contrib/opensolaris/uts/common/fs/zfs cddl/contrib/opensolaris/uts/common/fs/zfs...
Garrett Cooper
yaneurabeya at gmail.com
Tue Jul 9 15:58:45 UTC 2013
On Mar 8, 2013, at 6:32 PM, Attilio Rao wrote:
> Author: attilio
> Date: Sat Mar 9 02:32:23 2013
> New Revision: 248084
> URL: http://svnweb.freebsd.org/changeset/base/248084
>
> Log:
> Switch the vm_object mutex to be a rwlock. This will enable in the
> future further optimizations where the vm_object lock will be held
> in read mode most of the time the page cache resident pool of pages
> are accessed for reading purposes.
>
> The change is mostly mechanical but few notes are reported:
> * The KPI changes as follow:
> - VM_OBJECT_LOCK() -> VM_OBJECT_WLOCK()
> - VM_OBJECT_TRYLOCK() -> VM_OBJECT_TRYWLOCK()
> - VM_OBJECT_UNLOCK() -> VM_OBJECT_WUNLOCK()
> - VM_OBJECT_LOCK_ASSERT(MA_OWNED) -> VM_OBJECT_ASSERT_WLOCKED()
> (in order to avoid visibility of implementation details)
> - The read-mode operations are added:
> VM_OBJECT_RLOCK(), VM_OBJECT_TRYRLOCK(), VM_OBJECT_RUNLOCK(),
> VM_OBJECT_ASSERT_RLOCKED(), VM_OBJECT_ASSERT_LOCKED()
> * The vm/vm_pager.h namespace pollution avoidance (forcing requiring
> sys/mutex.h in consumers directly to cater its inlining functions
> using VM_OBJECT_LOCK()) imposes that all the vm/vm_pager.h
> consumers now must include also sys/rwlock.h.
> * zfs requires a quite convoluted fix to include FreeBSD rwlocks into
> the compat layer because the name clash between FreeBSD and solaris
> versions must be avoided.
> At this purpose zfs redefines the vm_object locking functions
> directly, isolating the FreeBSD components in specific compat stubs.
>
> The KPI results heavilly broken by this commit. Thirdy part ports must
> be updated accordingly (I can think off-hand of VirtualBox, for example).
>
> Sponsored by: EMC / Isilon storage division
> Reviewed by: jeff
> Reviewed by: pjd (ZFS specific review)
> Discussed with: alc
> Tested by: pho
This commit broke emulators/open-vm-tools (which helps with hardware acceleration and other guest OS services on VMware, et al) and it's been broken for ~4 months now. Please ask portmgr@ to do an exp- run before making KPI changes. open-vm-tools, nvidia-driver, qemu*, and virtualbox-ose* are and have been particularly vulnerable to sweeping changes like this in the past (I've had to patch a lot of 3rd party software broken by KPI changes in 10.x, more than in prior releases) and a lot of developers depend on this functionality to be sane in order to develop software on -CURRENT and -STABLE (and it allows us to better test your code).
Thanks,
-Garrett
More information about the freebsd-emulation
mailing list