Re: [PATCH] mm/migrate: fix deadlock in migrate_pages_batch() on large folios

From: Gao Xiang
Date: Fri Aug 16 2024 - 01:17:47 EST




On 2024/8/16 13:12, Gao Xiang wrote:

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?

Really confused about this, since the comment above was about v1.
and v2 is already sent (in July 29) and in -next for two weeks
with

Reviewed-by: "Huang, Ying" <ying.huang@xxxxxxxxx>
Acked-by: David Hildenbrand <david@xxxxxxxxxx>

What else I need to do to resolve this already resolved comment
so that I could enable large folios without deadlocks anymore?

Thanks,
Gao Xiang


Thanks,
Gao Xiang