ovsdb: Check for changed columns only once per transaction commit.
authorBen Pfaff <blp@nicira.com>
Fri, 12 Mar 2010 01:14:31 +0000 (17:14 -0800)
committerBen Pfaff <blp@nicira.com>
Wed, 17 Mar 2010 21:24:56 +0000 (14:24 -0700)
commit17d18afbfd65619e830d551cb002441519cde059
treebf7bd57ee1a8a9f59dffb5824b66c97c34c7f345
parentc7d85e0df048a9fda6e1a111cd74e5a82e6b3b91
ovsdb: Check for changed columns only once per transaction commit.

Until now, each part of a transaction commit that is interested in whether
a column's value has changed has had to do a comparison of the old and new
values itself.  There can be several interested parties per commit
(generally one for file storage and one for each remove OVSDB connection),
so this seems like too much redundancy.  This commit adds a bitmap
to struct ovsdb_txn_row that tracks whether a column's value has actually
changed, to reduce this overhead.

As a convenient side effect of doing these checks up front, it then
becomes easily possible to drop txn_rows (and txn_tables and entire txns)
that become no-ops.  (This probably fixes bug #2400, which reported that
some no-ops actually report updates over monitors.)
lib/bitmap.h
ovsdb/file.c
ovsdb/jsonrpc-server.c
ovsdb/transaction.c
ovsdb/transaction.h