Skip to content
Permalink
Browse files
Don't fsync() read-only filehandles (thanks, Andreas!).
This sounds harmless, but it actually forces a write of the inode's atime,
 which means a lot of painful and unnecessary disk i/o on some filesystems.

Should be a good speedup on games that read a lot of small files on Unix.
  • Loading branch information
icculus committed Aug 22, 2013
1 parent 26f5eb4 commit 09baf99aa4b72ba757b4e109dd3ca2b4f3c2e32e
Showing with 5 additions and 1 deletion.
  1. +3 −0 docs/CREDITS.txt
  2. +2 −1 src/platform_posix.c
@@ -136,6 +136,9 @@ SLB archiver:
Bug fixes:
Dmitry Marakasov

Bug fixes:
Andreas Karlsson

Other stuff:
Your name here! Patches go to icculus@icculus.org ...

@@ -279,7 +279,8 @@ PHYSFS_sint64 __PHYSFS_platformFileLength(void *opaque)
int __PHYSFS_platformFlush(void *opaque)
{
const int fd = *((int *) opaque);
BAIL_IF_MACRO(fsync(fd) == -1, errcodeFromErrno(), 0);
if ((fcntl(fd, F_GETFL) & O_ACCMODE) != O_RDONLY)
BAIL_IF_MACRO(fsync(fd) == -1, errcodeFromErrno(), 0);
return 1;
} /* __PHYSFS_platformFlush */

0 comments on commit 09baf99

Please sign in to comment.