Looks like commit 05a8c47b9be8a6b8ffc091eab461fece9d40dcd0 (tests: Test all calls through multiple layers of filters and a plugin.) introduced an issue. $ git clean -dxf && autoreconf -i && ./configure && make ... in.Tpo -c -o test_layers_plugin_la-test-layers-plugin.lo `test -f 'test-layers-plugin.c' || echo './'`test-layers-plugin.c libtool: compile: gcc -DHAVE_CONFIG_H -I. -I.. -g -O2 -MT test_layers_plugin_la-test-layers-plugin.lo -MD -MP -MF .deps/test_layers_plugin_la-test-layers-plugin.Tpo -c test-layers-plugin.c -fPIC -DPIC -o .libs/test_layers_plugin_la-test-layers-plugin.o test-layers-plugin.c: In function ‘test_layers_plugin_can_fua’: test-layers-plugin.c:137:10: error: ‘NBDKIT_FUA_NATIVE’ undeclared (first use in this function); did you mean ‘NBDKIT_CXX_LANG_C’? return NBDKIT_FUA_NATIVE; ^~~~~~~~~~~~~~~~~ NBDKIT_CXX_LANG_C test-layers-plugin.c:137:10: note: each undeclared identifier is reported only once for each function it appears in test-layers-plugin.c: At top level: test-layers-plugin.c:197:4: error: ‘struct nbdkit_plugin’ has no member named ‘can_zero’; did you mean ‘can_trim’? .can_zero = test_layers_plugin_can_zero, ^~~~~~~~ can_trim test-layers-plugin.c:197:24: warning: initialization of ‘int (*)(void *, void *, uint32_t, uint64_t)’ {aka ‘int (*)(void *, void *, unsigned int, long unsigned int)’} from incompatible pointer type ‘int (*)(void *)’ [-Wincompatible-pointer-types] .can_zero = test_layers_plugin_can_zero, ^~~~~~~~~~~~~~~~~~~~~~~~~~~ test-layers-plugin.c:197:24: note: (near initialization for ‘plugin.pread’) test-layers-plugin.c:198:4: error: ‘struct nbdkit_plugin’ has no member named ‘can_fua’; did you mean ‘can_flush’? .can_fua = test_layers_plugin_can_fua, ^~~~~~~ can_flush test-layers-plugin.c:198:24: warning: initialization of ‘int (*)(void *, const void *, uint32_t, uint64_t)’ {aka ‘int (*)(void *, const void *, unsigned int, long unsigned int)’} from incompatible pointer type ‘int (*)(void *)’ [-Wincompatible-pointer-types] .can_fua = test_layers_plugin_can_fua, ^~~~~~~~~~~~~~~~~~~~~~~~~~ test-layers-plugin.c:198:24: note: (near initialization for ‘plugin.pwrite’) test-layers-plugin.c:199:24: warning: initialization of ‘int (*)(void *, void *, uint32_t, uint64_t)’ {aka ‘int (*)(void *, void *, unsigned int, long unsigned int)’} from incompatible pointer type ‘int (*)(void *, void *, uint32_t, uint64_t, uint32_t)’ {aka ‘int (*)(void *, void *, unsigned int, long unsigned int, unsigned int)’} [-Wincompatible-pointer-types] .pread = test_layers_plugin_pread, ^~~~~~~~~~~~~~~~~~~~~~~~ test-layers-plugin.c:199:24: note: (near initialization for ‘plugin.pread’) test-layers-plugin.c:200:24: warning: initialization of ‘int (*)(void *, const void *, uint32_t, uint64_t)’ {aka ‘int (*)(void *, const void *, unsigned int, long unsigned int)’} from incompatible pointer type ‘int (*)(void *, const void *, uint32_t, uint64_t, uint32_t)’ {aka ‘int (*)(void *, const void *, unsigned int, long unsigned int, unsigned int)’} [-Wincompatible-pointer-types] .pwrite = test_layers_plugin_pwrite, ^~~~~~~~~~~~~~~~~~~~~~~~~ test-layers-plugin.c:200:24: note: (near initialization for ‘plugin.pwrite’) test-layers-plugin.c:201:24: warning: initialization of ‘int (*)(void *)’ from incompatible pointer type ‘int (*)(void *, uint32_t)’ {aka ‘int (*)(void *, unsigned int)’} [-Wincompatible-pointer-types] .flush = test_layers_plugin_flush, ^~~~~~~~~~~~~~~~~~~~~~~~ test-layers-plugin.c:201:24: note: (near initialization for ‘plugin.flush’) test-layers-plugin.c:202:24: warning: initialization of ‘int (*)(void *, uint32_t, uint64_t)’ {aka ‘int (*)(void *, unsigned int, long unsigned int)’} from incompatible pointer type ‘int (*)(void *, uint32_t, uint64_t, uint32_t)’ {aka ‘int (*)(void *, unsigned int, long unsigned int, unsigned int)’} [-Wincompatible-pointer-types] .trim = test_layers_plugin_trim, ^~~~~~~~~~~~~~~~~~~~~~~ test-layers-plugin.c:202:24: note: (near initialization for ‘plugin.trim’) test-layers-plugin.c:203:24: warning: initialization of ‘int (*)(void *, uint32_t, uint64_t, int)’ {aka ‘int (*)(void *, unsigned int, long unsigned int, int)’} from incompatible pointer type ‘int (*)(void *, uint32_t, uint64_t, uint32_t)’ {aka ‘int (*)(void *, unsigned int, long unsigned int, unsigned int)’} [-Wincompatible-pointer-types] .zero = test_layers_plugin_zero, ^~~~~~~~~~~~~~~~~~~~~~~ test-layers-plugin.c:203:24: note: (near initialization for ‘plugin.zero’) make[2]: *** [Makefile:1847: test_layers_plugin_la-test-layers-plugin.lo] Error 1 Nir