I/O エラーが ddrescue に反映されない

I/O エラーが ddrescue に反映されない

ddrescue を使用して、破損した USB スティックからイメージを取得しようとしています。プロセスはドライブの最初の 100 MB までは機能しますが、その後完全に停止します。ddrescue の出力がフリーズします (何時間経っても動きません)。

ddrescue プロセスは「D」(中断不可能なスリープ (通常は IO)) 状態にあり、信号では停止できず、USB ドライブを取り外すとのみ停止します。

I/O エラーが ddrescue に到達しないため、次のブロックに進むことができないようです。カーネルが ddrescue に I/O エラーを返して先に進むようにする方法はありますか?

デフォルトのオプションで ddrescue を実行しました:

sudo ddrescue /dev/sdc /tmp/image_usb_rescue.img /myt/image_usb_rescue.log

ddの代わりにを使用するとddrescue、同じ結果になります (プロセスが停止します)。

dmesg に次のメッセージが表示されます:

[ 2247.230715] usb 1-2: reset high-speed USB device number 15 using xhci_hcd
[ 2247.381353] sd 0:0:0:0: [sda] tag#0 FAILED Result: hostbyte=DID_TIME_OUT driverbyte=DRIVER_OK cmd_age=1s
[ 2247.381377] sd 0:0:0:0: [sda] tag#0 CDB: Read(10) 28 00 00 05 eb 00 00 00 f0 00
[ 2247.381385] blk_update_request: I/O error, dev sda, sector 387840 op 0x0:(READ) flags 0x84700 phys_seg 30 prio class 0
[ 2252.054160] usb 1-2: reset high-speed USB device number 15 using xhci_hcd
[ 2252.203889] sd 0:0:0:0: [sda] tag#0 FAILED Result: hostbyte=DID_TIME_OUT driverbyte=DRIVER_OK cmd_age=1s
[ 2252.203912] sd 0:0:0:0: [sda] tag#0 CDB: Read(10) 28 00 00 06 19 00 00 00 f0 00
[ 2252.203920] blk_update_request: I/O error, dev sda, sector 399616 op 0x0:(READ) flags 0x84700 phys_seg 15 prio class 0
[ 2254.610160] usb 1-2: reset high-speed USB device number 15 using xhci_hcd

USB コントローラー ドライバーの問題ではないことを確認するために、2 つの異なるシステム (AMD デスクトップと Intel ラップトップ) で復旧を試みました。結果は同じでした。

USB スティックを取り外し、接続し、--input-position不良領域をスキップするオプションを使用して ddrescue を再度起動してみましたが、動作はしますが、問題の数が多いため手動で実行することは不可能です。

関連情報