mirror of
https://github.com/samba-team/samba.git
synced 2025-01-26 10:04:02 +03:00
make TDB_NOSYNC affect all the fsync/msync calls in transactions
During a transaction commit tdb normally uses fsync/msync calls to make it crash safe. This can be disabled using the TDB_NOSYNC flag, but it wasn't disabling all the code paths that caused a fsync/msync.
This commit is contained in:
parent
a9542ba21b
commit
4b4fec65db
@ -522,6 +522,10 @@ fail:
|
||||
*/
|
||||
static int transaction_sync(struct tdb_context *tdb, tdb_off_t offset, tdb_len_t length)
|
||||
{
|
||||
if (tdb->flags & TDB_NOSYNC) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (fsync(tdb->fd) != 0) {
|
||||
tdb->ecode = TDB_ERR_IO;
|
||||
TDB_LOG((tdb, TDB_DEBUG_FATAL, "tdb_transaction: fsync failed\n"));
|
||||
@ -1030,11 +1034,9 @@ int tdb_transaction_commit(struct tdb_context *tdb)
|
||||
SAFE_FREE(tdb->transaction->blocks);
|
||||
tdb->transaction->num_blocks = 0;
|
||||
|
||||
if (!(tdb->flags & TDB_NOSYNC)) {
|
||||
/* ensure the new data is on disk */
|
||||
if (transaction_sync(tdb, 0, tdb->map_size) == -1) {
|
||||
return -1;
|
||||
}
|
||||
/* ensure the new data is on disk */
|
||||
if (transaction_sync(tdb, 0, tdb->map_size) == -1) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
tdb_brlock(tdb, GLOBAL_LOCK, F_UNLCK, F_SETLKW, 0, 1);
|
||||
|
Loading…
x
Reference in New Issue
Block a user