De fsync(2):
fsync() transfers ("flushes") all modified in-core data of (i.e., modified
buffer cache pages for) the file referred to by the file descriptor fd to
the disk device (or other permanent storage device)
Que efeitos o fsync pode ter se o fd foi obtido por uma das APIs na memória como shm_open(3p) ou `memfd_create(2)*? Alguma vez é necessário confirmar explicitamente as alterações no objeto de memória?
Nenhum efeito. Não está associado ao armazenamento permanente.
Historicamente, misturar mmap() e read()/write() pode dar resultados inconsistentes.
O Linux moderno é estruturado com muito cuidado para que funcione corretamente em todas as CPUs suportadas. No entanto, se o seu sistema for muito obscuro, você ainda poderá ser a pessoa azarada que encontrar um bug específico do hardware.
O ponto é que em um sistema operacional compatível com POSIX, pode ser necessário usar msync() para liberar depois de gravar alterações em um mapa de memória de um arquivo, se você quiser que read() funcione consistentemente depois. Se você quiser entender as regras POSIX, pode ser útil examinar o sinalizador MS_INVALIDATE de msync() e o que sua existência implica :).
No entanto, POSIX msync() é especificamente direcionado a mapeamentos associados ao armazenamento persistente. Fica indefinido o efeito que tem em "objetos de memória compartilhada". Portanto, esta seria uma maneira bastante obscura de responder à sua pergunta original.
Também tenha em mente que apenas porque algo implementa uma chamada de sistema com o mesmo nome que o POSIX, não necessariamente fornece as mesmas garantias que o POSIX. Apenas um pequeno número de versões do SO foi realmente submetido ao conjunto de testes POSIX. (Isso custa dinheiro).