projects
/
fio.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
1a4a019
)
Revert "axmap: fix deadlock"
author
Jens Axboe
<axboe@fb.com>
Sat, 3 Jan 2015 20:40:16 +0000
(13:40 -0700)
committer
Jens Axboe
<axboe@fb.com>
Sat, 3 Jan 2015 20:40:16 +0000
(13:40 -0700)
This reverts commit
d555a23db84364ab942361a719a4379605bdbc41
.
lib/axmap.c
patch
|
blob
|
blame
|
history
lib/axmap.h
patch
|
blob
|
blame
|
history
diff --git
a/lib/axmap.c
b/lib/axmap.c
index 8247fc1ae5d75f8aa452f2018bf248a6cc3a36a7..e847a387bc6b8ab984ca4ca4162183ef37b6dd0f 100644
(file)
--- a/
lib/axmap.c
+++ b/
lib/axmap.c
@@
-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;
}
diff --git
a/lib/axmap.h
b/lib/axmap.h
index 3705a1db754514c516511714783435cb54e3f86b..edfeba80d854463eb0ada915d22bf493d7df4cb9 100644
(file)
--- a/
lib/axmap.h
+++ b/
lib/axmap.h
@@
-11,6
+11,7
@@
void axmap_clear(struct axmap *axmap, uint64_t bit_nr);
void axmap_set(struct axmap *axmap, uint64_t bit_nr);
unsigned int axmap_set_nr(struct axmap *axmap, uint64_t bit_nr, unsigned int nr_bits);
int axmap_isset(struct axmap *axmap, uint64_t bit_nr);
void axmap_set(struct axmap *axmap, uint64_t bit_nr);
unsigned int axmap_set_nr(struct axmap *axmap, uint64_t bit_nr, unsigned int nr_bits);
int axmap_isset(struct axmap *axmap, uint64_t bit_nr);
+uint64_t axmap_first_free(struct axmap *axmap);
uint64_t axmap_next_free(struct axmap *axmap, uint64_t bit_nr);
void axmap_reset(struct axmap *axmap);
uint64_t axmap_next_free(struct axmap *axmap, uint64_t bit_nr);
void axmap_reset(struct axmap *axmap);