Control: tags -1 - patch Control: severity -1 serious On Mon, Mar 19, 2018 at 02:19:40PM -0700, Steve Langasek wrote: > Package: thin-provisioning-tools > Version: 0.7.4-2 > Severity: important > Tags: patch > User: ubuntu-de...@lists.ubuntu.com > Usertags: origin-ubuntu bionic ubuntu-patch
> Hi Bastian, > In Ubuntu, thin-provisioning-tools 0.7.4-2 fails to build on ppc64el with an > ICE in the compiler while building the test suite. An strace implies that > this is because your LD_PRELOAD wrapper has interposed open(), but not > openat(). > If I extend the wrapper as in the attached patch to cover openat(), the > package now builds. > This build failure is probably not reproducible yet in Debian, but I expect > it will be once Debian moves to glibc 2.17. Hmm, sorry, several corrections: - the correct glibc version number in 2.27, not 2.17. - Debian also has 2.27 now, so the build failure probably is reproducible in Debian. - I managed to accidentally create and test this patch against thin-provisioning-tools 0.6.1-4 only, the last version that successfully built in Ubuntu. The patch solves the build failure there... but does not solve the build failure in 0.7.4, for reasons that currently elude me. > I briefly looked at whether your custom LD_PRELOAD wrapper could be replaced > with libeatmydata, but I see that libeatmydata only handles O_SYNC and > O_DSYNC, not O_DIRECT. Do you think it would make sense to ask libeatmydata > to filter O_DIRECT as well, to reduce the need for maintaining this separate > .so? > > -- > Steve Langasek Give me a lever long enough and a Free OS > Debian Developer to set it on, and I can move the world. > Ubuntu Developer http://www.debian.org/ > slanga...@ubuntu.com vor...@debian.org > diff -Nru thin-provisioning-tools-0.7.4/debian/control > thin-provisioning-tools-0.7.4/debian/control > --- thin-provisioning-tools-0.7.4/debian/control 2017-11-01 > 14:50:39.000000000 -0700 > +++ thin-provisioning-tools-0.7.4/debian/control 2018-03-19 > 14:10:28.000000000 -0700 > @@ -1,8 +1,7 @@ > Source: thin-provisioning-tools > Section: admin > Priority: optional > -Maintainer: Ubuntu Developers <ubuntu-devel-disc...@lists.ubuntu.com> > -XSBC-Original-Maintainer: Debian LVM Team > <pkg-lvm-maintain...@lists.alioth.debian.org> > +Maintainer: Debian LVM Team <pkg-lvm-maintain...@lists.alioth.debian.org> > Uploaders: Bastian Blank <wa...@debian.org> > Build-Depends: > debhelper (>= 9), > diff -Nru thin-provisioning-tools-0.7.4/debian/unit-tests/preload.c > thin-provisioning-tools-0.7.4/debian/unit-tests/preload.c > --- thin-provisioning-tools-0.7.4/debian/unit-tests/preload.c 2017-11-01 > 14:50:39.000000000 -0700 > +++ thin-provisioning-tools-0.7.4/debian/unit-tests/preload.c 2018-03-19 > 14:10:17.000000000 -0700 > @@ -4,13 +4,17 @@ > #include <stdarg.h> > #include <stdlib.h> > > -static int (*orig_open)(const char *pathname, int flags, int mode); > +static int (*orig_open)(const char *pathname, int flags, mode_t mode); > +static int (*orig_openat)(int dirfd, const char *pathname, int flags, mode_t > mode); > > __attribute__((constructor)) > static void constructor() { > orig_open = dlsym(RTLD_NEXT, "open"); > if (!orig_open) > abort(); > + orig_openat = dlsym(RTLD_NEXT, "openat"); > + if (!orig_openat) > + abort(); > } > > int open(const char *file, int oflag, ...) { > @@ -51,3 +55,34 @@ > int __open64_2(const char *file, int oflag) { > return orig_open(file, (oflag & ~O_DIRECT) | O_LARGEFILE, 0); > } > + > +int openat(int dirfd, const char *file, int oflag, ...) { > + int mode = 0; > + > + oflag &= ~O_DIRECT; > + > + if (oflag & O_CREAT) { > + va_list arg; > + va_start(arg, oflag); > + mode = va_arg(arg, int); > + va_end(arg); > + } > + > + return orig_openat(dirfd, file, oflag, mode); > +} > + > +int openat64(int dirfd, const char *file, int oflag, ...) { > + int mode = 0; > + > + oflag |= O_LARGEFILE; > + oflag &= ~O_DIRECT; > + > + if (oflag & O_CREAT) { > + va_list arg; > + va_start(arg, oflag); > + mode = va_arg(arg, int); > + va_end(arg); > + } > + > + return orig_openat(dirfd, file, oflag, mode); > +} -- Steve Langasek Give me a lever long enough and a Free OS Debian Developer to set it on, and I can move the world. Ubuntu Developer http://www.debian.org/ slanga...@ubuntu.com vor...@debian.org
signature.asc
Description: PGP signature