Algumas dúvidas sobre inconsistência de disco

0

Eu tenho um sistema com 3 elementos:

  1. Um sistema embarcado com esta biblioteca FAT que faz várias operações no sistema de arquivos FAT (por exemplo, adicionar / remover arquivo / dir, anexar ao arquivo). As funções de leitura / gravação do setor geram solicitações USB para executar essas operações no host USB do barramento.
  2. Em um PC Ubuntu, eu tenho uma regra do udev para iniciar um programa assim que o último sistema incorporado se conectar. Esse programa escuta mensagens vindas do USB (usando libusb) e executa as operações de leitura / gravação solicitadas no arquivo de destino.
  3. Como uma configuração para o programa posterior, temos que fornecer um arquivo de partição / binário a ser alterado pelo sistema incorporado FAT lib.

Eu criei uma partição FAT32 de 1 GB (/ dev / sdb1) e fiz um teste simples para adicionar diretórios e acrescentar texto aos arquivos. Aqui estão os resultados:

  • Novos diretórios / arquivos serão imediatamente vistos no ponto de montagem (basta atualizar no diretório), mas anexar conteúdo a um arquivo já existente requer desmontar e montar para ser visto;
  • Se eu adicionar um novo diretório e um novo arquivo dentro, essa alteração será vista no ponto de montagem, mas se eu desmontá-lo depois que todas as operações do setor estiverem concluídas (o sistema integrado é um loop while) meu aplicativo de PC, quando eu montar esse diretório será completamente vazio (nem mesmo. e .. estará lá). Para um propósito de teste eu chamo fflush e fsync após cada fwrite e o resultado é o mesmo.

Alguém pode explicar por que isso acontece? Especialmente o último ponto, não consigo entender como posso ter os dados lá, remontar a partição e depois desaparece. No final, provavelmente vou desmontar tudo pelo software para ter certeza de que o sistema embarcado é o único que está alterando o sistema de arquivos, mas por enquanto estou apenas curioso.

EDITAR

Veja como meu sistema está conectado:

    
por rnunes 17.05.2016 / 14:32

0 respostas