Re: 2.6.22 -mm merge plans -- vm bugfixes

From: Andrew Morton
Date: Thu May 03 2007 - 12:53:03 EST


On Thu, 03 May 2007 11:32:23 +1000 Nick Piggin <nickpiggin@xxxxxxxxxxxx> wrote:

> void fastcall unlock_page(struct page *page)
> {
> + VM_BUG_ON(!PageLocked(page));
> smp_mb__before_clear_bit();
> - if (!TestClearPageLocked(page))
> - BUG();
> - smp_mb__after_clear_bit();
> - wake_up_page(page, PG_locked);
> + ClearPageLocked(page);
> + if (unlikely(test_bit(PG_waiters, &page->flags))) {
> + clear_bit(PG_waiters, &page->flags);
> + wake_up_page(page, PG_locked);
> + }
> }

Why is that significantly faster than plain old wake_up_page(), which
tests waitqueue_active()?
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/