<br><br><div class="gmail_quote">2012/4/10 Daniel Baluta <span dir="ltr"><<a href="mailto:daniel.baluta@gmail.com">daniel.baluta@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
2012/4/10 Daniel Pletea <<a href="mailto:dani.pletea@gmail.com">dani.pletea@gmail.com</a>>:<br>
<div><div class="h5">> Salut,<br>
><br>
> Am un bug: spinlock recursion; pe care nu reusesc sa il rezolv. Nu imi dau<br>
> seama de unde vine. Ce am facut pana acum a fost sa primesc bio-urile de la<br>
> nivel userspace. Am creat cate un bio pentru fiecare operatie de citire si<br>
> i-am dat submit catre PHYSICAL_DISK1, pe sectorul 0 (adica am facut un bio<br>
> de citire dummy pe sectorul 0). Am alocat pagina, am pust event. Am folosit<br>
> workqueues, iar in work_handler, dupa wait_for_completion am avut grija sa<br>
> fac free la tot ce era nevoie. De asemenea nu folosesc nici un spinlock.<br>
><br>
> Am rulat ./test de mai multe ori. Uneori se termina bine, uneori se ajunge<br>
> la acest spinlock recursion.<br>
><br>
> Sa pun si call traceul ? E cam mare.<br>
<br>
</div></div>Bună,<br>
<br>
Da pune și trace-ul.<br>
<br>
thanks,<br>
Daniel.<br>
_______________________________________________<br>
<a href="http://elf.cs.pub.ro/so2/wiki/resurse/lista-discutii" target="_blank">http://elf.cs.pub.ro/so2/wiki/resurse/lista-discutii</a></blockquote><div><br><br>Call Trace:<br> [<c010a8f5>] ? show_regs+0x25/0x30<br>
[<c059d665>] nmi_watchdog_tick+0x1c5/0x1f0<br> [<c059c6fb>] do_nmi+0x13b/0x290<br> [<c059c170>] nmi_stack_correct+0x2f/0x34<br> [<c01200e0>] ? adjust_for_32bit_ctr+0x20/0xb0<br> [<c0123c65>] ? default_send_IPI_mask_logical+0x75/0xf0<br>
[<c0123a60>] default_send_IPI_all+0x90/0xa0<br> [<c01240a7>] arch_trigger_all_cpu_backtrace+0x37/0x70<br> [<c037a59e>] do_raw_spin_lock+0x12e/0x140<br> [<c059ab56>] _raw_spin_lock_irqsave+0x76/0x90<br>
[<c036969a>] ? cfq_idle_slice_timer+0x2a/0xe0<br> [<c036969a>] cfq_idle_slice_timer+0x2a/0xe0<br> [<c015b611>] run_timer_softirq+0x161/0x370<br> [<c015b589>] ? run_timer_softirq+0xd9/0x370<br> [<c0369670>] ? cfq_idle_slice_timer+0x0/0xe0<br>
[<c0152c43>] __do_softirq+0xa3/0x1e0<br> [<c017ddb8>] ? __lock_acquire+0x178/0x500<br> [<c017ddb8>] ? __lock_acquire+0x178/0x500<br> [<c0152dc5>] do_softirq+0x45/0x50<br> [<c01531a5>] irq_exit+0x85/0x90<br>
[<c05a191a>] smp_apic_timer_interrupt+0x5a/0x89<br> [<c059be41>] apic_timer_interrupt+0x31/0x38<br> [<c02100d8>] ? sys_swapoff+0x1e8/0x970<br> [<c0219c36>] ? __slab_alloc+0x116/0x600<br> [<c0165a16>] ? __queue_work+0x36/0x50<br>
[<c021a291>] kmem_cache_alloc_notrace+0xb1/0xc0<br> [<d082319f>] ? send_test_bio+0x1f/0x180 [ssr]<br> [<d082319f>] ? send_test_bio+0x1f/0x180 [ssr]<br> [<d082319f>] send_test_bio+0x1f/0x180 [ssr]<br>
[<c013394f>] ? kmap_atomic_prot+0x4f/0xf0<br> [<c059eb89>] ? sub_preempt_count+0x9/0xb0<br> [<d08233ca>] my_block_request+0xca/0x198 [ssr]<br> [<c0357fde>] __generic_unplug_device+0x2e/0x40<br> [<c0358016>] generic_unplug_device+0x26/0x40<br>
[<c035904c>] blk_unplug+0x2c/0x70<br> [<c03590a0>] blk_backing_dev_unplug+0x10/0x20<br> [<c024e79f>] block_sync_page+0x3f/0x50<br> [<c01e6c67>] sync_page+0x37/0x50<br> [<c01e6c8d>] sync_page_killable+0xd/0x40<br>
[<c0599117>] __wait_on_bit_lock+0x47/0x90<br> [<c013b69b>] ? get_parent_ip+0xb/0x40<br> [<c01e6c80>] ? sync_page_killable+0x0/0x40<br> [<c01e6b6b>] __lock_page_killable+0x7b/0x90<br> [<c0169b70>] ? wake_bit_function+0x0/0x50<br>
[<c01e862e>] generic_file_aio_read+0x47e/0x730<br> [<c0228af4>] do_sync_read+0xa4/0xe0<br> [<c013b69b>] ? get_parent_ip+0xb/0x40<br> [<c0348136>] ? apparmor_file_permission+0x16/0x20<br> [<c031a6a4>] ? security_file_permission+0x14/0x20<br>
[<c0228b94>] ? rw_verify_area+0x64/0xe0<br> [<c059954d>] ? mutex_unlock+0xd/0x10<br> [<c022956f>] vfs_read+0x9f/0x1a0<br> [<c0253d00>] ? block_llseek+0x0/0xf0<br> [<c0228a50>] ? do_sync_read+0x0/0xe0<br>
[<c02296b2>] sys_read+0x42/0x70<br> [<c059b998>] syscall_call+0x7/0xb<br> [<c0590000>] ? cpu_detect+0x6f/0xc3<br> </div></div><br>