Re: [RFC] Replace the watermark-related union in struct zone with a watermark[] array

David Rientjes
2009-04-27T21:04:20Z

On Mon, 27 Apr 2009, Mel Gorman wrote:

> > I thought the suggestion was for something like
> >
> > #define zone_wmark_min(z) (z->pages_mark[WMARK_MIN])
> > ...
>
> Was it the only suggestion? I thought just replacing the union with an
> array would be an option as well.
>
> The #define approach also requires setter versions like
>
> static inline set_zone_wmark_min(struct zone *z, unsigned long val)
> {
> z->pages_mark[WMARK_MIN] = val;
> }
>
> and you need one of those for each watermark if you are to avoid weirdness like
>
> zone_wmark_min(z) = val;
>
> which looks all wrong.

Agreed, but we only set watermarks in a couple of different locations and
they really have no reason to change otherwise, so I don't think it's
necessary to care too much about how the setter looks.

Adding individual get/set functions for each watermark seems like
overkill.

I personally had no problem with the union struct aliasing the array, I
think ->pages_min, ->pages_low, etc. are already very familiar.