1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
/** BEGIN COPYRIGHT BLOCK
* Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
* Copyright (C) 2005 Red Hat, Inc.
* All rights reserved.
* END COPYRIGHT BLOCK **/
/* cleanup.c - cleans up ldbm backend */
#include "back-ldbm.h"
int ldbm_back_cleanup( Slapi_PBlock *pb )
{
struct ldbminfo *li;
Slapi_Backend *be;
LDAPDebug( LDAP_DEBUG_TRACE, "ldbm backend cleaning up\n", 0, 0, 0 );
slapi_pblock_get( pb, SLAPI_PLUGIN_PRIVATE, &li );
slapi_pblock_get( pb, SLAPI_BACKEND, &be );
if (be->be_state != BE_STATE_STOPPED &&
be->be_state != BE_STATE_DELETED)
{
LDAPDebug( LDAP_DEBUG_TRACE,
"ldbm_back_cleanup: warning - backend is in a wrong state - %d\n",
be->be_state, 0, 0 );
return 0;
}
PR_Lock (be->be_state_lock);
if (be->be_state != BE_STATE_STOPPED &&
be->be_state != BE_STATE_DELETED)
{
LDAPDebug( LDAP_DEBUG_TRACE,
"ldbm_back_cleanup: warning - backend is in a wrong state - %d\n",
be->be_state, 0, 0 );
PR_Unlock (be->be_state_lock);
return 0;
}
dblayer_terminate( li );
/* JCM I tried adding this to tidy up memory on shutdown. */
/* JCM But, the result was very messy. */
/* JCM objset_delete(&li->li_instance_set); */
be->be_state = BE_STATE_CLEANED;
PR_Unlock (be->be_state_lock);
return 0;
}
|