Re: [PATCH 2/2] block: pass a phys_addr_t to get_max_segment_size

Christoph Hellwig
2024-07-07T06:40:41Z

On Sat, Jul 06, 2024 at 10:37:11AM +0000, Chaitanya Kulkarni wrote:
> > - return min(mask - offset, (unsigned long)lim->max_segment_size - 1) + 1;
> > + return min_t(unsigned long, len,
> > + min(lim->seg_boundary_mask - (lim->seg_boundary_mask & paddr),
> > + (unsigned long)lim->max_segment_size - 1) + 1);
> > }
> >
>
> Looks good, is it possible to re-write last
> return min_t(..., ..., min(..., ...)) statement something like totally
> untested in [1] ?

> paddr_seg_boundry =
> lim->seg_boundary_mask - (lim->seg_boundary_mask & paddr);
> /*
> * Prevent an overflow if mask = ULONG_MAX and offset = 0 by
> adding 1
> * after having calculated the minimum.
> */
> paddr_max_seg_allowed_len = min(paddr_seg_boundry,
> (unsigned long)lim->max_segment_size -
> 1) + 1;
> return min_t(unsigned long, paddr_len, paddr_max_seg_allowed_len);
> }

What would be the point of that? It is way harder to read and longer.
But except for that we probably could.

>
>
---end quoted text---