Revert "axmap: fix deadlock"
[fio.git] / lib / axmap.c
index 8247fc1ae5d75f8aa452f2018bf248a6cc3a36a7..e847a387bc6b8ab984ca4ca4162183ef37b6dd0f 100644 (file)
@@ -387,15 +387,17 @@ static uint64_t axmap_find_first_free(struct axmap *axmap, unsigned int level,
        return (uint64_t) -1ULL;
 }
 
        return (uint64_t) -1ULL;
 }
 
-static uint64_t axmap_first_free(struct axmap *axmap)
+uint64_t axmap_first_free(struct axmap *axmap)
 {
        uint64_t ret;
 
        if (firstfree_valid(axmap))
                return axmap->first_free;
 
 {
        uint64_t ret;
 
        if (firstfree_valid(axmap))
                return axmap->first_free;
 
+       fio_mutex_down(&axmap->lock);
        ret = axmap_find_first_free(axmap, axmap->nr_levels - 1, 0);
        axmap->first_free = ret;
        ret = axmap_find_first_free(axmap, axmap->nr_levels - 1, 0);
        axmap->first_free = ret;
+       fio_mutex_up(&axmap->lock);
 
        return ret;
 }
 
        return ret;
 }