> +static pgoff_t dax_entry_start(pgoff_t index, void *entry)
> +{
> +     if (RADIX_DAX_TYPE(entry) == RADIX_DAX_PMD)
> +             index &= (PMD_MASK >> PAGE_SHIFT);
> +     return index;
> +}
> +
>  static wait_queue_head_t *dax_entry_waitqueue(struct address_space *mapping,
> -                                           pgoff_t index)
> +                                           pgoff_t entry_start)
>  {
> -     unsigned long hash = hash_long((unsigned long)mapping ^ index,
> +     unsigned long hash = hash_long((unsigned long)mapping ^ entry_start,
>                                      DAX_WAIT_TABLE_BITS);
>       return wait_table + hash;
>  }

All callers of dax_entry_waitqueue need to calculate entry_start
using this new dax_entry_start helper.  Either we should move the
call to dax_entry_start into this helper.  Or at least use local
variables for in the callers as both of them also fill out a
wait_exceptional_entry_queue structure with it.  Or do both by
letting dax_entry_waitqueue fill out that structure as well.

Reply via email to