<feed xmlns='http://www.w3.org/2005/Atom'>
<title>src/sys/vm/vnode_pager.c, branch releng/10.2</title>
<subtitle>FreeBSD source tree</subtitle>
<id>https://cgit-dev.freebsd.org/src/atom?h=releng%2F10.2</id>
<link rel='self' href='https://cgit-dev.freebsd.org/src/atom?h=releng%2F10.2'/>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/'/>
<updated>2015-06-06T20:37:40Z</updated>
<entry>
<title>MFC 261811,282660,282706:</title>
<updated>2015-06-06T20:37:40Z</updated>
<author>
<name>John Baldwin</name>
<email>jhb@FreeBSD.org</email>
</author>
<published>2015-06-06T20:37:40Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=f0304fc03a37c215e38a4c2c1c9029e899c773da'/>
<id>urn:sha1:f0304fc03a37c215e38a4c2c1c9029e899c773da</id>
<content type='text'>
Place VM objects on the object list when created and never remove them.

261811:
Fix function name in KASSERT().

282660:
Place VM objects on the object list when created and never remove them.
This is ok since objects come from a NOFREE zone and allows objects to
be locked while traversing the object list without triggering a LOR.

Ensure that objects on the list are marked DEAD while free or stillborn,
and that they have a refcount of zero.  This required updating most of
the pagers to explicitly mark an object as dead when deallocating it.
(Only the vnode pager did this previously.)

282706:
Satisfy vm_object uma zone destructor requirements after r282660 when
vnode object creation raced.
</content>
</entry>
<entry>
<title>MFC r271586:</title>
<updated>2014-09-21T09:09:37Z</updated>
<author>
<name>Konstantin Belousov</name>
<email>kib@FreeBSD.org</email>
</author>
<published>2014-09-21T09:09:37Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=37de92504c0a5498f389b2a6142070526c5fc5d6'/>
<id>urn:sha1:37de92504c0a5498f389b2a6142070526c5fc5d6</id>
<content type='text'>
Fix mis-spelling of bits and types names in the vnode_pager_putpages().

Approved by:	re (delphij)
</content>
</entry>
<entry>
<title>The soft and hard busy mechanism rely on the vm object lock to work.</title>
<updated>2013-08-09T11:11:11Z</updated>
<author>
<name>Attilio Rao</name>
<email>attilio@FreeBSD.org</email>
</author>
<published>2013-08-09T11:11:11Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=c7aebda8a14a3bb94bb038df338549ccde5b56ea'/>
<id>urn:sha1:c7aebda8a14a3bb94bb038df338549ccde5b56ea</id>
<content type='text'>
Unify the 2 concept into a real, minimal, sxlock where the shared
acquisition represent the soft busy and the exclusive acquisition
represent the hard busy.
The old VPO_WANTED mechanism becames the hard-path for this new lock
and it becomes per-page rather than per-object.
The vm_object lock becames an interlock for this functionality:
it can be held in both read or write mode.
However, if the vm_object lock is held in read mode while acquiring
or releasing the busy state, the thread owner cannot make any
assumption on the busy state unless it is also busying it.

Also:
- Add a new flag to directly shared busy pages while vm_page_alloc
  and vm_page_grab are being executed.  This will be very helpful
  once these functions happen under a read object lock.
- Move the swapping sleep into its own per-object flag

The KPI is heavilly changed this is why the version is bumped.
It is very likely that some VM ports users will need to change
their own code.

Sponsored by:	EMC / Isilon storage division
Discussed with:	alc
Reviewed by:	jeff, kib
Tested by:	gavin, bapt (older version)
Tested by:	pho, scottl
</content>
</entry>
<entry>
<title> - Correct a stale comment.  We don't have vclean() anymore.  The work is</title>
<updated>2013-07-23T22:52:38Z</updated>
<author>
<name>Jeff Roberson</name>
<email>jeff@FreeBSD.org</email>
</author>
<published>2013-07-23T22:52:38Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=c93dcf2235b0cbc307458ee52b995cd989de6f44'/>
<id>urn:sha1:c93dcf2235b0cbc307458ee52b995cd989de6f44</id>
<content type='text'>
   done by vgonel() and destroy_vobject() should only be called once from
   VOP_INACTIVE().

