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
This commit is contained in:
parent
ecc7ce0f3e
commit
efb7dae251
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user