Flexible I/O Tester development
 help / color / mirror / Atom feed
* [PATCH] axmap: fix deadlock
@ 2015-01-03 14:21 Ming Lei
  2015-01-03 14:37 ` Sedat Dilek
  2015-01-03 18:11 ` Jens Axboe
  0 siblings, 2 replies; 8+ messages in thread
From: Ming Lei @ 2015-01-03 14:21 UTC (permalink / raw)
  To: Jens Axboe, fio; +Cc: Sedat Dilek, Ming Lei

axmap_first_free() is always called with axmap->lock held,
so needn't to acquire the lock inside the function.

The deadlock is introduced in commit 12bde3697fc230d7a(axmap:
ensure we lock down the maps for shared access).

Given axmap_first_free() is only called inside lib/axmap.c,
this patch declares the function as static. In the future,
if external users need the function, axmap lock can be
considered at that time.

Reported-by: Sedat Dilek <sedat.dilek@gmail.com>
Signed-off-by: Ming Lei <ming.lei@canonical.com>
---
 lib/axmap.c |    4 +---
 lib/axmap.h |    1 -
 2 files changed, 1 insertion(+), 4 deletions(-)

diff --git a/lib/axmap.c b/lib/axmap.c
index e847a38..8247fc1 100644
--- a/lib/axmap.c
+++ b/lib/axmap.c
@@ -387,17 +387,15 @@ static uint64_t axmap_find_first_free(struct axmap *axmap, unsigned int level,
 	return (uint64_t) -1ULL;
 }
 
-uint64_t axmap_first_free(struct axmap *axmap)
+static uint64_t axmap_first_free(struct axmap *axmap)
 {
 	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;
-	fio_mutex_up(&axmap->lock);
 
 	return ret;
 }
diff --git a/lib/axmap.h b/lib/axmap.h
index edfeba8..3705a1d 100644
--- a/lib/axmap.h
+++ b/lib/axmap.h
@@ -11,7 +11,6 @@ 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);
-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);
 
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2015-01-04  8:09 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-01-03 14:21 [PATCH] axmap: fix deadlock Ming Lei
2015-01-03 14:37 ` Sedat Dilek
2015-01-03 18:11 ` Jens Axboe
2015-01-03 19:39   ` Sedat Dilek
2015-01-03 20:13     ` Jens Axboe
2015-01-03 23:51       ` Sedat Dilek
2015-01-04  2:48         ` Jens Axboe
2015-01-04  8:09           ` Sedat Dilek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox