[I didn't really go through other patch but this one caught my eyes just because of the similar request proposed yesterday] On Wed 23-05-18 17:11:50, David Hildenbrand wrote: [...] > @@ -1686,6 +1686,10 @@ static int __ref __offline_pages(unsigned long start_pfn, > pfn = scan_movable_pages(start_pfn, end_pfn); > if (pfn) { /* We have movable pages */ > ret = do_migrate_range(pfn, end_pfn); > + if (ret && !retry_forever) { > + ret = -EBUSY; > + goto failed_removal; > + } > goto repeat; > } > Btw. this will not work in practice. Even a single temporary pin on a page will fail way too easily. If you really need to control this then make it a retry counter with default -1UL. We really do need a better error reporting from do_migrate_range and distinguish transient from permanent failures. In general we shouldn't even get here for pages which are not migrateable... -- Michal Hocko SUSE Labs