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().

Reply via email to