On Tue, Jun 29, 2021 at 07:49:24AM +0000, [email protected] 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().