From 3882f7f0612f5660c6287cfa1ba025f2843a1957 Mon Sep 17 00:00:00 2001 From: Renato Botelho Date: Mon, 15 Feb 2016 10:09:33 -0200 Subject: Import patch from https://reviews.freebsd.org/D5186 This is a new approach to fix pfSense ticket #4523. The fix we had in place works but makes the process really slow for big user databases. --- lib/libc/db/hash/hash.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/libc/db/hash/hash.c b/lib/libc/db/hash/hash.c index af80929..333b1a1 100644 --- a/lib/libc/db/hash/hash.c +++ b/lib/libc/db/hash/hash.c @@ -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); } -- cgit v1.1