Avoid that the tur_devt() call from libcheck_check() hangs. Fixes: commit 873be9fef222 ("libmultipath/checkers/tur: Serialize tur_checker_context.devt accesses") Signed-off-by: Bart Van Assche <bart.vanassche@xxxxxxxxxxx> --- libmultipath/checkers/tur.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libmultipath/checkers/tur.c b/libmultipath/checkers/tur.c index a7a70f6..81206e4 100644 --- a/libmultipath/checkers/tur.c +++ b/libmultipath/checkers/tur.c @@ -64,6 +64,7 @@ static const char *tur_devt(char *devt_buf, int size, int libcheck_init (struct checker * c) { struct tur_checker_context *ct; + pthread_mutexattr_t attr; ct = malloc(sizeof(struct tur_checker_context)); if (!ct) @@ -74,7 +75,10 @@ int libcheck_init (struct checker * c) ct->fd = -1; ct->holders = 1; pthread_cond_init_mono(&ct->active); - pthread_mutex_init(&ct->lock, NULL); + pthread_mutexattr_init(&attr); + pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); + pthread_mutex_init(&ct->lock, &attr); + pthread_mutexattr_destroy(&attr); pthread_spin_init(&ct->hldr_lock, PTHREAD_PROCESS_PRIVATE); c->context = ct; -- 2.10.0 -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel