Patches for DB version 2.7.1

  1. Recno databases lock the root during any write, so nested tests will hang.
  2. Apply the following patch to the db-2.7.1 test/recd006.tcl file.  
    *** test/recd006.tcl.orig	Sat Jan 16 20:56:02 1999
    --- test/recd006.tcl	Sat Jan 16 20:56:02 1999
    ***************
    *** 3,15 ****
      # Copyright (c) 1996, 1997, 1998
      #	Sleepycat Software.  All rights reserved.
      #
    ! #	@(#)recd006.tcl	8.2 (Sleepycat) 1/2/99
      #
      # Recovery Test 6.
      # Test nested transactions.
      proc recd006 { method {select 0} } {
      global kvals
      	set method [convert_method $method]
      	puts "Recd006: $method nested transactions"
      
      	# Get global declarations since tcl doesn't support
    --- 3,19 ----
      # Copyright (c) 1996, 1997, 1998
      #	Sleepycat Software.  All rights reserved.
      #
    ! #	@(#)recd006.tcl	8.3 (Sleepycat) 1/16/99
      #
      # Recovery Test 6.
      # Test nested transactions.
      proc recd006 { method {select 0} } {
      global kvals
      	set method [convert_method $method]
    + 	if { [string compare $method DB_RECNO] == 0 } {
    + 		puts "Recd006 skipping for method RECNO"
    + 		return
    + 	}
      	puts "Recd006: $method nested transactions"
      
      	# Get global declarations since tcl doesn't support
    

  3. Locks waiting on an aborted lock were not correctly promoted at the time of the abort.
  4. Apply the following patch to the db-2.7.1 lock/lock.c file.  
    *** lock/lock.c.orig	Fri Jan 15 10:33:56 1999
    --- lock/lock.c	Fri Jan 22 15:23:13 1999
    ***************
    *** 609,614 ****
    --- 609,620 ----
      
      		LOCK_LOCKREGION(lt);
      		if (newl-^gt;status != DB_LSTAT_PENDING) {
    + 			/*
    + 			 * If this lock errored due to a deadlock, then
    + 			 * we have waiters that require promotion.
    + 			 */
    + 			if (newl-^gt;status == DB_LSTAT_ABORTED)
    + 				(void)__lock_promote(lt, sh_obj);
      			/* Return to free list. */
      			__lock_checklocker(lt, newl, 0);
      			SH_TAILQ_INSERT_HEAD(&lrp-^gt;free_locks, newl, links,