When fsync is called on a directory the operation treats its target more like a file than a container of files. From the file system's perspective a directory is a special kind of file that just happens to contain metadata about other files. When fsync is applied to a directory, this metadata about the contained files is synchronized but not the subdirectories/files themselves.
If you want to ensure that all of the contents are properly synchronized, then you should fsync them explicitly.