> +static inline unsigned long pgmap_geometry(struct dev_pagemap *pgmap)
> +{
> +     if (!pgmap || !pgmap->geometry)
> +             return PAGE_SIZE;
> +     return pgmap->geometry;

Nit, but avoiding all the negations would make this a little easier to
read:

        if (pgmap && pgmap->geometry)
                return pgmap->geometry;
        return PAGE_SIZE

> +     if (pgmap_geometry(pgmap) > PAGE_SIZE)
> +             percpu_ref_get_many(pgmap->ref, (pfn_end(pgmap, range_id)
> +                     - pfn_first(pgmap, range_id)) / 
> pgmap_pfn_geometry(pgmap));
> +     else
> +             percpu_ref_get_many(pgmap->ref, pfn_end(pgmap, range_id)
> +                             - pfn_first(pgmap, range_id));

This is a horrible undreadable mess, which is trivially fixed by a
strategically used local variable:

        refs = pfn_end(pgmap, range_id) - pfn_first(pgmap, range_id);
        if (pgmap_geometry(pgmap) > PAGE_SIZE)
                refs /= pgmap_pfn_geometry(pgmap);
        percpu_ref_get_many(pgmap->ref, refs);


Reply via email to