sync
afeta apenas os sistemas de arquivos, não bloqueia dispositivos.
Uma pergunta interessante (não relacionada à desmontagem) que não posso responder, porém, é esta: em qual ordem sync
trata os sistemas de arquivos? Se ele primeiro esvaziar o cache do sistema de arquivos raiz e depois do sistema de arquivos do dispositivo de loop, o segundo flush cria novos dados de caches para o sistema de arquivos raiz, de modo que nunca haja um momento em que tudo esteja completamente limpo. Mas o kernel pode esperar até que todos os caches do sistema de arquivos informem que estão limpos antes de retornar o sync()
syscall.
Mas você pode chamar sync
com um argumento de arquivo e chamá-lo várias vezes na ordem correta se você não confiar no kernel para fazer isso direito ...