Raphael Hertzog wrote...

> The proper approach is to enhance your testing tools to use "eatmydata"
> to really disable all fsync() and not only those of dpkg.

Not a good idea. eatmydata introduces new bugs, #667965 is one that
hit me. It causes some pain in multiarch installations, at least a
lot of noise from ldd. And I cannot think of a good reason why the
actual build scripts should do fsync, at least to a degree where this
visibly degrades performance.

Therefore, having something eatmydata-ish inside dpkg was really
helpful in corner cases like buildd is one.


Now, to propose a workaround for build daemons:

Create a small program that wraps the dpkg call into eatmydata. I did
so and called it dpkg-eatmydata. Written in C for performance reasons,
it's still just

    #!/bin/sh
    /usr/bin/eatmydata /usr/bin/dpkg $@

A configuration sniplet for apt

    $ cat /etc/apt/apt.conf.d/dpkg-eatmydata 
    Dir::Bin::dpkg "/usr/bin/dpkg-eatmydata";

will cause the build dependency resolver to call that
eatmydata-wrapped dpkg, resulting in the desired speed gain.

Downside: Some binaries called from the maintainer scripts still might
emit ldd warnings. I can live with that.

> --force-unsafe-io has not been meant for those use case at all, it was
> meant for some users to gain back some performance lost on supplementary
> fsync() that have been added to dpkg. It was not meant to disable all
> fsync() and in particular not those on the database.

Since that option doesn't really do what it promises, in my humble
opinion it should be retired some day.

    Christoph

Attachment: signature.asc
Description: Digital signature

Reply via email to