Remove COMPAT_TABLE_VERSION.
authorAndre Noll <maan@tuebingen.mpg.de>
Tue, 18 Apr 2017 18:23:30 +0000 (20:23 +0200)
committerAndre Noll <maan@tuebingen.mpg.de>
Wed, 17 Jun 2020 20:30:31 +0000 (22:30 +0200)
The compatibility version concept was introduced eight years ago in
commit (62d228ec), and was never needed. In fact, COMPAT_TABLE_VERSION
has always been zero so far. This commit gets rid of it.

Given a library version and the on-disk table version, we can still
tell whether the table can be opened by comparing the MIN_TABLE_VERSION
and the CURRENT_TABLE_VERSION numbers of the library against the
value stored in the table (i.e., the CURRENT_TABLE_VERSION value of
the library that created the table).

osl.c
osl_core.h

diff --git a/osl.c b/osl.c
index e31811b..c5f70ff 100644 (file)
--- a/osl.c
+++ b/osl.c
@@ -349,7 +349,7 @@ err:
 int read_table_desc(struct osl_object *map, struct osl_table_description *desc)
 {
        char *buf = map->data;
-       uint8_t version, compat_version, create_version;
+       uint8_t table_version;
        uint16_t header_size;
        int ret, i;
        unsigned offset;
@@ -359,20 +359,11 @@ int read_table_desc(struct osl_object *map, struct osl_table_description *desc)
                return -E_OSL_SHORT_TABLE;
        if (strncmp(buf + IDX_OSL_MAGIC, OSL_MAGIC, strlen(OSL_MAGIC)))
                return -E_OSL_NO_MAGIC;
-       version = read_u8(buf + IDX_VERSION);
-       /*
-        * The on-disk version consists of two version numbers: the
-        * create_version (low 4 bits) is the CURRENT_TABLE_VERSION version
-        * number of the library that created the table, and compat_version
-        * (high 4 bits) tells us the lowest version of the library that can
-        * still read this table.
-        */
-       create_version = version & 0xf;
-       compat_version = version >> 4;
-       INFO_LOG("create_version: %u, compat_version: %u\n", create_version,
-               compat_version);
-       if (create_version < MIN_TABLE_VERSION /* table too old */
-               || compat_version > CURRENT_TABLE_VERSION) /* libosl too old */
+       table_version = read_u8(buf + IDX_VERSION);
+       INFO_LOG("osl versions (table/min/current): %u/%u/%u\n",
+               table_version, MIN_TABLE_VERSION, CURRENT_TABLE_VERSION);
+       if (table_version < MIN_TABLE_VERSION /* table too old */
+               || table_version > CURRENT_TABLE_VERSION) /* libosl too old */
                return -E_OSL_VERSION_MISMATCH;
        desc->flags = read_u8(buf + IDX_TABLE_FLAGS);
        desc->num_columns = read_u16(buf + IDX_NUM_COLUMNS);
@@ -507,8 +498,7 @@ static int create_table_index(struct osl_table *t)
        sprintf(buf + IDX_OSL_MAGIC, "%s", OSL_MAGIC);
        write_u8(buf + IDX_TABLE_FLAGS, t->desc->flags);
        write_u8(buf + IDX_DIRTY_FLAG, 0);
-       write_u8(buf + IDX_VERSION, CURRENT_TABLE_VERSION
-               + (COMPAT_TABLE_VERSION << 4));
+       write_u8(buf + IDX_VERSION, CURRENT_TABLE_VERSION);
        write_u16(buf + IDX_NUM_COLUMNS, t->num_mapped_columns + t->num_disk_storage_columns);
        write_u16(buf + IDX_HEADER_SIZE, t->index_header_size);
        offset = IDX_COLUMN_DESCRIPTIONS;
index 6046d8c..9f31181 100644 (file)
@@ -196,13 +196,6 @@ _static_inline_ size_t index_column_description_size(const char *name)
  */
 #define CURRENT_TABLE_VERSION 1
 
-/*
- * The lowest library version that is able to use tables of version
- * CURRENT_TABLE_VERSION. Also written to the index of new tables. If
- * compat_version(table) > current_version(lib) the table can not be opened.
- */
-#define COMPAT_TABLE_VERSION 0
-
 /*
  * The lowest table version this library understands. On open, if
  * current_version(table) < min_version(lib) the osl_open_table() call