On Thu 25-04-19 17:33:04, Dan Williams wrote:
On Thu, Apr 25, 2019 at 12:32 AM Jan Kara <jack(a)suse.cz>
> On Wed 24-04-19 11:13:48, Dan Williams wrote:
> > On Wed, Apr 24, 2019 at 10:38 AM Matthew Wilcox <willy(a)infradead.org>
> > >
> > > On Wed, Apr 24, 2019 at 10:13:15AM -0700, Dan Williams wrote:
> > > > I think unaligned addresses have always been passed to
> > > > vmf_insert_pfn_pmd(), but nothing cared until this patch. I *think*
> > > > the only change needed is the following, thoughts?
> > > >
> > > > diff --git a/fs/dax.c b/fs/dax.c
> > > > index ca0671d55aa6..82aee9a87efa 100644
> > > > --- a/fs/dax.c
> > > > +++ b/fs/dax.c
> > > > @@ -1560,7 +1560,7 @@ static vm_fault_t dax_iomap_pmd_fault(struct
> > > > vm_fault *vmf, pfn_t *pfnp,
> > > > }
> > > >
> > > > trace_dax_pmd_insert_mapping(inode, vmf, PMD_SIZE,
> > > > - result = vmf_insert_pfn_pmd(vma, vmf->address,
> > > > + result = vmf_insert_pfn_pmd(vma, pmd_addr,
> > > > write);
> > >
> > > We also call vmf_insert_pfn_pmd() in dax_insert_pfn_mkwrite() -- does
> > > that need to change too?
> > It wasn't clear to me that it was a problem. I think that one already
> > happens to be pmd-aligned.
> Why would it need to be? The address is taken from vmf->address and that's
> set up in __handle_mm_fault() like .address = address & PAGE_MASK. So I
> don't see anything forcing PMD alignment of the virtual address...
True. So now I'm wondering if the masking should be done internal to
the routine. Given it's prefixed vmf_ it seems to imply the api is
prepared to take raw 'struct vm_fault' parameters. I think I'll go
that route unless someone sees a reason to require the caller to
handle this responsibility.
Yeah, that sounds good to me. Thanks for fixing this.
Jan Kara <jack(a)suse.com>
SUSE Labs, CR