Re: [PATCH v5 5/9] mm: Introduce mf_dax_kill_procs() for fsdax case

From: Matthew Wilcox
Date: Tue Jun 29 2021 - 07:47:19 EST


On Tue, Jun 29, 2021 at 07:49:24AM +0000, ruansy.fnst@xxxxxxxxxxx wrote:
> > But I think this is unnecessary; why not just pass the PFN into mf_dax_kill_procs?
>
> Because the mf_dax_kill_procs() is called in filesystem recovery function, which is at the end of the RMAP routine. And the PFN has been translated to disk offset in pmem driver in order to do RMAP search in filesystem. So, if we have to pass it, every function in this routine needs to add an argument for this PFN. I was hoping I can avoid passing PFN through the whole stack with the help of this dax_load_pfn().

OK, I think you need to create:

struct memory_failure {
phys_addr_t start;
phys_addr_t end;
unsigned long flags;
};

(a memory failure might not be an entire page, so working in pfns isn't
the best approach)

Then that can be passed to ->memory_failure() and then deeper to
->notify_failure(), and finally into xfs_corrupt_helper().