Hi Team,
Here's a hungtask issue occurs in the dm-snapshot scenario,
reproduce by concurrent run vgchange --refresh and dmsetup -f remove vg-snap.

            vgchange                   dmsetup                dmsetup
     table_load (load snapshot)
                             table_load snapshot to error
                                    remove snapshot
     suspend origin/cow/real
table_load(snapshot already remove)
take type_lock and issue io to cow in snapshot_ctr
                                                      table_load (wait 
type_lock)

[root@localhost ~]# ps aux | grep D
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root     1818066  0.0  0.0      0     0 ?        D    Nov04   0:03 
[kworker/3:2+ksnaphd]
root     2972729  0.5  2.1  87256 73032 pts/1    D<L  20:17   0:00 vgchange 
--refresh vg
root     2972761  0.0  0.3  23464 10636 pts/1    D    20:17   0:00 dmsetup -f 
remove vg-snap

Snapshot has remove after suspend origin/cow/real during vgchange --refresh, 
and then load
snapshot will take type_lock and issue io to cow in snapshot_ctr, the io 
process by kworker
but cow has suspend lead to hungtask in kernel.

Does we have some way to fix it?
Thanks

Reply via email to