<feed xmlns='http://www.w3.org/2005/Atom'>
<title>src/sys/vm/vm_object.c, branch release/6.0.0_cvs</title>
<subtitle>FreeBSD source tree</subtitle>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/'/>
<entry>
<title>This commit was manufactured by cvs2svn to create tag</title>
<updated>2005-11-03T00:35:26+00:00</updated>
<author>
<name>cvs2svn</name>
<email>cvs2svn@FreeBSD.org</email>
</author>
<published>2005-11-03T00:35:26+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=3640cb54210edbb7edbf1b12ef0127ecfcea967d'/>
<id>3640cb54210edbb7edbf1b12ef0127ecfcea967d</id>
<content type='text'>
'RELENG_6_0_0_RELEASE'.

This commit was manufactured to restore the state of the 6.0-RELEASE image.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
'RELENG_6_0_0_RELEASE'.

This commit was manufactured to restore the state of the 6.0-RELEASE image.
</pre>
</div>
</content>
</entry>
<entry>
<title>MFRELENG_6 (by alc) changesets that addresses several race conditions that</title>
<updated>2005-10-26T20:22:00+00:00</updated>
<author>
<name>Xin LI</name>
<email>delphij@FreeBSD.org</email>
</author>
<published>2005-10-26T20:22:00+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=0fcef6909b031e7dbe5536159bc0ec4803eaec64'/>
<id>0fcef6909b031e7dbe5536159bc0ec4803eaec64</id>
<content type='text'>
can cause a kernel compiled with ZERO_COPY_SOCKETS to panic under certain
circumstances:
	sys/kern/uipc_cow.c:	1.24 - 1.26
	sys/vm/vm_object.c:	1.351

Approved by:	re (scottl)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
can cause a kernel compiled with ZERO_COPY_SOCKETS to panic under certain
circumstances:
	sys/kern/uipc_cow.c:	1.24 - 1.26
	sys/vm/vm_object.c:	1.351

Approved by:	re (scottl)
</pre>
</div>
</content>
</entry>
<entry>
<title>MFC: Don't allow pagedaemon to skip pages while scanning active and</title>
<updated>2005-08-12T16:43:27+00:00</updated>
<author>
<name>Tor Egge</name>
<email>tegge@FreeBSD.org</email>
</author>
<published>2005-08-12T16:43:27+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=263daf2afa65b4669b638265118eb41fa7f8153c'/>
<id>263daf2afa65b4669b638265118eb41fa7f8153c</id>
<content type='text'>
     inactive page queues due to the vm object being locked.

Approved by:	re (kensmith)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
     inactive page queues due to the vm object being locked.

Approved by:	re (kensmith)
</pre>
</div>
</content>
</entry>
<entry>
<title> - We need to inhert the OBJ_NEEDGIANT flag from the original object in</title>
<updated>2005-05-04T20:54:16+00:00</updated>
<author>
<name>Jeff Roberson</name>
<email>jeff@FreeBSD.org</email>
</author>
<published>2005-05-04T20:54:16+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=b8a0b997fd8afd21ac9b08f4d78a6b1001f1fcb4'/>
<id>b8a0b997fd8afd21ac9b08f4d78a6b1001f1fcb4</id>
<content type='text'>
   vm_object_split().

Spotted by:	alc
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
   vm_object_split().

Spotted by:	alc
</pre>
</div>
</content>
</entry>
<entry>
<title> - Add a new object flag "OBJ_NEEDSGIANT".  We set this flag if the</title>
<updated>2005-05-03T11:11:26+00:00</updated>
<author>
<name>Jeff Roberson</name>
<email>jeff@FreeBSD.org</email>
</author>
<published>2005-05-03T11:11:26+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=ed4fe4f4f5dd2ae7ef62e004a3e1bdd071b8fee6'/>
<id>ed4fe4f4f5dd2ae7ef62e004a3e1bdd071b8fee6</id>
<content type='text'>
   underlying vnode requires Giant.
 - In vm_fault only acquire Giant if the underlying object has NEEDSGIANT
   set.
 - In vm_object_shadow inherit the NEEDSGIANT flag from the backing object.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
   underlying vnode requires Giant.
 - In vm_fault only acquire Giant if the underlying object has NEEDSGIANT
   set.
 - In vm_object_shadow inherit the NEEDSGIANT flag from the backing object.
</pre>
</div>
</content>
</entry>
<entry>
<title>Eliminate (now) unnecessary acquisition and release of the global page</title>
<updated>2005-03-30T05:40:02+00:00</updated>
<author>
<name>Alan Cox</name>
<email>alc@FreeBSD.org</email>
</author>
<published>2005-03-30T05:40:02+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=c6ec6a7caebd712ffac70508099aeb71f302f033'/>
<id>c6ec6a7caebd712ffac70508099aeb71f302f033</id>
<content type='text'>
queues lock in vm_object_backing_scan().  Updates to the page's PG_BUSY
flag and busy field are synchronized by the containing object's lock.

Testing the page's hold_count and wire_count in vm_object_backing_scan()'s
OBSC_COLLAPSE_NOWAIT case is unnecessary.  There is no reason why the held
or wired pages cannot be migrated to the shadow object.

Reviewed by: tegge
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
queues lock in vm_object_backing_scan().  Updates to the page's PG_BUSY
flag and busy field are synchronized by the containing object's lock.

Testing the page's hold_count and wire_count in vm_object_backing_scan()'s
OBSC_COLLAPSE_NOWAIT case is unnecessary.  There is no reason why the held
or wired pages cannot be migrated to the shadow object.

