como posso sincronizar um dispositivo específico? [duplicado]

5

Existe uma maneira de sync de um dispositivo específico no Linux?

Isso seria usado para garantir que, por exemplo, gravações em um pen drive USB ocorram sem esperar que gravações enfileiradas de um trabalho de processamento de vídeo sejam concluídas em um array RAID não relacionado.

Se houver uma chamada de sistema / combinação de parâmetros que possa conseguir isso, provavelmente eu poderia escrever um simples wrapper C. Se alguém souber de um pacote do Ubuntu que pode fazer isso, seria ainda melhor.

    
por Atsby 12.07.2015 / 04:18

2 respostas

4

Você não pode sincronizar (2) um dispositivo e não tem nenhum sentido. Você está sincronizando um sistema de arquivos (não o dispositivo que o monta) com syncfs ou o inteiro cache de páginas com sync .

O sync(2) syscall é chamado pelo sync(1) .

(não sei de nenhum comando normal fazendo syncfs )

No entanto, você pode liberar os buffers de um sistema de arquivos usando o syncfs específico do Linux (2 ) syscall. Então escreva um simples wrapper C fazendo isso.

Para um descritor de arquivos aberto , você pode usar fsync(2) ou fdatasync

Observe que a desmontagem de um sistema de arquivos geralmente é eliminada.

    
por 12.07.2015 / 10:53
0

Considere usar o Direct I / O, isso evitará a necessidade de sync . Alguns sistemas de arquivos podem ser forçados a usá-lo via opção de montagem ( dio ).

    
por 12.07.2015 / 10:50