Lidando com incompatibilidades de BTRFS ref / backpointer, falta de referência

1

Um sistema de arquivos btrfs relatou alguns erros durante a operação btrfs receive devido a algumas extensões ausentes. Do log:

BTRFS error (device dm-1): unable to find ref byte nr 190303420416 \
      parent 0 root 594  owner 1 offset 0
BTRFS: error (device dm-1) in __btrfs_free_extent:6944: errno=-2 No such entry
BTRFS info (device dm-1): forced readonly
BTRFS: error (device dm-1) in btrfs_run_delayed_refs:2956: errno=-2 No such entry

Um btrfs scrub (após um umount + mount) falhou com erros semelhantes.

Um btrfs check informa problemas para 3 extensões - cada problema de extensão é relatado da seguinte forma:

checking extents
ref mismatch on [190303420416 16384] extent item 0, found 1
Backref 190303420416 parent 594 root 594 not found in extent tree
backpointer mismatch on [190303420416 16384]
owner ref check failed [190303420416 16384]

Minha pergunta é: como posso traduzir esses números para algo útil? Por exemplo, para verificar se alguns arquivos / diretórios são afetados?

E como lidar com esses erros?

Um btrfs check --repair parece funcionar sem reclamar severamente:

  ref mismatch on [190303420416 16384] extent item 0, found 1
* repair deleting extent record: key 190303420416 169 1
* adding new tree backref on start 190303420416 len 16384 parent 0 root 594
  Backref 190303420416 parent 594 root 594 not found in extent tree
  backpointer mismatch on [190303420416 16384]
  owner ref check failed [190303420416 16384]

(as marcas * são minhas)

Isso significa que o reparo foi bem-sucedido sem perder nenhum dado?

    
por maxschlepzig 04.06.2017 / 15:18

1 resposta

0

Um comando btrfs check --repair bem-sucedido não necessariamente produz um sistema de arquivos btrfs consistente.

Em um caso, observei que btrfs scrub após btrfs check acionou vários WARN_ON() testes em fs/btrfs/extent-tree.c . E o recebimento de instantâneos gerou uma falha de IO (que forçou uma remontagem somente leitura).

Assim, como os tempos de execução de btrfs check , seguidos por btrfs check --repair e btrfs scrub podem ser bastante significativos - e essas ações têm resultados incertos: uma alternativa prática é recriar o sistema de arquivos btrfs e restaurar um backup.

    
por 05.06.2017 / 11:50

Tags