Los errores de E/S no aparecen en ddrescue

Los errores de E/S no aparecen en ddrescue

Estoy intentando obtener una imagen de una memoria USB dañada usando ddrescue. El proceso funciona durante los primeros 100 MB de la unidad y luego se bloquea por completo: la salida de ddrescue se congela (no se mueve ni siquiera durante horas).

El proceso de ddrescue está en "D": estado de suspensión ininterrumpida (generalmente IO) y las señales no lo detendrán, solo lo hará desconectar la unidad USB.

Parece que los errores de E/S no llegan a ddrescue, por lo que no puede pasar al siguiente bloque. ¿Hay alguna manera de asegurarse de que el kernel devuelva un error de E/S a ddrescue, para que pueda seguir adelante?

Ejecuté ddrescue con las opciones predeterminadas:

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

Usar dden lugar de ddrescuecondujo al mismo resultado (proceso bloqueado).

Recibo el siguiente mensaje en 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

Para asegurarme de que no se trataba de un problema con el controlador del controlador USB, intenté el rescate en dos sistemas diferentes (computadora de escritorio AMD y computadora portátil Intel). Los resultados fueron los mismos.

Intenté desconectar, enchufar la memoria USB e iniciar ddrescue nuevamente con la --input-positionopción de omitir el área defectuosa, funciona pero la cantidad de problemas hace que sea imposible hacerlo manualmente.

información relacionada