diff --git a/smalloc.c b/smalloc.c
index 0a86c43..8eb0f2a 100644
--- a/smalloc.c
+++ b/smalloc.c
@@ -11,10 +11,9 @@
 #include <sys/types.h>
 #include <limits.h>
 
-#include "mutex.h"
 #include "arch/arch.h"
+#include "spinlock.h"
 
-#define MP_SAFE			/* define to make thread safe */
 #define SMALLOC_REDZONE		/* define to detect memory corruption */
 
 #define SMALLOC_BPB	32	/* block size, bytes-per-bit in bitmap */
@@ -30,7 +29,7 @@
 unsigned int smalloc_pool_size = INITIAL_SIZE;
 
 struct pool {
-	struct fio_mutex *lock;			/* protects this pool */
+	struct fio_spinlock *lock;
 	void *map;				/* map of blocks */
 	unsigned int *bitmap;			/* blocks free/busy map */
 	unsigned int free_blocks;		/* free blocks */
@@ -51,42 +50,36 @@
 static struct pool mp[MAX_POOLS];
 static unsigned int nr_pools;
 static unsigned int last_pool;
-static struct fio_mutex *lock;
+static struct fio_spinlock *slock;
 
 static inline void pool_lock(struct pool *pool)
 {
-	if (pool->lock)
-		fio_mutex_down(pool->lock);
+	fio_spin_lock(pool->lock);
 }
 
 static inline void pool_unlock(struct pool *pool)
 {
-	if (pool->lock)
-		fio_mutex_up(pool->lock);
+	fio_spin_unlock(pool->lock);
 }
 
 static inline void global_read_lock(void)
 {
-	if (lock)
-		fio_mutex_down_read(lock);
+	fio_spin_lock(slock);
 }
 
 static inline void global_read_unlock(void)
 {
-	if (lock)
-		fio_mutex_up_read(lock);
+	fio_spin_unlock(slock);
 }
 
 static inline void global_write_lock(void)
 {
-	if (lock)
-		fio_mutex_down_write(lock);
+	fio_spin_lock(slock);
 }
 
 static inline void global_write_unlock(void)
 {
-	if (lock)
-		fio_mutex_up_write(lock);
+	fio_spin_unlock(slock);
 }
 
 static inline int ptr_valid(struct pool *pool, void *ptr)
@@ -218,11 +211,9 @@
 	pool->map = ptr;
 	pool->bitmap = (void *) ptr + (pool->nr_blocks * SMALLOC_BPL);
 
-#ifdef MP_SAFE
-	pool->lock = fio_mutex_init(1);
+	pool->lock = fio_spinlock_init();
 	if (!pool->lock)
 		goto out_unlink;
-#endif
 
 	pool->fd = fd;
 
@@ -245,9 +236,8 @@
 {
 	int ret;
 
-#ifdef MP_SAFE
-	lock = fio_mutex_rw_init();
-#endif
+	slock = fio_spinlock_init();
+	assert(slock);
 	ret = add_pool(&mp[0], INITIAL_SIZE);
 	assert(!ret);
 }
@@ -257,9 +247,7 @@
 	unlink(pool->file);
 	close(pool->fd);
 	munmap(pool->map, pool->mmap_size);
-
-	if (pool->lock)
-		fio_mutex_remove(pool->lock);
+	fio_spinlock_remove(pool->lock);
 }
 
 void scleanup(void)
@@ -269,8 +257,7 @@
 	for (i = 0; i < nr_pools; i++)
 		cleanup_pool(&mp[i]);
 
-	if (lock)
-		fio_mutex_remove(lock);
+	fio_spinlock_remove(slock);
 }
 
 #ifdef SMALLOC_REDZONE
