- ovsdb-tool -vANY:console:emer \
- create /etc/openvswitch/conf.db \
- /usr/share/openvswitch/vswitch.ovsschema
- else
+ ovsdb-tool -vANY:console:emer create $conf_file $schema_file
+ elif test "X`ovsdb-tool needs-conversion $conf_file $schema_file`" != Xno; then
+ # Back up the old version.
+ version=`ovsdb-tool db-version "$conf_file"`
+ cksum=`ovsdb-tool db-cksum "$conf_file" | awk '{print $1}'`
+ cp "$conf_file" "$conf_file.backup$version-$cksum"
+
+ # Compact database. This is important if the old schema did not
+ # enable garbage collection (i.e. if it did not have any tables
+ # with "isRoot": true) but the new schema does. In that situation
+ # the old database may contain a transaction that creates a record
+ # followed by a transaction that creates the first use of the
+ # record. Replaying that series of transactions against the new
+ # database schema (as "convert" does) would cause the record to be
+ # dropped by the first transaction, then the second transaction
+ # would cause a referential integrity failure (for a strong
+ # reference).
+ ovsdb-tool -vANY:console:emer compact $conf_file
+