On Tue, Oct 15, 2019 at 2:48 PM David Howells <dhowells@xxxxxxxxxx> wrote: > > Add a wakeup call for a case whereby the caller already has the waitqueue > spinlock held. That naming is crazy. We already have helper functions like this, and they are just called "wake_up_locked()". So the "prelocked" naming is just odd. Make it be wake_up_interruptible_sync_poll_locked(). The helper function should likely be void __wake_up_locked_sync_key(struct wait_queue_head *wq_head, unsigned int mode, void *key) { __wake_up_common(wq_head, mode, 1, WF_SYNC, key, NULL); } EXPORT_SYMBOL_GPL(__wake_up_locked_sync_key); to match the other naming patterns there. [ Unrelated ] Looking at that mess of functions, I also wonder if we should try to just remove the bookmark code again. It was cute, and it was useful, but I think the problem with the page lock list may have been fixed by commit 9a1ea439b16b ("mm: put_and_wait_on_page_locked() while page is migrated") which avoids the retry condition with migrate_page_move_mapping(). Tim/Kan? Do you have the problematic load still? Linus