]> git.sur5r.net Git - openldap/commitdiff
Fix mdb_copy & co when MDB pagesize < OS pagesize
authorHallvard Furuseth <h.b.furuseth@usit.uio.no>
Wed, 9 Jul 2014 19:38:45 +0000 (21:38 +0200)
committerHoward Chu <hyc@symas.com>
Thu, 24 Jul 2014 11:04:24 +0000 (04:04 -0700)
libraries/liblmdb/mdb.c

index 88120b90b412066b89a3cb74c7384fa95e252fbc..3e62b2e28f51adf16d0a1411b379ad9e808d5391 100644 (file)
@@ -8410,13 +8410,13 @@ mdb_env_copyfd1(MDB_env *env, HANDLE fd)
 #ifdef _WIN32
        my.mc_mutex = CreateMutex(NULL, FALSE, NULL);
        my.mc_cond = CreateEvent(NULL, FALSE, FALSE, NULL);
-       my.mc_wbuf[0] = _aligned_malloc(MDB_WBUF*2, env->me_psize);
+       my.mc_wbuf[0] = _aligned_malloc(MDB_WBUF*2, env->me_os_psize);
        if (my.mc_wbuf[0] == NULL)
                return errno;
 #else
        pthread_mutex_init(&my.mc_mutex, NULL);
        pthread_cond_init(&my.mc_cond, NULL);
-       rc = posix_memalign((void **)&my.mc_wbuf[0], env->me_psize, MDB_WBUF*2);
+       rc = posix_memalign((void **)&my.mc_wbuf[0], env->me_os_psize, MDB_WBUF*2);
        if (rc)
                return rc;
 #endif
@@ -8654,6 +8654,7 @@ mdb_env_copy2(MDB_env *env, const char *path, unsigned int flags)
                goto leave;
        }
 
+       if (env->me_psize >= env->me_os_psize) {
 #ifdef O_DIRECT
        /* Set O_DIRECT if the file system supports it */
        if ((rc = fcntl(newfd, F_GETFL)) != -1)
@@ -8666,6 +8667,7 @@ mdb_env_copy2(MDB_env *env, const char *path, unsigned int flags)
                goto leave;
        }
 #endif
+       }
 
        rc = mdb_env_copyfd2(env, newfd, flags);