On 11.12.18 09:57, osalvador@xxxxxxx wrote: > On 2018-12-11 09:50, Oscar Salvador wrote: > >> - } else { >> - pr_warn("failed to isolate pfn %lx\n", pfn); >> - dump_page(page, "isolation failed"); >> - put_page(page); >> - /* Because we don't have big zone->lock. we should >> - check this again here. */ >> - if (page_count(page)) { >> - not_managed++; >> - ret = -EBUSY; >> - break; > > I forgot that here we should at least leave the put_page(). > But leave also the dump_page() and the pr_warn(). > > --- a/mm/memory_hotplug.c > +++ b/mm/memory_hotplug.c > @@ -1394,6 +1394,10 @@ do_migrate_range(unsigned long start_pfn, > unsigned long end_pfn) > inc_node_page_state(page, > NR_ISOLATED_ANON + > > page_is_file_cache(page)); > > + } else { > + pr_warn("failed to isolate pfn %lx\n", pfn); > + dump_page(page, "isolation failed"); > + put_page(page); When we're stuck with one problematic page, and we keep looping over that function, won't that print out *way too much* messages? Shouldn't that be rate limited somehow (same applies to other callers in this file) > } > } > if (!list_empty(&source)) { > -- Thanks, David / dhildenb