O Filesystem está relatando um erro de gravação em um setor específico, mesmo depois que a partição é movida ainda mais

0

Estou enfrentando o seguinte problema: relatórios btrfs gravam erros para o setor 128 no dispositivo /dev/sdd :

sd 6:0:0:0: [sdd] Invalid command failure
sd 6:0:0:0: [sdd] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
sd 6:0:0:0: [sdd] Sense Key : Illegal Request [current] 
sd 6:0:0:0: [sdd] Add. Sense: Invalid field in cdb
sd 6:0:0:0: [sdd] CDB: Write(10): 2a 08 00 00 00 80 00 00 08 00
end_request: critical target error, dev sdd, sector 128
BTRFS: lost page write due to I/O error on /dev/sdd
BTRFS: bdev /dev/sdd errs: wr 913238, rd 1, flush 150, corrupt 0, gen 0

Eu executei o badblocks /dev/sdd e ele não retornou nenhum badblock. De qualquer forma, decidi ficar do lado seguro (de certa forma), criei uma partição que começa no setor 2048 (padrão):

# fdisk -l /dev/sdd
Device     Boot Start       End   Sectors   Size Id Type
/dev/sdd1        2048 234441647 234439600 111.8G 83 Linux

e adicionou novamente a unidade ao volume btrfs. Instantaneamente recebi o mesmo erro de gravação novamente (note que 2176 = 2048 + 128):

sd 13:0:0:0: [sdd] Invalid command failure
sd 13:0:0:0: [sdd] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
sd 13:0:0:0: [sdd] Sense Key : Illegal Request [current] 
sd 13:0:0:0: [sdd] Add. Sense: Invalid field in cdb
sd 13:0:0:0: [sdd] CDB: Write(10): 2a 08 00 00 08 80 00 00 08 00
end_request: critical target error, dev sdd, sector 2176
BTRFS: lost page write due to I/O error on /dev/sdd1
BTRFS: bdev /dev/sdd1 errs: wr 12253, rd 0, flush 0, corrupt 0, gen 0

Será que ambos os setores 128 e 2176 são ruins? Bem, eu re-executei badblocks /dev/sdd (novamente, ele não relatou nenhum bloco ruim), e empurrei a partição mais longe:

# fdisk -l /dev/sdd
Device     Boot Start       End   Sectors   Size Id Type
/dev/sdd1        4096 234441647 234437552 111.8G 83 Linux

e recria o volume do btrfs. Novamente "bloco ruim" no mesmo lugar mágico (4224 = 4096 + 128):

sd 6:0:0:0: [sdd] Invalid command failure
sd 6:0:0:0: [sdd] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
sd 6:0:0:0: [sdd] Sense Key : Illegal Request [current] 
sd 6:0:0:0: [sdd] Add. Sense: Invalid field in cdb
sd 6:0:0:0: [sdd] CDB: Write(10): 2a 08 00 00 10 80 00 00 08 00
end_request: critical target error, dev sdd, sector 4224
BTRFS: lost page write due to I/O error on /dev/sdd1
BTRFS: bdev /dev/sdd1 errs: wr 124433, rd 0, flush 0, corrupt 0, gen 0
Não acredito em co-incidências, a saber, que nenhum outro setor antes da mágica 128 e depois do 128 está falhando, mas aquele específico é problemático.

O que pode ser? Para mim soa como um bug no kernel.

Informação adicional:

  • Linux kernel v3.16.0
  • /dev/sdd está conectado via adaptador SATA-para-USB JMicron (ID 152d: 0567, :

dmesg:

sd 4:0:0:0: [sdb] Attached SCSI disk
scsi 6:0:0:0: Direct-Access     JMicron  Generic          0116 PQ: 0 ANSI: 6
sd 6:0:0:0: Attached scsi generic sg5 type 0
sd 6:0:0:0: [sdd] 234441648 512-byte logical blocks: (120 GB/111 GiB)
sd 6:0:0:0: [sdd] Write Protect is off
sd 6:0:0:0: [sdd] Mode Sense: 47 00 10 08
sd 6:0:0:0: [sdd] Write cache: enabled, read cache: enabled, supports DPO and FUA
sd 6:0:0:0: [sdd] Attached SCSI disk
    
por dma_k 19.10.2015 / 20:13

1 resposta

2

Parece que encontrei a raiz do problema. Ele está realmente conectado com a ponte JMicron SATA, consulte Disco USB3 externo falha com "Campo inválido no cdb" . A correção com commit bf5c4136fa5ce471bdbf4cf59a813e32755fd014 está incluído no kernel v3.18.6 , lançado em 2015-02-06. Eu tentei os seguintes kernels:

A correção real foi confirmada como 9fa62b1a31c96715aef34f25000e882ed4ac4876 e disponível no kernel 4.4.x.

O dmesg para trabalhar o kernel v4.4.x é o seguinte:

scsi host7: uas
scsi 7:0:0:0: Direct-Access     JMicron  Generic          0116 PQ: 0 ANSI: 6
sd 7:0:0:0: [sdc] 234441648 512-byte logical blocks: (120 GB/111 GiB)
sd 7:0:0:0: [sdc] 4096-byte physical blocks
sd 7:0:0:0: [sdc] Write Protect is off
sd 7:0:0:0: [sdc] Mode Sense: 53 00 10 08
sd 7:0:0:0: [sdc] Disabling FUA
sd 7:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
    
por 20.10.2015 / 19:17