From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Howells In-Reply-To: <20070508114003.GB19294@wotan.suse.de> References: <20070508114003.GB19294@wotan.suse.de> <20070508113709.GA19294@wotan.suse.de> Subject: Re: [rfc] optimise unlock_page Date: Tue, 08 May 2007 13:13:35 +0100 Message-ID: <9948.1178626415@redhat.com> Sender: owner-linux-mm@kvack.org Return-Path: To: Nick Piggin Cc: linux-arch@vger.kernel.org, Benjamin Herrenschmidt , Andrew Morton , Linux Kernel Mailing List , Linux Memory Management List List-ID: Nick Piggin wrote: > This patch trades a page flag for a significant improvement in the unlock_page > fastpath. Various problems in the previous version were spotted by Hugh and > Ben (and fixed in this one). It looks reasonable at first glance, though it does consume yet another page flag:-/ However, I think that's probably a worthy trade. > } > - > + > +static inline void unlock_page(struct page *page) > +{ > + VM_BUG_ON(!PageLocked(page)); > + ClearPageLocked_Unlock(page); > + if (unlikely(PageWaiters(page))) > + __unlock_page(page); > +} > + Please don't simply discard the documentation, we have little enough as it is: > -/** > - * unlock_page - unlock a locked page > - * @page: the page > - * > - * Unlocks the page and wakes up sleepers in ___wait_on_page_locked(). > - * Also wakes sleepers in wait_on_page_writeback() because the wakeup > - * mechananism between PageLocked pages and PageWriteback pages is shared. > - * But that's OK - sleepers in wait_on_page_writeback() just go back to sleep. > - * > - * The mb is necessary to enforce ordering between the clear_bit and the read > - * of the waitqueue (to avoid SMP races with a parallel wait_on_page_locked()). David -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org