[PATCH 08/11] xfsprogs: replace obsolete memalign with posix_memalign

Jan Tulak jtulak at redhat.com
Tue Aug 18 03:33:49 CDT 2015


On Tue, Aug 18, 2015 at 10:20 AM, Dave Chinner <david at fromorbit.com> wrote:

> On Tue, Aug 18, 2015 at 09:04:24AM +0200, Jan Tulak wrote:
> > I thought about it. However, with memalign from malloc marked obsolete
> > (and with posix_memalign having guaranteed alignment restrictions [1]), I
> > saw it better
> > to use the posix variant everywhere.
>
> Putting a sane wrapper around an nasty library function is just
> fine. The memalign wrapper makes sense from this perspective - even
> gcc can't tell if variables passed to posix_memalign are correctly
> initialised or not, whereas no such problems exist for memalign().
>
> > I could make a wrapper simulating the old memalign behaviour, but I don't
> > think it would make sense.
>
> I think it makes more sense than using posix_memalign() everywhere
> and then ignoring the return variable that tells you it failed...
>
> > I searched for this, but didn't find any reasonable answer:
> > How long can be things in standard libraries marked obsolete before
> > removing?
>
> With a wrapper, we don't care.
>
> > [1] man memalign:
> >        On many systems there are alignment restrictions, for example, on
> buf-
> >        fers  used  for  direct  block  device  I/O.  POSIX specifies the
> path-
> >        conf(path,_PC_REC_XFER_ALIGN) call that tells what alignment is
> needed.
> >        Now one can use posix_memalign() to satisfy this requirement.
> >
> >        posix_memalign()  verifies  that  alignment  matches  the
> requirements
> >        detailed above.  memalign() may not check that the  alignment
> argument
> >        is correct.
>
> Yes, you can get it wrong with memalign. But we don't, because we
> follow the rules for DIO buffer alignment and set it correctly.
> Being able to directly control the alignment of the memory buffer is
> a reason for using memalign() over posix_memalign(), not the other
> way around.
>

So a wrapper used on all platforms is an acceptable solution? All right,
this explanation makes sense. I will change it that way. The only question
I have now is whether to use posix_memalign on every platform, or whether to
make it platform_memalign and use the old memalign inside for Linux.

Cheers,
Jan

-- 
Jan Tulak
jtulak at redhat.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://oss.sgi.com/pipermail/xfs/attachments/20150818/10c9c300/attachment.html>


More information about the xfs mailing list