hungtask in dm code raised by concurrent run refresh and remove command
"wangzhiqiang (Q)" <[email protected]> Tue, 5 Nov 2024 20:27:05 +0800
| Newsgroups | gmane.linux.lvm.general |
|---|---|
| Message-ID | <[email protected]> |
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