Reviewed by: tegge
</pre>
</div>
</content>
</entry>
<entry>
<title> - Don't lock the vnode interlock in vm_object_set_writeable_dirty() if</title>
<updated>2005-03-17T12:03:42+00:00</updated>
<author>
<name>Jeff Roberson</name>
<email>jeff@FreeBSD.org</email>
</author>
<published>2005-03-17T12:03:42+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=ee39666a7634396322ed97235ba64b0b3642ff58'/>
<id>ee39666a7634396322ed97235ba64b0b3642ff58</id>
<content type='text'>
   we've already set the object flags.

Reviewed by:	alc
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
   we've already set the object flags.

Reviewed by:	alc
</pre>
</div>
</content>
</entry>
<entry>
<title>Update the text of an assertion to reflect changes made in revision 1.148.</title>
<updated>2005-01-30T21:29:47+00:00</updated>
<author>
<name>Alan Cox</name>
<email>alc@FreeBSD.org</email>
</author>
<published>2005-01-30T21:29:47+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=8e99783b259e78fd4a55c805ab59907ed7fcdb20'/>
<id>8e99783b259e78fd4a55c805ab59907ed7fcdb20</id>
<content type='text'>
Submitted by: tegge

Eliminate an unnecessary, temporary increment of the backing object's
reference count in vm_object_qcollapse().  Reviewed by: tegge
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Submitted by: tegge

Eliminate an unnecessary, temporary increment of the backing object's
reference count in vm_object_qcollapse().  Reviewed by: tegge
</pre>
</div>
</content>
</entry>
<entry>
<title> - Remove GIANT_REQUIRED where giant is no longer required.</title>
<updated>2005-01-24T10:48:29+00:00</updated>
<author>
<name>Jeff Roberson</name>
<email>jeff@FreeBSD.org</email>
</author>
<published>2005-01-24T10:48:29+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=ae51ff112794e6944bf1b9f9bbe28533b4ab4fa6'/>
<id>ae51ff112794e6944bf1b9f9bbe28533b4ab4fa6</id>
<content type='text'>
 - Use VFS_LOCK_GIANT() rather than directly acquiring giant in places
   where giant is only held because vfs requires it.

Sponsored By:   Isilon Systems, Inc.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 - Use VFS_LOCK_GIANT() rather than directly acquiring giant in places
   where giant is only held because vfs requires it.

Sponsored By:   Isilon Systems, Inc.
</pre>
</div>
</content>
</entry>
<entry>
<title>Consider three objects, O, BO, and BBO, where BO is O's backing object</title>
<updated>2005-01-15T21:12:47+00:00</updated>
<author>
<name>Alan Cox</name>
<email>alc@FreeBSD.org</email>
</author>
<published>2005-01-15T21:12:47+00:00</published>
<link rel='alternate' type='text/html' href='http://cgit.freebsd.org/src/commit/?id=d936694f097a8cef90af1a0d078e1bfc84108b0a'/>
<id>d936694f097a8cef90af1a0d078e1bfc84108b0a</id>
<content type='text'>
and BBO is BO's backing object.  Now, suppose that O and BO are being
collapsed.  Furthermore, suppose that BO has been marked dead
(OBJ_DEAD) by vm_object_backing_scan() and that either
vm_object_backing_scan() has been forced to sleep due to encountering
a busy page or vm_object_collapse() has been forced to sleep due to
memory allocation in the swap pager.  If vm_object_deallocate() is
then called on BBO and BO is BBO's only shadow object,
vm_object_deallocate() will collapse BO and BBO.  In doing so, it adds
a necessary temporary reference to BO.  If this collapse also sleeps
and the prior collapse resumes first, the temporary reference will
cause vm_object_collapse to panic with the message "backing_object %p
was somehow re-referenced during collapse!"

Resolve this race by changing vm_object_deallocate() such that it
doesn't collapse BO and BBO if BO is marked dead.  Once O and BO are
collapsed, vm_object_collapse() will attempt to collapse O and BBO.
So, vm_object_deallocate() on BBO need do nothing.

Reported by: Peter Holm on 20050107
URL: http://www.holm.cc/stress/log/cons102.html

In collaboration with: tegge@
Candidate for RELENG_4 and RELENG_5
MFC after: 2 weeks
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
and BBO is BO's backing object.  Now, suppose that O and BO are being
collapsed.  Furthermore, suppose that BO has been marked dead
(OBJ_DEAD) by vm_object_backing_scan() and that either
vm_object_backing_scan() has been forced to sleep due to encountering
a busy page or vm_object_collapse() has been forced to sleep due to
memory allocation in the swap pager.  If vm_object_deallocate() is
then called on BBO and BO is BBO's only shadow object,
vm_object_deallocate() will collapse BO and BBO.  In doing so, it adds
a necessary temporary reference to BO.  If this collapse also sleeps
and the prior collapse resumes first, the temporary reference will
cause vm_object_collapse to panic with the message "backing_object %p
was somehow re-referenced during collapse!"

Resolve this race by changing vm_object_deallocate() such that it
doesn't collapse BO and BBO if BO is marked dead.  Once O and BO are
collapsed, vm_object_collapse() will attempt to collapse O and BBO.
So, vm_object_deallocate() on BBO need do nothing.

Reported by: Peter Holm on 20050107
URL: http://www.holm.cc/stress/log/cons102.html

In collaboration with: tegge@
Candidate for RELENG_4 and RELENG_5
MFC after: 2 weeks
</pre>
</div>
</content>
</entry>
</feed>
