[PATCHES] Convert gencache to dbwrap to enable mutexes
cs at samba.org
Tue Jun 24 13:43:54 MDT 2014
On Sat, Jun 21, 2014 at 10:20:44AM +0200, Stefan (metze) Metzmacher wrote:
> Hi Christof,
> >> While having a look at it I may found a problem with mutexes and ctdb.
> >> /* only pass through specific flags */
> >> tdb_flags &= TDB_SEQNUM|TDB_VOLATILE;
> >> in db_open_ctdb() seems to completely useless (or wrong).
> >> ctdbd_db_attach() is called before and gets the raw value of tdb_flags.
> >> It has only has effect for
> >> db_ctdb->wtdb = tdb_wrap_open(db_ctdb, db_path, hash_size,
> >> lpcfg_tdb_flags(lp_ctx, tdb_flags),
> >> O_RDWR, 0);
> >> So I think we can just remove tdb_flags &= TDB_SEQNUM|TDB_VOLATILE; above
> >> and let lpcfg_tdb_flags() remove TDB_MUTEX_LOCKING when adding TDB_NOMMAP.
> > The two patches at the end of the changeset implement those changes.
> Thanks! I'll try an autobuild on a machine with mutex support next week.
I just discovered another issue. gencache opens databases with CLEAR_IF_FIRST.
That is not allowed with mutexes and it also triggers a warning in dbwrap when
transactions are being used.
The easiest option would be using dbwrap only for gencache_notrans.tdb and
removing CLEAR_IF_FIRST for that database. For gencache.tdb, i am not sure how
to handle the case when tdb_check fails without CLEAR_IF_FIRST.
More information about the samba-technical