View | Details | Raw Unified | Return to bug 256507 | Differences between
and this patch

Collapse All | Expand All

(-)b/sys/vm/vm_page.c (+11 lines)
Lines 3618-3623 vm_page_unwire(vm_page_t m, uint8_t queue) Link Here
3618
	if (!unwired || (m->oflags & VPO_UNMANAGED) != 0 || m->object == NULL)
3618
	if (!unwired || (m->oflags & VPO_UNMANAGED) != 0 || m->object == NULL)
3619
		return (unwired);
3619
		return (unwired);
3620
3620
3621
	/*
3622
	 * A lazy dequeue might already be in progress.  Wait for it to finish
3623
	 * before proceeding.
3624
	 *
3625
	 * Ensure that we load the queue index after the state flags, to
3626
	 * synchronize with vm_page_dequeue_complete().
3627
	 */
3628
	if (__predict_false((m->aflags & PGA_DEQUEUE) != 0))
3629
		vm_page_dequeue(m);
3630
	atomic_thread_fence_acq();
3631
3621
	if (vm_page_queue(m) == queue) {
3632
	if (vm_page_queue(m) == queue) {
3622
		if (queue == PQ_ACTIVE)
3633
		if (queue == PQ_ACTIVE)
3623
			vm_page_reference(m);
3634
			vm_page_reference(m);

Return to bug 256507