MFC:
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 This should improve the performance of building db files.
This commit is contained in:
parent
0ea76a354b
commit
241b0e18f1
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user