ddrescue um disco rígido com falha; Obtendo um deadlock do módulo do kernel

1

Estou no processo de recuperação de um disco rígido com ddrescue. O utilitário funciona muito bem nas partes da unidade que não têm problemas, mas nas partes da unidade com problemas ele é muito lento e parece estar causando um impasse em algum módulo do kernel.

Primeiramente: meu sistema

$ uname -a
Linux 3.16.2-1-ARCH #1 SMP PREEMPT Sat Sep 6 13:12:51 CEST 2014 x86_64 GNU/Linux

Aqui está o que está acontecendo, estou atualmente no primeiro estágio de recuperação usando ddrescue -dn /dev/sdd ddrescue.img ddrescue.log Reoccuring nos meus logs de kernel são os seguintes logs

[ 1160.113936] end_request: critical target error, dev sdd, sector 520968448
[ 1191.145082] usb 3-2: reset SuperSpeed USB device number 3 using xhci_hcd
[ 1191.159792] xhci_hcd 0000:01:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88044919cf00
[ 1191.159797] xhci_hcd 0000:01:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88044919cf48
[ 1222.107631] usb 3-2: reset SuperSpeed USB device number 3 using xhci_hcd
[ 1222.122490] xhci_hcd 0000:01:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88044919cf00
[ 1222.122495] xhci_hcd 0000:01:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88044919cf48
[ 1346.337324] sd 17:0:0:0: [sdd] Unhandled error code
[ 1346.337329] sd 17:0:0:0: [sdd]  
[ 1346.337332] Result: hostbyte=0x05 driverbyte=0x00
[ 1346.337334] sd 17:0:0:0: [sdd] CDB: 
[ 1346.337336] cdb[0]=0x28: 28 00 1f 0d 59 80 00 00 01 00
[ 1346.337345] end_request: I/O error, dev sdd, sector 520968576
[ 1377.408091] usb 3-2: reset SuperSpeed USB device number 3 using xhci_hcd
[ 1377.422946] xhci_hcd 0000:01:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88044919cf00
[ 1377.422951] xhci_hcd 0000:01:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88044919cf48

Eu especulo que isso se deve aos erros de E / S que ocorrem no nível do kernel - o módulo acaba redefinindo a conexão com o dispositivo. (Por favor me corrija se eu estiver errado).

Isso continuará por um tempo e funcionará bem até que eu consiga o que parece ser um impasse.

[ 4132.846802] usb-storage: Error in queuecommand_lck: us->srb = ffff880446c78300
[ 4132.866845] usb-storage: Error in queuecommand_lck: us->srb = ffff880446c78300
[ 4132.886878] usb-storage: Error in queuecommand_lck: us->srb = ffff880446c78300
[ 4132.906841] usb-storage: Error in queuecommand_lck: us->srb = ffff880446c78300
[ 4132.926928] usb-storage: Error in queuecommand_lck: us->srb = ffff880446c78300
[ 4132.946948] usb-storage: Error in queuecommand_lck: us->srb = ffff880446c78300
[ 4132.966935] usb-storage: Error in queuecommand_lck: us->srb = ffff880446c78300
[ 4132.986990] usb-storage: Error in queuecommand_lck: us->srb = ffff880446c78300
[ 4133.007033] usb-storage: Error in queuecommand_lck: us->srb = ffff880446c78300
[ 4133.027030] usb-storage: Error in queuecommand_lck: us->srb = ffff880446c78300

^ essas mensagens nunca param de aparecer

Quando ele bloqueia todos os bloqueios de io relacionados e mata o processo não funciona - minha única solução é reiniciar o sistema (às vezes com força) - isso me parece uma maneira de causar corrupção de dados em potencial nos dados que eu Estou tentando recuperar. Eu não preciso ter que reiniciar meu sistema várias vezes apenas para recuperar essa unidade.

  1. Eu entendo que esta unidade está falhando, mas por que esse módulo acaba por travar?
  2. Como devo relatar / corrigir esse bug?
  3. Existem certos módulos do kernel que eu posso reiniciar para recuperar esse erro sem precisar reiniciar? (Minha melhor tentativa foi forçar a remoção de uas , que interrompe o ddrescue, mas não consigo iniciá-lo novamente)

Obrigado em avançado

    
por u8sand 13.09.2014 / 22:05

0 respostas