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.
This commit is contained in:
parent
26f5eb481e
commit
09baf99aa4
|
@ -136,6 +136,9 @@ SLB archiver:
|
||||||
Bug fixes:
|
Bug fixes:
|
||||||
Dmitry Marakasov
|
Dmitry Marakasov
|
||||||
|
|
||||||
|
Bug fixes:
|
||||||
|
Andreas Karlsson
|
||||||
|
|
||||||
Other stuff:
|
Other stuff:
|
||||||
Your name here! Patches go to icculus@icculus.org ...
|
Your name here! Patches go to icculus@icculus.org ...
|
||||||
|
|
||||||
|
|
|
@ -279,7 +279,8 @@ PHYSFS_sint64 __PHYSFS_platformFileLength(void *opaque)
|
||||||
int __PHYSFS_platformFlush(void *opaque)
|
int __PHYSFS_platformFlush(void *opaque)
|
||||||
{
|
{
|
||||||
const int fd = *((int *) 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;
|
return 1;
|
||||||
} /* __PHYSFS_platformFlush */
|
} /* __PHYSFS_platformFlush */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue