We do not promise API compatibility for filters between stable
releases of nbdkit, however, we should at least ensure that when we do
break API, that we refuse to load a filter compiled against one
version of nbdkit with another server running a different API. A
single bump once per stable release is good enough (rather than once
per API change).
We did this correctly for commits b0ce4411/cb309687/df0cc21d (bumping
to API version 2 for the combined changes between v1.2 and v1.4), but
failed to do so for f184fdc3 (affecting v1.10), 4ca66f70 (affecting
v1.12), or 5ee7bd29/ee61d232 (affecting the upcoming v1.14). So do it
retroacively now, as well as backporting intermediate bumps to
affected stable branches.
Signed-off-by: Eric Blake <eblake(a)redhat.com>
---
I'm pushing this soon.
include/nbdkit-filter.h | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/include/nbdkit-filter.h b/include/nbdkit-filter.h
index 94f17789..1ebd1cb6 100644
--- a/include/nbdkit-filter.h
+++ b/include/nbdkit-filter.h
@@ -43,7 +43,7 @@
extern "C" {
#endif
-#define NBDKIT_FILTER_API_VERSION 2
+#define NBDKIT_FILTER_API_VERSION 5
struct nbdkit_extent {
uint64_t offset;
@@ -100,8 +100,10 @@ struct nbdkit_filter {
*/
int _api_version;
- /* Because there is no ABI guarantee, new fields may be added
- * where logically appropriate. */
+ /* Because there is no ABI guarantee, new fields may be added where
+ * logically appropriate, as long as we correctly bump
+ * NBDKIT_FILTER_API_VERSION once per stable release.
+ */
const char *name;
const char *longname;
const char *version;
--
2.21.0