Sponsored by:	EMC / Isilon Storage Division
</content>
</entry>
<entry>
<title>Assert that the object type for the vnode' non-NULL v_object, passed</title>
<updated>2013-04-28T19:19:26Z</updated>
<author>
<name>Konstantin Belousov</name>
<email>kib@FreeBSD.org</email>
</author>
<published>2013-04-28T19:19:26Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=9b8851faae0dd4d42f422929b9377a4d1df0bcbf'/>
<id>urn:sha1:9b8851faae0dd4d42f422929b9377a4d1df0bcbf</id>
<content type='text'>
to vnode_pager_setsize(), is either OBJT_VNODE, or, if vnode was
already reclaimed, OBJT_DEAD.  Note that the later is only possible
due to some filesystems, in particular, nfsiods from nfs clients, call
vnode_pager_setsize() with unlocked vnode.

More, if the object is terminated, do not perform the resizing
operation.

Reviewed by:	alc
Tested by:	pho, bf
MFC after:	1 week
</content>
</entry>
<entry>
<title>Convert panic() into KASSERT().</title>
<updated>2013-04-28T18:40:55Z</updated>
<author>
<name>Konstantin Belousov</name>
<email>kib@FreeBSD.org</email>
</author>
<published>2013-04-28T18:40:55Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=6ded84276d6ed47bee7dbd0b9d2f0a3569d3e4f6'/>
<id>urn:sha1:6ded84276d6ed47bee7dbd0b9d2f0a3569d3e4f6</id>
<content type='text'>
Reviewed by:	alc
MFC after:	1 week
</content>
</entry>
<entry>
<title>Fix the logic inversion in the r248512.</title>
<updated>2013-03-20T09:44:23Z</updated>
<author>
<name>Konstantin Belousov</name>
<email>kib@FreeBSD.org</email>
</author>
<published>2013-03-20T09:44:23Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=6991ee13a69a7900f08776121a58d3bba813deee'/>
<id>urn:sha1:6991ee13a69a7900f08776121a58d3bba813deee</id>
<content type='text'>
Noted by:	mckay
</content>
</entry>
<entry>
<title>Pass unmapped buffers for page in requests if the filesystem indicated support</title>
<updated>2013-03-19T14:36:28Z</updated>
<author>
<name>Konstantin Belousov</name>
<email>kib@FreeBSD.org</email>
</author>
<published>2013-03-19T14:36:28Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=6ce697dc73ef5e3d1147a52c97ab6404e03290ab'/>
<id>urn:sha1:6ce697dc73ef5e3d1147a52c97ab6404e03290ab</id>
<content type='text'>
for the unmapped i/o.

Sponsored by:	The FreeBSD Foundation
Tested by:	pho
</content>
</entry>
<entry>
<title>Some style fixes.</title>
<updated>2013-03-14T20:31:39Z</updated>
<author>
<name>Konstantin Belousov</name>
<email>kib@FreeBSD.org</email>
</author>
<published>2013-03-14T20:31:39Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=70e198dd07ca521f10d74a285ac614e39648b16d'/>
<id>urn:sha1:70e198dd07ca521f10d74a285ac614e39648b16d</id>
<content type='text'>
Sponsored by:	The FreeBSD Foundation
</content>
</entry>
<entry>
<title>Switch the vm_object mutex to be a rwlock.  This will enable in the</title>
<updated>2013-03-09T02:32:23Z</updated>
<author>
<name>Attilio Rao</name>
<email>attilio@FreeBSD.org</email>
</author>
<published>2013-03-09T02:32:23Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=89f6b8632cc94bca2738b4fcc26e1189ef4f5dde'/>
<id>urn:sha1:89f6b8632cc94bca2738b4fcc26e1189ef4f5dde</id>
<content type='text'>
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() -&gt; VM_OBJECT_WLOCK()
  - VM_OBJECT_TRYLOCK() -&gt; VM_OBJECT_TRYWLOCK()
  - VM_OBJECT_UNLOCK() -&gt; VM_OBJECT_WUNLOCK()
  - VM_OBJECT_LOCK_ASSERT(MA_OWNED) -&gt; 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
</content>
</entry>
</feed>
