Blame SOURCES/patch.4.7.25.2

721b43
Index: lock/lock.c
721b43
===================================================================
721b43
RCS file: /a/CVSROOT/db/lock/lock.c,v
721b43
retrieving revision 12.61
721b43
diff -c -r12.61 lock.c
721b43
*** lock/lock.c	22 Jul 2008 12:08:53 -0000	12.61
721b43
--- lock/lock.c	19 Aug 2008 17:28:24 -0000
721b43
***************
721b43
*** 1278,1287 ****
721b43
  		SH_TAILQ_REMOVE(
721b43
  		    &lt->obj_tab[obj_ndx], sh_obj, links, __db_lockobj);
721b43
  		if (sh_obj->lockobj.size > sizeof(sh_obj->objdata)) {
721b43
! 			LOCK_REGION_LOCK(env);
721b43
  			__env_alloc_free(&lt->reginfo,
721b43
  			    SH_DBT_PTR(&sh_obj->lockobj));
721b43
! 			LOCK_REGION_UNLOCK(env);
721b43
  		}
721b43
  		SH_TAILQ_INSERT_HEAD(
721b43
  		    &FREE_OBJS(lt, part_id), sh_obj, links, __db_lockobj);
721b43
--- 1278,1289 ----
721b43
  		SH_TAILQ_REMOVE(
721b43
  		    &lt->obj_tab[obj_ndx], sh_obj, links, __db_lockobj);
721b43
  		if (sh_obj->lockobj.size > sizeof(sh_obj->objdata)) {
721b43
! 			if (region->part_t_size != 1)
721b43
! 				LOCK_REGION_LOCK(env);
721b43
  			__env_alloc_free(&lt->reginfo,
721b43
  			    SH_DBT_PTR(&sh_obj->lockobj));
721b43
! 			if (region->part_t_size != 1)
721b43
! 				LOCK_REGION_UNLOCK(env);
721b43
  		}
721b43
  		SH_TAILQ_INSERT_HEAD(
721b43
  		    &FREE_OBJS(lt, part_id), sh_obj, links, __db_lockobj);
721b43
***************
721b43
*** 1470,1484 ****
721b43
  		if (obj->size <= sizeof(sh_obj->objdata))
721b43
  			p = sh_obj->objdata;
721b43
  		else {
721b43
! 			LOCK_REGION_LOCK(env);
721b43
  			if ((ret =
721b43
  			    __env_alloc(&lt->reginfo, obj->size, &p)) != 0) {
721b43
  				__db_errx(env,
721b43
  				    "No space for lock object storage");
721b43
! 				LOCK_REGION_UNLOCK(env);
721b43
  				goto err;
721b43
  			}
721b43
! 			LOCK_REGION_UNLOCK(env);
721b43
  		}
721b43
  
721b43
  		memcpy(p, obj->data, obj->size);
721b43
--- 1472,1492 ----
721b43
  		if (obj->size <= sizeof(sh_obj->objdata))
721b43
  			p = sh_obj->objdata;
721b43
  		else {
721b43
! 			/*
721b43
! 			 * If we have only one partition, the region is locked.
721b43
! 			 */
721b43
! 			if (region->part_t_size != 1)
721b43
! 				LOCK_REGION_LOCK(env);
721b43
  			if ((ret =
721b43
  			    __env_alloc(&lt->reginfo, obj->size, &p)) != 0) {
721b43
  				__db_errx(env,
721b43
  				    "No space for lock object storage");
721b43
! 				if (region->part_t_size != 1)
721b43
! 					LOCK_REGION_UNLOCK(env);
721b43
  				goto err;
721b43
  			}
721b43
! 			if (region->part_t_size != 1)
721b43
! 				LOCK_REGION_UNLOCK(env);
721b43
  		}
721b43
  
721b43
  		memcpy(p, obj->data, obj->size);