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.