svn commit: r296431 - in releng/10.3: lib/libc/db/hash usr.bin/cap_mkdb usr.sbin/pwd_mkdb usr.sbin/services_mkdb
David Malone
dwmalone at FreeBSD.org
Sun Mar 6 18:22:25 UTC 2016
Author: dwmalone
Date: Sun Mar 6 18:22:24 2016
New Revision: 296431
URL: https://svnweb.freebsd.org/changeset/base/296431
Log:
Merge 296424 from stable/10 - contains the following changes to -current:
r295924: Make sure that hash-based db files fsync befor closing/syncing.
r295925: We no longer need O_SYNC pwd_mkd
r295465: We no longer need O_SYNC on services_mkdb
r295800: We no longer need O_SYNC on cap_mkdb
Approved by: re (marius)
Modified:
releng/10.3/lib/libc/db/hash/hash.c
releng/10.3/usr.bin/cap_mkdb/cap_mkdb.c
releng/10.3/usr.sbin/pwd_mkdb/pwd_mkdb.c
releng/10.3/usr.sbin/services_mkdb/services_mkdb.c
Directory Properties:
releng/10.3/ (props changed)
Modified: releng/10.3/lib/libc/db/hash/hash.c
==============================================================================
--- releng/10.3/lib/libc/db/hash/hash.c Sun Mar 6 17:34:21 2016 (r296430)
+++ releng/10.3/lib/libc/db/hash/hash.c Sun Mar 6 18:22:24 2016 (r296431)
@@ -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);
}
Modified: releng/10.3/usr.bin/cap_mkdb/cap_mkdb.c
==============================================================================
--- releng/10.3/usr.bin/cap_mkdb/cap_mkdb.c Sun Mar 6 17:34:21 2016 (r296430)
+++ releng/10.3/usr.bin/cap_mkdb/cap_mkdb.c Sun Mar 6 18:22:24 2016 (r296431)
@@ -119,7 +119,7 @@ main(int argc, char *argv[])
(void)snprintf(buf, sizeof(buf), "%s.db", capname ? capname : *argv);
if ((capname = strdup(buf)) == NULL)
errx(1, "strdup failed");
- if ((capdbp = dbopen(capname, O_CREAT | O_TRUNC | O_RDWR | O_SYNC,
+ if ((capdbp = dbopen(capname, O_CREAT | O_TRUNC | O_RDWR,
DEFFILEMODE, DB_HASH, &openinfo)) == NULL)
err(1, "%s", buf);
Modified: releng/10.3/usr.sbin/pwd_mkdb/pwd_mkdb.c
==============================================================================
--- releng/10.3/usr.sbin/pwd_mkdb/pwd_mkdb.c Sun Mar 6 17:34:21 2016 (r296430)
+++ releng/10.3/usr.sbin/pwd_mkdb/pwd_mkdb.c Sun Mar 6 18:22:24 2016 (r296431)
@@ -225,14 +225,14 @@ main(int argc, char *argv[])
clean = FILE_INSECURE;
cp(buf2, buf, PERM_INSECURE);
dp = dbopen(buf,
- O_RDWR|O_EXCL|O_SYNC, PERM_INSECURE, DB_HASH, &openinfo);
+ O_RDWR|O_EXCL, PERM_INSECURE, DB_HASH, &openinfo);
if (dp == NULL)
error(buf);
clean = FILE_SECURE;
cp(sbuf2, sbuf, PERM_SECURE);
sdp = dbopen(sbuf,
- O_RDWR|O_EXCL|O_SYNC, PERM_SECURE, DB_HASH, &openinfo);
+ O_RDWR|O_EXCL, PERM_SECURE, DB_HASH, &openinfo);
if (sdp == NULL)
error(sbuf);
@@ -289,13 +289,13 @@ main(int argc, char *argv[])
method = 0;
} else {
dp = dbopen(buf,
- O_RDWR|O_CREAT|O_EXCL|O_SYNC, PERM_INSECURE, DB_HASH, &openinfo);
+ O_RDWR|O_CREAT|O_EXCL, PERM_INSECURE, DB_HASH, &openinfo);
if (dp == NULL)
error(buf);
clean = FILE_INSECURE;
sdp = dbopen(sbuf,
- O_RDWR|O_CREAT|O_EXCL|O_SYNC, PERM_SECURE, DB_HASH, &openinfo);
+ O_RDWR|O_CREAT|O_EXCL, PERM_SECURE, DB_HASH, &openinfo);
if (sdp == NULL)
error(sbuf);
clean = FILE_SECURE;
Modified: releng/10.3/usr.sbin/services_mkdb/services_mkdb.c
==============================================================================
--- releng/10.3/usr.sbin/services_mkdb/services_mkdb.c Sun Mar 6 17:34:21 2016 (r296430)
+++ releng/10.3/usr.sbin/services_mkdb/services_mkdb.c Sun Mar 6 18:22:24 2016 (r296431)
@@ -141,7 +141,7 @@ main(int argc, char *argv[])
err(1, "Cannot install exit handler");
(void)snprintf(tname, sizeof(tname), "%s.tmp", dbname);
- db = dbopen(tname, O_RDWR | O_CREAT | O_EXCL | O_SYNC,
+ db = dbopen(tname, O_RDWR | O_CREAT | O_EXCL,
(S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH), DB_HASH, &hinfo);
if (!db)
err(1, "Error opening temporary database `%s'", tname);
More information about the svn-src-all
mailing list