私のアプリケーションは中断することなくスリープモードになります。プロセスが中断されましたlinkat
。
❯ sudo cat /proc/1308028/syscall
265 0xffffffffffffff9c 0x7fbd9f32a120 0xffffffffffffff9c 0x7fbd9f395930 0x400 0x7fbd9f3c1c70 0x7ffff745b7c0 0x7fbda231b1fd
❯ sudo cat /proc/1308028/stack
[<0>] cv_wait_common+0xaa/0x130 [spl]
[<0>] txg_wait_synced_impl+0xcb/0x110 [zfs]
[<0>] txg_wait_synced+0x10/0x40 [zfs]
[<0>] zfs_link+0x611/0x740 [zfs]
[<0>] zpl_link+0xa2/0x120 [zfs]
[<0>] vfs_link+0x278/0x3b0
[<0>] do_linkat+0x2f7/0x320
[<0>] __x64_sys_linkat+0x5a/0x70
[<0>] do_syscall_64+0x3e/0x90
[<0>] entry_SYSCALL_64_after_hwframe+0x6e/0xd8
根本的な原因は不良HDDである可能性がありますが、この場合のようにすべてのアプリケーションが永久に中断される可能性があるため、同期IOを避ける必要があるアプリケーションがあるかどうか疑問に思います。それとも、ZFSはすべてのAPIにデフォルトのタイムアウトを追加する役割を果たし、どこにもタイムアウトを持つファイルシステムを使用する必要がありますか?
(+で再起動せずにこの状態を終了できますか?)
答え1
私が見つけたこのGitHubの問題したがって、これはカーネルの制限ではないようです。
ZFSは適切なタイムアウトで非同期実装を使用できますが、今では同期実装を使用します。