[stgt] tgtd stuck when trying to delete a target
FUJITA Tomonori
fujita.tomonori at lab.ntt.co.jp
Wed Oct 8 03:14:56 CEST 2008
On Tue, 07 Oct 2008 17:33:10 +0200
Doron Shoham <dorons at Voltaire.COM> wrote:
> Hi,
>
> tgtd runs into a deadlock when trying to delete a target.
>
> >From gdb:
>
> #0 0x0000003c064074e5 in pthread_join () from /lib64/libpthread.so.0
> #1 0x000000000041b5ad in bs_thread_close (info=0x10651fd8) at bs.c:272
> #2 0x0000000000412697 in tgt_device_destroy (tid=<value optimized out>, lun=1, force=1) at target.c:587
> #3 0x00000000004128b4 in tgt_target_destroy (lld_no=0, tid=1) at target.c:1731
> #4 0x000000000040ff93 in tgt_mgmt (mtask=0x1064d580) at mgmt.c:85
> #5 0x0000000000410263 in mtask_handler (fd=11, events=<value optimized out>, data=<value optimized out>) at mgmt.c:441
> #6 0x000000000040f3c6 in main (argc=<value optimized out>, argv=<value optimized out>) at tgtd.c:236
>
> The deadlock occurs in pthread_join () called by bs_thread_close (at bs.c line 272).
>
> I believe that it is caused by commit: "handle pthread_create failure in backing store pthread code"
> (d97cd33a7244aed71d1b618ff3e6f826479d6163)
>
> Tomo - can you please check it out?
Thanks,
I messed up bs_thread_close() in
commit 25ef48caa7bb2ed152b421c4f291d9bc44b91d53
Author: FUJITA Tomonori <fujita.tomonori at lab.ntt.co.jp>
Date: Sat Oct 4 19:09:51 2008 +0900
ssc: use only one background thread
It's the easiest way to avoid complicated locking for metadata access.
Signed-off-by: FUJITA Tomonori <fujita.tomonori at lab.ntt.co.jp>
Sorry about that. The attached patch works for me. Can you try?
diff --git a/usr/bs.c b/usr/bs.c
index e20189f..542ef55 100644
--- a/usr/bs.c
+++ b/usr/bs.c
@@ -268,7 +268,8 @@ void bs_thread_close(struct bs_thread_info *info)
info->stop = 1;
pthread_cond_broadcast(&info->pending_cond);
- for (i = 0; i < info->worker_thread[i]; i++)
+ for (i = 0; info->worker_thread[i] &&
+ i < ARRAY_SIZE(info->worker_thread); i++)
pthread_join(info->worker_thread[i], NULL);
pthread_cond_destroy(&info->finished_cond);
--
To unsubscribe from this list: send the line "unsubscribe stgt" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
More information about the stgt
mailing list