laziness, impatience, and hubris | |
PerlMonks |
comment on |
( [id://3333]=superdoc: print w/replies, xml ) | Need Help?? |
Hi, according to the Linux man page of fsync(2): 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, how do we fsync directories in Perl? perldoc POSIX says that fsync() should be done with the sync method in IO::Handle. So I tried this with a directory:
This bails out with "fsync: Invalid argument". According to strace, no fsync syscall is even tried. I tried opendir too:
with the same result. On the other hand, an equivalent C program succeeds and properly calls fsync according to strace:
My question: What is the proper way to do fsync with directories in Perl? Or is this just a bug in IO::Handle? (All tests have been done on a current Debian Squeeze (testing) with perl 5.10.1-12.) In reply to fsyncing directories by betterworld
|
|