diff --git a/Makefile b/Makefile
index 52e515b..d27ecaf 100644
--- a/Makefile
+++ b/Makefile
@@ -186,7 +186,7 @@
 T_ZIPF_PROGS = t/fio-genzipf
 
 T_AXMAP_OBJS = t/axmap.o
-T_AXMAP_OBJS += lib/lfsr.o lib/axmap.o
+T_AXMAP_OBJS += lib/lfsr.o lib/axmap.o gettime.o mutex.o t/log.o t/debug.o
 T_AXMAP_PROGS = t/axmap
 
 T_LFSR_TEST_OBJS = t/lfsr-test.o
diff --git a/lib/axmap.c b/lib/axmap.c
index 5b8cb30..e847a38 100644
--- a/lib/axmap.c
+++ b/lib/axmap.c
@@ -23,6 +23,7 @@
 #include "../arch/arch.h"
 #include "axmap.h"
 #include "../smalloc.h"
+#include "../mutex.h"
 #include "../minmax.h"
 
 #if BITS_PER_LONG == 64
@@ -45,6 +46,7 @@
 };
 
 struct axmap {
+	struct fio_mutex lock;
 	unsigned int nr_levels;
 	struct axmap_level *levels;
 	uint64_t first_free;
@@ -63,6 +65,8 @@
 {
 	int i;
 
+	fio_mutex_down(&axmap->lock);
+
 	for (i = 0; i < axmap->nr_levels; i++) {
 		struct axmap_level *al = &axmap->levels[i];
 
@@ -70,6 +74,7 @@
 	}
 
 	axmap->first_free = 0;
+	fio_mutex_up(&axmap->lock);
 }
 
 void axmap_free(struct axmap *axmap)
@@ -83,6 +88,7 @@
 		sfree(axmap->levels[i].map);
 
 	sfree(axmap->levels);
+	__fio_mutex_remove(&axmap->lock);
 	sfree(axmap);
 }
 
@@ -95,6 +101,8 @@
 	if (!axmap)
 		return NULL;
 
+	__fio_mutex_init(&axmap->lock, FIO_MUTEX_UNLOCKED);
+
 	levels = 1;
 	i = (nr_bits + BLOCKS_PER_UNIT - 1) >> UNIT_SHIFT;
 	while (i > 1) {
@@ -126,6 +134,8 @@
 			sfree(axmap->levels[i].map);
 
 	sfree(axmap->levels);
+	__fio_mutex_remove(&axmap->lock);
+	sfree(axmap);
 	return NULL;
 }
 
@@ -287,7 +297,9 @@
 {
 	struct axmap_set_data data = { .nr_bits = 1, };
 
+	fio_mutex_down(&axmap->lock);
 	__axmap_set(axmap, bit_nr, &data);
+	fio_mutex_up(&axmap->lock);
 }
 
 unsigned int axmap_set_nr(struct axmap *axmap, uint64_t bit_nr, unsigned int nr_bits)
@@ -323,8 +335,14 @@
 
 int axmap_isset(struct axmap *axmap, uint64_t bit_nr)
 {
-	if (bit_nr <= axmap->nr_bits)
-		return axmap_handler_topdown(axmap, bit_nr, axmap_isset_fn, NULL);
+	if (bit_nr <= axmap->nr_bits) {
+		int ret;
+
+		fio_mutex_down(&axmap->lock);
+		ret = axmap_handler_topdown(axmap, bit_nr, axmap_isset_fn, NULL);
+		fio_mutex_up(&axmap->lock);
+		return ret;
+	}
 
 	return 0;
 }
@@ -371,11 +389,17 @@
 
 uint64_t axmap_first_free(struct axmap *axmap)
 {
+	uint64_t ret;
+
 	if (firstfree_valid(axmap))
 		return axmap->first_free;
 
-	axmap->first_free = axmap_find_first_free(axmap, axmap->nr_levels - 1, 0);
-	return axmap->first_free;
+	fio_mutex_down(&axmap->lock);
+	ret = axmap_find_first_free(axmap, axmap->nr_levels - 1, 0);
+	axmap->first_free = ret;
+	fio_mutex_up(&axmap->lock);
+
+	return ret;
 }
 
 struct axmap_next_free_data {
@@ -411,11 +435,17 @@
 	struct axmap_next_free_data data = { .level = -1U, .bit = bit_nr, };
 	uint64_t ret;
 
-	if (firstfree_valid(axmap) && bit_nr < axmap->first_free)
-		return axmap->first_free;
+	fio_mutex_down(&axmap->lock);
 
-	if (!axmap_handler(axmap, bit_nr, axmap_next_free_fn, &data))
-		return axmap_first_free(axmap);
+	if (firstfree_valid(axmap) && bit_nr < axmap->first_free) {
+		ret = axmap->first_free;
+		goto done;
+	}
+
+	if (!axmap_handler(axmap, bit_nr, axmap_next_free_fn, &data)) {
+		ret = axmap_first_free(axmap);
+		goto done;
+	}
 
 	assert(data.level != -1U);
 
@@ -425,8 +455,12 @@
 	 * find the first free one, the map is practically full.
 	 */
 	ret = axmap_find_first_free(axmap, data.level, data.offset);
-	if (ret != -1ULL)
+	if (ret != -1ULL) {
+done:
+		fio_mutex_up(&axmap->lock);
 		return ret;
+	}
 
-	return axmap_first_free(axmap);
+	ret = axmap_first_free(axmap);
+	goto done;
 }
diff --git a/t/axmap.c b/t/axmap.c
index e32ff98..cc078aa 100644
--- a/t/axmap.c
+++ b/t/axmap.c
@@ -5,6 +5,7 @@
 #include <unistd.h>
 #include <inttypes.h>
 
+#include "../mutex.h"
 #include "../lib/lfsr.h"
 #include "../lib/axmap.h"
 
