Re: [PATCHi v2] mm: put_and_wait_on_page_locked() while page is migrated

From: Michal Hocko
Date: Mon Nov 26 2018 - 14:53:51 EST


On Mon 26-11-18 11:27:07, Hugh Dickins wrote:
[...]
> @@ -1049,25 +1056,44 @@ static void wake_up_page(struct page *page, int bit)
> wake_up_page_bit(page, bit);
> }
>
> +/*
> + * A choice of three behaviors for wait_on_page_bit_common():
> + */
> +enum behavior {
> + EXCLUSIVE, /* Hold ref to page and take the bit when woken, like
> + * __lock_page() waiting on then setting PG_locked.
> + */
> + SHARED, /* Hold ref to page and check the bit when woken, like
> + * wait_on_page_writeback() waiting on PG_writeback.
> + */
> + DROP, /* Drop ref to page before wait, no check when woken,
> + * like put_and_wait_on_page_locked() on PG_locked.
> + */
> +};

I like this. It makes to semantic much more clear.

Thanks!
--
Michal Hocko
SUSE Labs