[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] Fix blkback/blktap sysfs read bug.



On Wed, 2010-01-20 at 22:13 -0500, Joe Jin wrote:
> On 2010-01-20 18:16, Daniel Stodden wrote:
> > 
> > Hey.
> > 
> > I think reverted a similar patch when moving past 2.6.18 a while ago,
> > but I don't remember the first kernel versions affected right now.
> > 

> > Sysfs may refcount these nodes, blocking xentap_sysfs_delif().
> 
> Would you like to give me some info about of blocking and deadlocks?
> 
> Checked xentap_sysfs_delif() -> sysfs_remove_group() and I did not found
> blocking codes, maybe I lost something?
> 
> Thanks,
> Joe

Hi Joe.

Your patch will work okay on 2.6.18.

But collisions will deadlock after 2.6.23

Found an old stack trace:

[2009-07-08 06:15:08 UTC] INFO: task xb.00021.xvdd:30039 blocked for more than 
120 seconds.
[2009-07-08 06:15:08 UTC] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" 
disables this message.
[2009-07-08 06:15:08 UTC]        c7adfe0c 00000246 00000000 00000000 5b88fd4f 
00000256 c7ade000 c7adfdc8 
[2009-07-08 06:15:08 UTC]        c0107c1b 38c984a4 00000256 c7adfddc ed629578 
ed6293f0 ed629578 c16bdb00 
[2009-07-08 06:15:08 UTC]        00000000 eea0d500 c16bdb34 002dc05a 00000000 
00000005 0024c31c e20a8ff0 
[2009-07-08 06:15:08 UTC] Call Trace:
[2009-07-08 06:15:08 UTC]  [<c0107c1b>] ? local_clock+0x3b/0x90
[2009-07-08 06:15:08 UTC]  [<c0344675>] schedule_timeout+0x75/0xc0
[2009-07-08 06:15:08 UTC]  [<c011ed81>] ? pick_next_task_fair+0x91/0xd0
[2009-07-08 06:15:08 UTC]  [<c03442c9>] wait_for_common+0xa9/0x1c0
[2009-07-08 06:15:08 UTC]  [<c0120d40>] ? default_wake_function+0x0/0x10
[2009-07-08 06:15:08 UTC]  [<c0344472>] wait_for_completion+0x12/0x20
[2009-07-08 06:15:08 UTC]  [<c01cf9e7>] sysfs_addrm_finish+0x1e7/0x230
[2009-07-08 06:15:08 UTC]  [<c01ce2e5>] sysfs_hash_and_remove+0x45/0x70
[2009-07-08 06:15:08 UTC]  [<c01d0adb>] remove_files+0x1b/0x30
[2009-07-08 06:15:08 UTC]  [<c01d0b26>] sysfs_remove_group+0x36/0xc0
[2009-07-08 06:15:08 UTC]  [<c01ae02f>] ? __blkdev_put+0x14f/0x160
[2009-07-08 06:15:08 UTC]  [<c02769fc>] xenvbd_sysfs_delif+0x2c/0x60
[2009-07-08 06:15:08 UTC]  [<c0276a76>] blkback_close+0x46/0x70
[2009-07-08 06:15:08 UTC]  [<c0275d33>] blkif_schedule+0x583/0x5b0
[2009-07-08 06:15:08 UTC]  [<c011ed81>] ? pick_next_task_fair+0x91/0xd0
[2009-07-08 06:15:08 UTC]  [<c013dda0>] ? autoremove_wake_function+0x0/0x50
[2009-07-08 06:15:08 UTC]  [<c02757b0>] ? blkif_schedule+0x0/0x5b0
[2009-07-08 06:15:08 UTC]  [<c013da42>] kthread+0x42/0x70
[2009-07-08 06:15:08 UTC]  [<c013da00>] ? kthread+0x0/0x70
[2009-07-08 06:15:08 UTC]  [<c010561b>] kernel_thread_helper+0x7/0x10

The reason is in sysfs_deactivate(), which will sync callers against any
remaining thread in .show()
- show() hangs on the lock
- the lock holder in sysfs_remove_group(), 
  waiting for show() to complete.

Pardon me -- I'm not entirely sure where/how these patches are currently
submitted and merged. I suppose yours are only for linux-2.6.18.hg, not
e.g. pvops? Then sorry for any confusion.

Daniel



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.