]>
Commit | Line | Data |
---|---|---|
77a24bd5 AM |
1 | Index: lock/lock.c |
2 | =================================================================== | |
3 | RCS file: /a/CVSROOT/db/lock/lock.c,v | |
4 | retrieving revision 12.61 | |
5 | diff -c -r12.61 lock.c | |
6 | *** lock/lock.c 22 Jul 2008 12:08:53 -0000 12.61 | |
7 | --- lock/lock.c 19 Aug 2008 17:28:24 -0000 | |
8 | *************** | |
9 | *** 1278,1287 **** | |
10 | SH_TAILQ_REMOVE( | |
11 | <->obj_tab[obj_ndx], sh_obj, links, __db_lockobj); | |
12 | if (sh_obj->lockobj.size > sizeof(sh_obj->objdata)) { | |
13 | ! LOCK_REGION_LOCK(env); | |
14 | __env_alloc_free(<->reginfo, | |
15 | SH_DBT_PTR(&sh_obj->lockobj)); | |
16 | ! LOCK_REGION_UNLOCK(env); | |
17 | } | |
18 | SH_TAILQ_INSERT_HEAD( | |
19 | &FREE_OBJS(lt, part_id), sh_obj, links, __db_lockobj); | |
20 | --- 1278,1289 ---- | |
21 | SH_TAILQ_REMOVE( | |
22 | <->obj_tab[obj_ndx], sh_obj, links, __db_lockobj); | |
23 | if (sh_obj->lockobj.size > sizeof(sh_obj->objdata)) { | |
24 | ! if (region->part_t_size != 1) | |
25 | ! LOCK_REGION_LOCK(env); | |
26 | __env_alloc_free(<->reginfo, | |
27 | SH_DBT_PTR(&sh_obj->lockobj)); | |
28 | ! if (region->part_t_size != 1) | |
29 | ! LOCK_REGION_UNLOCK(env); | |
30 | } | |
31 | SH_TAILQ_INSERT_HEAD( | |
32 | &FREE_OBJS(lt, part_id), sh_obj, links, __db_lockobj); | |
33 | *************** | |
34 | *** 1470,1484 **** | |
35 | if (obj->size <= sizeof(sh_obj->objdata)) | |
36 | p = sh_obj->objdata; | |
37 | else { | |
38 | ! LOCK_REGION_LOCK(env); | |
39 | if ((ret = | |
40 | __env_alloc(<->reginfo, obj->size, &p)) != 0) { | |
41 | __db_errx(env, | |
42 | "No space for lock object storage"); | |
43 | ! LOCK_REGION_UNLOCK(env); | |
44 | goto err; | |
45 | } | |
46 | ! LOCK_REGION_UNLOCK(env); | |
47 | } | |
48 | ||
49 | memcpy(p, obj->data, obj->size); | |
50 | --- 1472,1492 ---- | |
51 | if (obj->size <= sizeof(sh_obj->objdata)) | |
52 | p = sh_obj->objdata; | |
53 | else { | |
54 | ! /* | |
55 | ! * If we have only one partition, the region is locked. | |
56 | ! */ | |
57 | ! if (region->part_t_size != 1) | |
58 | ! LOCK_REGION_LOCK(env); | |
59 | if ((ret = | |
60 | __env_alloc(<->reginfo, obj->size, &p)) != 0) { | |
61 | __db_errx(env, | |
62 | "No space for lock object storage"); | |
63 | ! if (region->part_t_size != 1) | |
64 | ! LOCK_REGION_UNLOCK(env); | |
65 | goto err; | |
66 | } | |
67 | ! if (region->part_t_size != 1) | |
68 | ! LOCK_REGION_UNLOCK(env); | |
69 | } | |
70 | ||
71 | memcpy(p, obj->data, obj->size); |