On 09/16/2010 09:42 AM, Sameer Naik wrote: > Thanks i will try it out. > > On Thu, Sep 16, 2010 at 9:59 PM, JD<jd1...@gmail.com> wrote: >> >> On 09/16/2010 03:00 AM, Sameer Naik wrote: >>> Please find attached. >>> P.S. I have added the fflush () call before the fsync () call. >>> >>> Regards >>> ~Sameer >> Well, as I already communicated with Pierre, the man page for fsync says: >> >> Calling fsync() does not necessarily ensure that the entry in the >> directory containing the file has also reached disk. For that, an >> explicit fsync() on a file descriptor for the directory is also >> needed. >> >> So, when creating a new file, it is not sufficient to flush and fsync the >> file descriptor. >> You also need to have opened the containing directory and fsync'ed the >> directory >> file descriptor immediately after creating the file. flushing and sync'ing >> the file >> comes later when you are done with writing to it. >> >> Cheers, >> >> JD >>
Remember that a directory can only be opened by DIR *opendir(const char *name); DIR *fdopendir(int fd); Problem is, how can you fsync a dir if you cannot open it with the open(2) system call? fsync(2) needs a file descriptor. DIR * is not a file descriptor. And yet, the man page for fsync says: Calling fsync() does not necessarily ensure that the entry in the directory containing the file has also reached disk. For that an explicit fsync() on a file descriptor for the directory is also needed. Maybe someone can clear this up a bit? ------------------------------------------------------------------------------ Start uncovering the many advantages of virtual appliances and start using them to simplify application deployment and accelerate your shift to cloud computing. http://p.sf.net/sfu/novell-sfdev2dev _______________________________________________ ntfs-3g-devel mailing list ntfs-3g-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ntfs-3g-devel