mirror of
https://git.openldap.org/openldap/openldap.git
synced 2024-12-21 03:10:25 +08:00
Don't malloc the free_pgs list every time
This commit is contained in:
parent
9f0b00b467
commit
e3b668e84a
@ -316,6 +316,7 @@ struct MDB_env {
|
|||||||
MDB_db *me_dbs[2];
|
MDB_db *me_dbs[2];
|
||||||
MDB_oldpages *me_pghead;
|
MDB_oldpages *me_pghead;
|
||||||
pthread_key_t me_txkey; /* thread-key for readers */
|
pthread_key_t me_txkey; /* thread-key for readers */
|
||||||
|
pgno_t me_free_pgs[MDB_IDL_UM_SIZE];
|
||||||
};
|
};
|
||||||
|
|
||||||
#define NODESIZE offsetof(MDB_node, mn_data)
|
#define NODESIZE offsetof(MDB_node, mn_data)
|
||||||
@ -610,12 +611,7 @@ mdb_txn_begin(MDB_env *env, int rdonly, MDB_txn **ret)
|
|||||||
|
|
||||||
pthread_mutex_lock(&env->me_txns->mt_wmutex);
|
pthread_mutex_lock(&env->me_txns->mt_wmutex);
|
||||||
env->me_txns->mt_txnid++;
|
env->me_txns->mt_txnid++;
|
||||||
txn->mt_free_pgs = malloc(MDB_IDL_UM_SIZEOF);
|
txn->mt_free_pgs = env->me_free_pgs;
|
||||||
if (txn->mt_free_pgs == NULL) {
|
|
||||||
free(txn->mt_u.dirty_queue);
|
|
||||||
free(txn);
|
|
||||||
return ENOMEM;
|
|
||||||
}
|
|
||||||
txn->mt_free_pgs[0] = 0;
|
txn->mt_free_pgs[0] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -703,7 +699,6 @@ mdb_txn_abort(MDB_txn *txn)
|
|||||||
STAILQ_REMOVE_HEAD(txn->mt_u.dirty_queue, h.md_next);
|
STAILQ_REMOVE_HEAD(txn->mt_u.dirty_queue, h.md_next);
|
||||||
free(dp);
|
free(dp);
|
||||||
}
|
}
|
||||||
free(txn->mt_free_pgs);
|
|
||||||
free(txn->mt_u.dirty_queue);
|
free(txn->mt_u.dirty_queue);
|
||||||
|
|
||||||
while ((mop = txn->mt_env->me_pghead)) {
|
while ((mop = txn->mt_env->me_pghead)) {
|
||||||
@ -917,7 +912,6 @@ mdb_txn_commit(MDB_txn *txn)
|
|||||||
}
|
}
|
||||||
|
|
||||||
pthread_mutex_unlock(&env->me_txns->mt_wmutex);
|
pthread_mutex_unlock(&env->me_txns->mt_wmutex);
|
||||||
free(txn->mt_free_pgs);
|
|
||||||
free(txn->mt_u.dirty_queue);
|
free(txn->mt_u.dirty_queue);
|
||||||
free(txn);
|
free(txn);
|
||||||
txn = NULL;
|
txn = NULL;
|
||||||
|
Loading…
Reference in New Issue
Block a user