svn commit: r295924 - head/lib/libc/db/hash
David Malone
dwmalone at FreeBSD.org
Tue Feb 23 15:21:14 UTC 2016
Author: dwmalone
Date: Tue Feb 23 15:21:13 2016
New Revision: 295924
URL: https://svnweb.freebsd.org/changeset/base/295924
Log:
If we close or sync a hash-based db file, make sure to call fsync to
make sure the changes are on disk. The people at pfSense noticed that
it didn't always make it to the disk soon enough with soft updates.
Differential Revision: https://reviews.freebsd.org/D5186
Reviewed by: garga, vangyzen, bapt, se
MFC after: 1 week
Modified:
head/lib/libc/db/hash/hash.c
Modified: head/lib/libc/db/hash/hash.c
==============================================================================
--- head/lib/libc/db/hash/hash.c Tue Feb 23 14:58:20 2016 (r295923)
+++ head/lib/libc/db/hash/hash.c Tue Feb 23 15:21:13 2016 (r295924)
@@ -422,8 +422,10 @@ hdestroy(HTAB *hashp)
if (hashp->tmp_buf)
free(hashp->tmp_buf);
- if (hashp->fp != -1)
+ if (hashp->fp != -1) {
+ (void)_fsync(hashp->fp);
(void)_close(hashp->fp);
+ }
free(hashp);
@@ -458,6 +460,8 @@ hash_sync(const DB *dbp, u_int32_t flags
return (0);
if (__buf_free(hashp, 0, 1) || flush_meta(hashp))
return (ERROR);
+ if (hashp->fp != -1 && _fsync(hashp->fp) != 0)
+ return (ERROR);
hashp->new_file = 0;
return (0);
}
More information about the svn-src-all
mailing list