DragonFly BSD
DragonFly kernel List (threaded) for 2004-05
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

VM patch 01 to test


From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxx>
Date: Wed, 12 May 2004 00:18:49 -0700 (PDT)

    This is primarily for David Rhodus, but anyone else who wants to test
    and/or review this patch, please be my guest!

	fetch http://apollo.backplane.com/DFlyMisc/vmspl01.patch

    This patch represents some fairly extensive fixes to the VM system.
    Normally mainline code can assume that if a VM page is not marked PG_BUSY,
    an interrupt (biodone) cannot come along and rip it out from under us.
    Unfortunately from what I can tell, there is actually an interrupt race
    where doing this check without spl protection can result in bad things
    happening:

	m = vm_page_lookup(obj, index);

	[ interrupt can occur here and unbusy and free the page,
	  making the busy check below useless, and then the page that
	  we believe is associated with an object may actually be
	  associated with something else ]

	if (vm_page_sleep_busy(m, ...))
		goto try_again;
	... do stuff to the page ...

    I do not know if these fixes will have any effect on the FS corruption
    issue.  So far nobody has been able to reproduce it and I am beginning
    to think that it may have gotten fixed by one of the commits made in
    the last few days, possibly the one last Thursday to the lockf code that
    fixed a bad 'owner' argument to lf_create_range().  I don't know.
    We'll just have to see.

					-Matt




[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]