mirror of
https://git.openldap.org/openldap/openldap.git
synced 2026-01-04 14:10:39 -05:00
Revert "Fix prev commit for env_sync0"
This reverts commit985bbbbdd5. Revert "Hack for potential ext3/ext4 corruption issue" This reverts commit0018eeb2c3.
This commit is contained in:
parent
985bbbbdd5
commit
0ef1e0b16d
1 changed files with 5 additions and 38 deletions
|
|
@ -368,7 +368,6 @@ static int mdb_mutex_failed(MDB_env *env, mdb_mutex_t *mutex, int rc);
|
|||
*/
|
||||
#ifndef MDB_FDATASYNC
|
||||
# define MDB_FDATASYNC fdatasync
|
||||
# define HAVE_FDATASYNC 1
|
||||
#endif
|
||||
|
||||
#ifndef MDB_MSYNC
|
||||
|
|
@ -1155,7 +1154,7 @@ struct MDB_env {
|
|||
MDB_txn *me_txn; /**< current write transaction */
|
||||
MDB_txn *me_txn0; /**< prealloc'd write transaction */
|
||||
size_t me_mapsize; /**< size of the data memory map */
|
||||
size_t me_size; /**< current file size */
|
||||
off_t me_size; /**< current file size */
|
||||
pgno_t me_maxpg; /**< me_mapsize / me_psize */
|
||||
MDB_dbx *me_dbxs; /**< array of static DB info */
|
||||
uint16_t *me_dbflags; /**< array of flags from MDB_db.md_flags */
|
||||
|
|
@ -2342,19 +2341,10 @@ fail:
|
|||
return rc;
|
||||
}
|
||||
|
||||
/* internal env_sync flags: */
|
||||
#define FORCE 1 /* as before, force a flush */
|
||||
#define FGREW 0x8000 /* file has grown, do a full fsync instead of just
|
||||
fdatasync. We shouldn't have to do this, according to the POSIX spec.
|
||||
But common Linux FSs violate the spec and won't sync required metadata
|
||||
correctly when the file grows. This only makes a difference if the
|
||||
platform actually distinguishes fdatasync from fsync.
|
||||
http://www.openldap.org/lists/openldap-devel/201411/msg00000.html */
|
||||
|
||||
static int
|
||||
mdb_env_sync0(MDB_env *env, int flag)
|
||||
int
|
||||
mdb_env_sync(MDB_env *env, int force)
|
||||
{
|
||||
int rc = 0, force = flag & FORCE;
|
||||
int rc = 0;
|
||||
if (force || !F_ISSET(env->me_flags, MDB_NOSYNC)) {
|
||||
if (env->me_flags & MDB_WRITEMAP) {
|
||||
int flags = ((env->me_flags & MDB_MAPASYNC) && !force)
|
||||
|
|
@ -2366,12 +2356,6 @@ mdb_env_sync0(MDB_env *env, int flag)
|
|||
rc = ErrCode();
|
||||
#endif
|
||||
} else {
|
||||
#ifdef HAVE_FDATASYNC
|
||||
if (flag & FGREW) {
|
||||
if (fsync(env->me_fd)) /* Avoid ext-fs bugs, do full sync */
|
||||
rc = ErrCode();
|
||||
} else
|
||||
#endif
|
||||
if (MDB_FDATASYNC(env->me_fd))
|
||||
rc = ErrCode();
|
||||
}
|
||||
|
|
@ -2379,12 +2363,6 @@ mdb_env_sync0(MDB_env *env, int flag)
|
|||
return rc;
|
||||
}
|
||||
|
||||
int
|
||||
mdb_env_sync(MDB_env *env, int force)
|
||||
{
|
||||
return mdb_env_sync0(env, force != 0);
|
||||
}
|
||||
|
||||
/** Back up parent txn's cursors, then grab the originals for tracking */
|
||||
static int
|
||||
mdb_cursor_shadow(MDB_txn *src, MDB_txn *dst)
|
||||
|
|
@ -3459,15 +3437,8 @@ mdb_txn_commit(MDB_txn *txn)
|
|||
mdb_audit(txn);
|
||||
#endif
|
||||
|
||||
i = 0;
|
||||
#ifdef HAVE_FDATASYNC
|
||||
if (txn->mt_next_pgno * env->me_psize > env->me_size) {
|
||||
i |= FGREW;
|
||||
env->me_size = txn->mt_next_pgno * env->me_psize;
|
||||
}
|
||||
#endif
|
||||
if ((rc = mdb_page_flush(txn, 0)) ||
|
||||
(rc = mdb_env_sync0(env, i)) ||
|
||||
(rc = mdb_env_sync(env, 0)) ||
|
||||
(rc = mdb_env_write_meta(txn)))
|
||||
goto fail;
|
||||
|
||||
|
|
@ -4008,10 +3979,6 @@ mdb_env_open2(MDB_env *env)
|
|||
newenv = 0;
|
||||
}
|
||||
|
||||
rc = mdb_fsize(env->me_fd, &env->me_size);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
rc = mdb_env_map(env, (flags & MDB_FIXEDMAP) ? meta.mm_address : NULL);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
|
|
|||
Loading…
Reference in a new issue