tdb_transaction_cancel

Jeremy Allison jra at samba.org
Wed Apr 11 04:55:28 GMT 2007


On Tue, Apr 10, 2007 at 09:52:47PM -0700, Jeremy Allison wrote:
> On Wed, Apr 11, 2007 at 01:41:49PM +1000, tridge at samba.org wrote:
> > 
> > Volker, this seems to have been broken by r21303 in Samba3. Can you
> > remember why you removed the 
> >    tdb->locked[h].count = 0;
> > line in that commit? Without that line the tdb still thinks the tdb is
> > locked after a transaction cancel.
> > 
> > I know the code has to change, as lockrecs is now dynamic, but I think
> > we need something equivalent there. Perhaps we can just deleting the
> > list? You are not allowed to start a transaction when locks are held,
> > so we should be able to wipe the lock list when the transaction is
> > cancelled.
> 
> I think you're correct. Here's a patch - let me know what
> you think.
> 
> Jeremy.

> Index: tdb/common/transaction.c
> ===================================================================
> --- tdb/common/transaction.c	(revision 22131)
> +++ tdb/common/transaction.c	(working copy)
> @@ -523,6 +523,8 @@
>  				   F_UNLCK,F_SETLKW, 0, 1);
>  		}
>  		tdb->num_locks = 0;
> +		tdb->num_lockrecs = 0;
> +		SAFE_FREE(tdb->lockrecs);
>  	}
>  
>  	/* restore the normal io methods */


Jerry,

	FYI: Fixing this is a show-stopper for 3.0.25
as the tdb transaction code is now used in the printing,
secrets, registry and share tdb's.

Jeremy.


More information about the samba-technical mailing list