We have to remember to free the condvar, so add a __fio_mutex_remove()
for cases that init a mutex inside an smalloc'ed region with
__fio_mutex_init().
Signed-off-by: Jens Axboe <axboe@fb.com>
ff = fio_hash_find(hash);
if (ff) {
ff = fio_hash_find(hash);
if (ff) {
+ int refs = --ff->references;
+ __fio_mutex_remove(&ff->lock);
#include "fio_time.h"
#include "gettime.h"
#include "fio_time.h"
#include "gettime.h"
-void fio_mutex_remove(struct fio_mutex *mutex)
+void __fio_mutex_remove(struct fio_mutex *mutex)
{
assert(mutex->magic == FIO_MUTEX_MAGIC);
pthread_cond_destroy(&mutex->cond);
{
assert(mutex->magic == FIO_MUTEX_MAGIC);
pthread_cond_destroy(&mutex->cond);
+}
+
+void fio_mutex_remove(struct fio_mutex *mutex)
+{
+ __fio_mutex_remove(mutex);
munmap((void *) mutex, sizeof(*mutex));
}
munmap((void *) mutex, sizeof(*mutex));
}
extern int __fio_mutex_init(struct fio_mutex *, int);
extern struct fio_mutex *fio_mutex_init(int);
extern int __fio_mutex_init(struct fio_mutex *, int);
extern struct fio_mutex *fio_mutex_init(int);
+extern void __fio_mutex_remove(struct fio_mutex *);
extern void fio_mutex_remove(struct fio_mutex *);
extern void fio_mutex_up(struct fio_mutex *);
extern void fio_mutex_down(struct fio_mutex *);
extern void fio_mutex_remove(struct fio_mutex *);
extern void fio_mutex_up(struct fio_mutex *);
extern void fio_mutex_down(struct fio_mutex *);
*datap = data;
sfree(rep->data);
*datap = data;
sfree(rep->data);
+ __fio_mutex_remove(&rep->lock);