[PATCH] lib/tdb: locking cleanup
Rusty Russell
rusty at rustcorp.com.au
Thu Aug 27 23:13:23 MDT 2009
On Fri, 28 Aug 2009 01:25:47 pm tridge at samba.org wrote:
> Hi Rusty,
>
> > -int tdb_brlock(struct tdb_context *tdb, tdb_off_t offset,
> > - int rw_type, int lck_type, int probe, size_t len)
> > +int tdb_brlock(struct tdb_context *tdb,
> > + int rw_type, tdb_off_t offset, size_t len,
> > + enum tdb_lock_flags flags)
> > {
> > - struct flock fl;
> > int ret;
> >
> > if (tdb->flags & TDB_NOLOCK) {
> > return 0;
> > }
> >
> > + if (flags & TDB_LOCK_MARK_ONLY) {
> > + return 0;
> > + }
>
> Using an enum as a bitmask seems a bit strange. It's valid C, but
> anyone reading it will think that the enum takes on the set of values
> listed in the enum declaration, and may do something like a switch
> statement with the various cases. Why use an enum when you mean it to
> be masked like this?
Habit, probably. I was originally going to ditch "mark" altogether, but
that seems a while off.
I'll change to #defines.
> btw, the only user I know of the 'mark' locks is ctdb. Have you or
> Ronnie tested this patch with ctdb?
No. Which brings us to a discussion of unit tests. I have some unit tests
for tdb (in ccan), and I'd really like to have them in samba, esp. for the lib
dir. Higher-level testing is great, but unit tests are better for isolating
bugs and testing nasty corners.
The ccan unit tests sit in a test/ operate as so:
1) C files starting with "api" are compiled and linked against the library,
then executed. These should work on all future versions of the lib.
2) C files starting with "run" are compiled and run (usually, they explicitly
#include the C files from .. so they can test static funcs and override
internal stuff. Works really well in practice).
3) C files starting with "compile_ok" or "compile_fail" are simply compiled
and linked. Not sure we need these.
4) All other C files are linked into everything, for helper routines.
I use libtap, which creates simple one-line-per-test output (the TAP output
format is standardized see testanything.org)
If people think this is a good idea, I'm happy to whip up a patch...
Thanks!
Rusty.
More information about the samba-technical
mailing list