Re: [PATCH] mm, soft-offline: convert parameter to pfn

From: Naoya Horiguchi
Date: Wed Oct 16 2019 - 19:53:01 EST


On Wed, Oct 16, 2019 at 10:57:57AM +0200, David Hildenbrand wrote:
> On 16.10.19 10:54, Naoya Horiguchi wrote:
> >On Wed, Oct 16, 2019 at 10:34:52AM +0200, David Hildenbrand wrote:
> >>On 16.10.19 10:27, Naoya Horiguchi wrote:
> >>>On Wed, Oct 16, 2019 at 09:56:19AM +0200, David Hildenbrand wrote:
> >>>>On 16.10.19 09:09, Naoya Horiguchi wrote:
> >>>>>Hi,
> >>>>>
> >>>>>I wrote a simple cleanup for parameter of soft_offline_page(),
> >>>>>based on thread https://lkml.org/lkml/2019/10/11/57.
> >>>>>
> >>>>>I know that we need more cleanup on hwpoison-inject, but I think
> >>>>>that will be mentioned in re-write patchset Oscar is preparing now.
> >>>>>So let me shared only this part as a separate one now.
> >>>...
> >>>>
> >>>>I think you should rebase that patch on linux-next (where the
> >>>>pfn_to_online_page() check is in place). I assume you'll want to move the
> >>>>pfn_to_online_page() check into soft_offline_page() then as well?
> >>>
> >>>I rebased to next-20191016. And yes, we will move pfn_to_online_page()
> >>>into soft offline code. It seems that we can also move pfn_valid(),
> >>>but is simply moving like below good enough for you?
> >>
> >>At least I can't am the patch to current next/master (due to
> >>pfn_to_online_page()).
>
> Could also be that my "git am" skills failed as the mail was not a
> proper patch itself :)

Sorry for the inconvenience, my company email system breaks original
message by introducing quoted-printable format ('=20' or '=3D').
Most mail client usually handles it but git-am doesn't.
I give up using it and send via smtp.gmail.com.

> >@@ -1877,11 +1877,17 @@ static int soft_offline_free_page(struct page *page)
> > * This is not a 100% solution for all memory, but tries to be
> > * ``good enough'' for the majority of memory.
> > */
> >-int soft_offline_page(struct page *page, int flags)
> >+int soft_offline_page(unsigned long pfn, int flags)
> > {
> > int ret;
> >- unsigned long pfn = page_to_pfn(page);
> >+ struct page *page;
> >+ if (!pfn_valid(pfn))
> >+ return -ENXIO;
> >+ /* Only online pages can be soft-offlined (esp., not ZONE_DEVICE). */
> >+ page = pfn_to_online_page(pfn);
> >+ if (!page)
> >+ return -EIO;
> > if (is_zone_device_page(page)) {
>
> -> this is now no longer possible! So you can drop the whole if
> (is_zone_device....) case

OK, thanks. I updated it.

Thanks,
Naoya Horiguchi
---