montado g_mass_storage não exclui arquivos

0

Estou tendo um problema estranho com o gadget g_mass_storage, em que os arquivos excluídos do PC não estão "realmente" sendo excluídos, o que causa mais problemas durante a indexação.

Aqui está o procedimento:

  • monte a partição para o dispositivo linux:
$ mount /dev/mmcblk1p3 /mnt/data
  • inicie o gadget g_mass_storage:
$ modprobe g_mass_storage file=/dev/mmcblk1p3 removable=y
  • escreve um arquivo na partição montada no dispositivo linux:
$ echo "hello world" > /mnt/data/hello.txt
  • conecte o OTG USB - > PC
  • abra o arquivo montado no seu pc para verificar o texto
  • exclua o hello.txt do seu pc (shift - delete)
  • remova o usb do PC
  • aguarde até que o armazenamento usb esteja novamente disponível

(no meu alvo, o estado pode ser visto em /sys/class/udc/ci_hdrc.0/state)

  • observe que o sistema de arquivos não contém mais o arquivo hello.txt (isso não ocorre)
$ ls /mnt/data/
  • stat o arquivo
$ stat hello.txt 
File: hello.txt
Size: 12                   Blocks: 8  IO Block: 4096 regular file
Device: b303h/45827d       Inode:  58       Links: 1
Access: (0755/-rwxr-xr-x)  Uid:    (0/root) Gid: (0/root)
Access: 2022-08-21 05:57:00.000000000
Modify: 2022-08-21 05:57:00.000000000
Change: 2022-08-21 05:57:00.000000000
  • cat o 'arquivo invisível'
$ cat hello.txt 
hello world

O que está acontecendo? Se eu tentar editar o arquivo invisível, ele funcionará ONCE e o sistema de arquivos se tornará somente leitura. para o qual a correção é montar novamente o sistema de arquivos.

Como faço para permitir que o host do PC exclua arquivos permanentemente?

EDITAR:

Eu descobri basicamente que os sistemas de arquivos estão fora de sincronia, o que o IMO é bobo, como o que mais é o ponto do dispositivo de armazenamento em massa, se é acessível apenas a partir do host do PC. Basta usar um Thumbdrive USB e depois ...

Eu consegui hackear algo que desmonta / monta o sistema de arquivos do alvo dependendo da conexão USB, no entanto, no futuro, atualizarei a lógica para forçar o usuário a ativar a conexão USB.

    
por DMacAttack 13.07.2018 / 19:54

1 resposta

0

Eu esperaria que usando /dev/mmcblk1p3 de duas maneiras diferentes de uma vez, por um lado, montado usando buffers do kernel, por outro lado, via g_mass_storage usando seus buffers, vai causar problemas assim que os buffers saírem de sincronização. "Não exclui arquivos" é provavelmente apenas a ponta do iceberg; em geral, quem grava de volta o bloco ganha por último, levando a um estado inconsistente, e se você verá as alterações feitas no sistema como alterações nos outros sistemas dependerão do estado atual do buffer.

Então: não faça isso. Montar ou usar como g_mass_storage , mas não ambos. Se você quiser compartilhar arquivos entre dois computadores, use algo diferente (por exemplo, um sistema de arquivos de rede).

    
por 14.07.2018 / 15:00