Hi Andrew,
On 2024/8/16 13:02, Andrew Morton wrote:
On Mon, 29 Jul 2024 09:58:02 +0800 Gao Xiang <hsiangkao@xxxxxxxxxxxxxxxxx> wrote:
For the fix, I think that we should still respect migrate_mode because
users may prefer migration success over blocking.
@@ -1492,11 +1492,17 @@ static int unmap_and_move_huge_page(new_folio_t get_new_folio,
return rc;
}
-static inline int try_split_folio(struct folio *folio, struct list_head *split_folios)
+static inline int try_split_folio(struct folio *folio, struct list_head *split_folios,
+ enum migrate_mode mode)
{
int rc;
- folio_lock(folio);
+ if (mode == MIGRATE_ASYNC) {
+ if (!folio_trylock(folio))
+ return -EAGAIN;
+ } else {
+ folio_lock(folio);
+ }
rc = split_folio_to_list(folio, split_folios);
folio_unlock(folio);
if (!rc)
Okay, yeah it looks better since it seems I missed the fallback
part in migrate_pages_sync().
Let me send the next version to follow your advice, thanks.
The author seems to have disappeared. Should we merge this as-is or
does someone want to take a look at developing a v2?
I've replied your email last week, I'm not sure why it has not
been addressed?
https://lore.kernel.org/linux-mm/20240729021306.398286-1-hsiangkao@xxxxxxxxxxxxxxxxx/
The patch in your queue is already v2? No?
Thanks,
Gao Xiang