1 つのプロセスが s_umount を保持し _sb_start_write でフリーズが解除するのを待ち、thaw_bdev が s_umount を必要するためシステムがハングする
Issue
- ファイルシステムをフリーズしたりフリーズを解除したりするバックアップまたはスナップショット手順を実行している時にハングアップします。RHEL6: Deadlock on frozen ext4 filesystem, one process stuck in thaw_bdev waiting on semaphore held by flush thread doing writeback and stuck in start_this_handle で説明されている症状と類似していますが、この問題は kernel-2.6.32-358.el6 以降のカーネルで発生しています。
s_umountセマフォを保持し、__sb_start_writeで停止するプロセスが原因でシステムがハングします。これにより、他のプロセスがthaw_bdevを完了できなくなります。kswapd、syncを実行するプロセス、drop_cachesを実行するプロセスなどのプロセスがそのプロセスにあたります。- 以下は kswapd バックトレースの例となります。
PID:40 TASK: ffff880079f08ae0 CPU:1 COMMAND:"kswapd0"
#0 [ffff880079f0d970] schedule at ffffffff81529990
#1 [ffff880079f0da48] __sb_start_write at ffffffff811900ec
#2 [ffff880079f0dad8] ext4_delete_inode at ffffffffa00a1ef4 [ext4]
#3 [ffff880079f0daf8] generic_delete_inode at ffffffff811ac07e
#4 [ffff880079f0db28] generic_drop_inode at ffffffff811ac1d5
#5 [ffff880079f0db48] iput at ffffffff811ab022
#6 [ffff880079f0db68] dentry_iput at ffffffff811a7c10
#7 [ffff880079f0db88] d_kill at ffffffff811a7d71
#8 [ffff880079f0dba8] __shrink_dcache_sb at ffffffff811a8106
#9 [ffff880079f0dc48] shrink_dcache_memory at ffffffff811a8289
#10 [ffff880079f0dca8] shrink_slab at ffffffff8113d4ba
#11 [ffff880079f0dd08] balance_pgdat at ffffffff8114082a
#12 [ffff880079f0de28] kswapd at ffffffff81140be4
#13 [ffff880079f0dee8] kthread at ffffffff8109e66e
- 以下は、'sync' プロセスのバックトレース例です。
PID:23562 TASK: ffff8800253c4040 CPU:2 COMMAND:"sync_proc"
#0 [ffff880026a7bc78] schedule at ffffffff81534790
#1 [ffff880026a7bd50] __sb_start_write at ffffffff8119322c
#2 [ffff880026a7bde0] ext4_delete_inode at ffffffffa01ddf84 [ext4]
#3 [ffff880026a7be00] generic_delete_inode at ffffffff811af25e
#4 [ffff880026a7be30] generic_drop_inode at ffffffff811af3b5
#5 [ffff880026a7be50] iput at ffffffff811ae202
#6 [ffff880026a7be70] sync_inodes_sb at ffffffff811bd61c
#7 [ffff880026a7bf00] __sync_filesystem at ffffffff811c3d02
#8 [ffff880026a7bf20] sync_filesystem at ffffffff811c3f0b
#9 [ffff880026a7bf40] sys_syncfs at ffffffff811c3f80
#10 [ffff880026a7bf80] tracesys at ffffffff8100b288 (via system_call)
Environment
- Red Hat Enterprise Linux 6
- 2.6.32-642.el6 以前のカーネル
- 2.6.32-573.18.1.el6 以前のカーネル
- カーネル 2.6.32-504*el6 で発生
- ext4 で発生 (他のファイルシステムでも発生する可能性あり)
- ioctl をフリーズしたりフリーズを解除したりするツールはこの問題の影響を受ける可能性あり
- VMware スナップショットおよび vmtoolsd で発生
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.