<div dir="ltr"><div>Looks like commit 05a8c47b9be8a6b8ffc091eab461fece9d40dcd0<br></div><div>(tests: Test all calls through multiple layers of filters and a plugin.)</div><div>introduced an issue.</div><div><br></div><div>$ git clean -dxf && autoreconf -i && ./configure && make</div><div>...</div><div>in.Tpo -c -o test_layers_plugin_la-test-layers-plugin.lo `test -f 'test-layers-plugin.c' || echo './'`test-layers-plugin.c</div><div>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</div><div>test-layers-plugin.c: In function ‘test_layers_plugin_can_fua’:</div><div>test-layers-plugin.c:137:10: error: ‘NBDKIT_FUA_NATIVE’ undeclared (first use in this function); did you mean ‘NBDKIT_CXX_LANG_C’?</div><div>   return NBDKIT_FUA_NATIVE;</div><div>          ^~~~~~~~~~~~~~~~~</div><div>          NBDKIT_CXX_LANG_C</div><div>test-layers-plugin.c:137:10: note: each undeclared identifier is reported only once for each function it appears in</div><div>test-layers-plugin.c: At top level:</div><div>test-layers-plugin.c:197:4: error: ‘struct nbdkit_plugin’ has no member named ‘can_zero’; did you mean ‘can_trim’?</div><div>   .can_zero          = test_layers_plugin_can_zero,</div><div>    ^~~~~~~~</div><div>    can_trim</div><div>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]</div><div>   .can_zero          = test_layers_plugin_can_zero,</div><div>                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~</div><div>test-layers-plugin.c:197:24: note: (near initialization for ‘plugin.pread’)</div><div>test-layers-plugin.c:198:4: error: ‘struct nbdkit_plugin’ has no member named ‘can_fua’; did you mean ‘can_flush’?</div><div>   .can_fua           = test_layers_plugin_can_fua,</div><div>    ^~~~~~~</div><div>    can_flush</div><div>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]</div><div>   .can_fua           = test_layers_plugin_can_fua,</div><div>                        ^~~~~~~~~~~~~~~~~~~~~~~~~~</div><div>test-layers-plugin.c:198:24: note: (near initialization for ‘plugin.pwrite’)</div><div>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]</div><div>   .pread             = test_layers_plugin_pread,</div><div>                        ^~~~~~~~~~~~~~~~~~~~~~~~</div><div>test-layers-plugin.c:199:24: note: (near initialization for ‘plugin.pread’)</div><div>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]</div><div>   .pwrite            = test_layers_plugin_pwrite,</div><div>                        ^~~~~~~~~~~~~~~~~~~~~~~~~</div><div>test-layers-plugin.c:200:24: note: (near initialization for ‘plugin.pwrite’)</div><div>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]</div><div>   .flush             = test_layers_plugin_flush,</div><div>                        ^~~~~~~~~~~~~~~~~~~~~~~~</div><div>test-layers-plugin.c:201:24: note: (near initialization for ‘plugin.flush’)</div><div>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]</div><div>   .trim              = test_layers_plugin_trim,</div><div>                        ^~~~~~~~~~~~~~~~~~~~~~~</div><div>test-layers-plugin.c:202:24: note: (near initialization for ‘plugin.trim’)</div><div>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]</div><div>   .zero              = test_layers_plugin_zero,</div><div>                        ^~~~~~~~~~~~~~~~~~~~~~~</div><div>test-layers-plugin.c:203:24: note: (near initialization for ‘plugin.zero’)</div><div>make[2]: *** [Makefile:1847: test_layers_plugin_la-test-layers-plugin.lo] Error 1</div><div><br></div><div><br></div><div>Nir</div><div><br></div></div>