¿Cómo cambiar el nombre de un archivo de forma duradera en POSIX?

¿Cuál es la forma correcta de cambiar el nombre de un archivo de forma duradera en un sistema de archivos POSIX? Específicamente preguntándose sobre fsyncs en eldirectorios. (Si esto depende del sistema operativo / FS, estoy preguntando sobre Linux y ext3 / ext4).

Nota: hay otras preguntas en StackOverflow sobre cambios de nombre duraderos, pero AFAICT no abordan la sincronización de directorios (que es lo que me importa, ni siquiera estoy modificando los datos del archivo).

Actualmente tengo (en Python):

dstdirfd = open(dstdirpath, O_DIRECTORY|O_RDONLY)
rename(srcdirpath + '/' + filename, dstdirpath + '/' + filename)
fsync(dstdirfd)

Preguntás especificas:

¿Esto también implícitamente fsync el directorio de origen? ¿O podría terminar con el archivo que aparece en ambos directorios después de un ciclo de encendido (lo que significa que tendría que verificar el recuento de enlaces duros y realizar la recuperación manualmente), es decir, es imposible garantizar una operación de movimiento atómico duradero?Si sincronizo el directorio fuenteen lugar de el directorio de destino, ¿eso también implícitamente sincronizará el directorio de destino?¿Existen herramientas útiles de prueba / depuración / aprendizaje (inyectores de fallas, herramientas de introspección, sistemas de archivos simulados, etc.)?

Gracias por adelantado.