]> git.sur5r.net Git - openldap/log
openldap
9 years agoBump version to 0.9.15
Howard Chu [Fri, 19 Jun 2015 13:13:43 +0000 (14:13 +0100)]
Bump version to 0.9.15

(not really, since this is the dev/non-release branch)

9 years agoUse ftok() for semget(), and only lower mode bits
Hallvard Furuseth [Tue, 2 Jun 2015 18:51:03 +0000 (20:51 +0200)]
Use ftok() for semget(), and only lower mode bits

9 years agoClarify mdb_env_open() doc of 'mode' param
Hallvard Furuseth [Tue, 2 Jun 2015 18:49:33 +0000 (20:49 +0200)]
Clarify mdb_env_open() doc of 'mode' param

9 years agoITS#8156 Fix MDB_MAXKEYSIZE doc
Hallvard Furuseth [Thu, 28 May 2015 18:51:24 +0000 (20:51 +0200)]
ITS#8156 Fix MDB_MAXKEYSIZE doc

9 years agoITS#8157 mdb_txn_renew0(): init after error checks
Hallvard Furuseth [Wed, 27 May 2015 20:26:54 +0000 (22:26 +0200)]
ITS#8157 mdb_txn_renew0(): init after error checks

9 years agomdb_txn_renew(): Drop pointless diff from mdb.RE.
Hallvard Furuseth [Wed, 27 May 2015 20:23:50 +0000 (22:23 +0200)]
mdb_txn_renew(): Drop pointless diff from mdb.RE.

Makes the code friendlier to "git cherry-pick".

9 years agoSet/clear mp_pad, md_pad (MDB_DUPFIXED data size).
Hallvard Furuseth [Wed, 20 May 2015 02:04:38 +0000 (04:04 +0200)]
Set/clear mp_pad, md_pad (MDB_DUPFIXED data size).

mdb_xcursor_init1(): md_pad is only used when MDB_DUPFIXED.
mdb_page_split():    Copy mp_pad too. Used by mdb_page_list().

9 years agomtest*.c: Fix MDB_NOOVERWRITE, plug cursor leak
Hallvard Furuseth [Wed, 20 May 2015 01:17:47 +0000 (03:17 +0200)]
mtest*.c: Fix MDB_NOOVERWRITE, plug cursor leak

9 years agoITS#8117 Fix MDB_INTEGERDUP keysize doc + md_dcmp
Hallvard Furuseth [Tue, 19 May 2015 18:33:35 +0000 (20:33 +0200)]
ITS#8117 Fix MDB_INTEGERDUP keysize doc + md_dcmp

9 years agoITS#8117 better fix
Howard Chu [Sun, 3 May 2015 06:52:47 +0000 (07:52 +0100)]
ITS#8117 better fix

Don't change mc_dbx because we would need to undo the change if
the txn aborts. Make the fix (for get) match existing code for put.

9 years agoRevert "ITS#8117 cleanup prev commit"
Howard Chu [Sun, 3 May 2015 06:43:11 +0000 (07:43 +0100)]
Revert "ITS#8117 cleanup prev commit"

This reverts commit ce7ba0ceb69fd2cd56d557c1a877d046ec9f246c.

Revert "ITS#8117 fix INTEGERDUP compare"

This reverts commit ed13d4aa59cf06a1bb6b096fe19af63fc6f8737a.

9 years agoITS#8117 cleanup prev commit
Howard Chu [Wed, 29 Apr 2015 16:28:21 +0000 (17:28 +0100)]
ITS#8117 cleanup prev commit

9 years agoITS#8117 fix INTEGERDUP compare
Howard Chu [Wed, 29 Apr 2015 16:12:40 +0000 (17:12 +0100)]
ITS#8117 fix INTEGERDUP compare

9 years agoITS#8109 fix mdb_cursor_del0 on empty DB
Howard Chu [Thu, 23 Apr 2015 04:49:56 +0000 (05:49 +0100)]
ITS#8109 fix mdb_cursor_del0 on empty DB

9 years agoITS#8106 retry writes on EINTR
Howard Chu [Fri, 17 Apr 2015 17:32:54 +0000 (18:32 +0100)]
ITS#8106 retry writes on EINTR

9 years agoITS#8062 also handle subcursors
Howard Chu [Wed, 15 Apr 2015 23:19:40 +0000 (00:19 +0100)]
ITS#8062 also handle subcursors

9 years agoITS#8062 fix rebalance
Howard Chu [Wed, 15 Apr 2015 22:20:55 +0000 (23:20 +0100)]
ITS#8062 fix rebalance

(Probably fixes the ITS, definitely fixes a bug) when collapsing
the root page, fixups of other cursors was incomplete.

9 years agoCleanup mtest* and sample-*.
Hallvard Furuseth [Tue, 14 Apr 2015 18:25:51 +0000 (20:25 +0200)]
Cleanup mtest* and sample-*.

Fix mdb_txn_begin(&read-only txn) calls. Test mdb_env_set_maxreaders().
Rename DBI open/close functions. Move mdb_dbi_close() out of txn.

9 years agoReformat mdb_dbi_open() doc for clarity
Hallvard Furuseth [Tue, 14 Apr 2015 18:24:30 +0000 (20:24 +0200)]
Reformat mdb_dbi_open() doc for clarity

9 years agoCleanup MDB_env.me_txn0.
Hallvard Furuseth [Wed, 8 Apr 2015 19:52:05 +0000 (21:52 +0200)]
Cleanup MDB_env.me_txn0.

More fallout from 4d02c741b120786df1b87ee9ed49c1d3f9bc7522.

9 years agoFix per-txn MDB_NOMETASYNC, MDB_NOSYNC.
Hallvard Furuseth [Wed, 8 Apr 2015 19:51:50 +0000 (21:51 +0200)]
Fix per-txn MDB_NOMETASYNC, MDB_NOSYNC.

Fallout from 4d02c741b120786df1b87ee9ed49c1d3f9bc7522. The flags
were ignored: mdb_txn_renew0/begin cleared and/or did not set them.

9 years agoRenumber MDB_TXN_* flags, simplify flag code
Hallvard Furuseth [Wed, 8 Apr 2015 19:51:16 +0000 (21:51 +0200)]
Renumber MDB_TXN_* flags, simplify flag code

9 years agomdb_txn_renew(): Clear error from previous txn
Hallvard Furuseth [Wed, 8 Apr 2015 19:47:24 +0000 (21:47 +0200)]
mdb_txn_renew(): Clear error from previous txn

9 years agoITS#8062 fix uninit'd cursor index
Howard Chu [Wed, 18 Mar 2015 19:26:21 +0000 (19:26 +0000)]
ITS#8062 fix uninit'd cursor index

9 years agoITS#8066 fix mdb_load with large values
Howard Chu [Thu, 26 Feb 2015 21:36:04 +0000 (21:36 +0000)]
ITS#8066 fix mdb_load with large values

9 years agoHappy New Year
Quanah Gibson-Mount [Thu, 12 Feb 2015 17:17:59 +0000 (11:17 -0600)]
Happy New Year

9 years agoHappy New Year
Quanah Gibson-Mount [Thu, 12 Feb 2015 16:46:33 +0000 (10:46 -0600)]
Happy New Year

9 years agoAlso support NOMETASYNC on txn_begin
Howard Chu [Mon, 2 Feb 2015 10:33:41 +0000 (10:33 +0000)]
Also support NOMETASYNC on txn_begin

9 years agoSupport MDB_NOSYNC on mdb_txn_begin()
Howard Chu [Fri, 30 Jan 2015 09:21:05 +0000 (09:21 +0000)]
Support MDB_NOSYNC on mdb_txn_begin()

9 years agoFix EACCES description
Hallvard Furuseth [Tue, 27 Jan 2015 05:10:57 +0000 (06:10 +0100)]
Fix EACCES description

9 years agoITS#7971 Fix reader allocation and me_numreaders
Hallvard Furuseth [Sat, 17 Jan 2015 05:32:12 +0000 (06:32 +0100)]
ITS#7971 Fix reader allocation and me_numreaders

9 years agomdb_env_set_flags(): Reject CHANGELESS flags.
Hallvard Furuseth [Wed, 14 Jan 2015 07:12:50 +0000 (08:12 +0100)]
mdb_env_set_flags(): Reject CHANGELESS flags.

Reverts part of a2ac10107e2fb845c4a38a339239063ec4407d84.
MDB_ROBUST needed to be accepted, but that flag is gone.

9 years agoFix potential null deref (coverity)
Howard Chu [Tue, 13 Jan 2015 18:47:18 +0000 (18:47 +0000)]
Fix potential null deref (coverity)

9 years agoWhitespace (align with mdb.RE)
Hallvard Furuseth [Mon, 12 Jan 2015 20:02:29 +0000 (21:02 +0100)]
Whitespace (align with mdb.RE)

9 years agoMake SysV semaphores robust. Cleanup MDB_ROBUST.
Hallvard Furuseth [Mon, 12 Jan 2015 20:02:29 +0000 (21:02 +0100)]
Make SysV semaphores robust. Cleanup MDB_ROBUST.

9 years agoITS#8021 doc: Don't mix MDB_WRITEMAP + non-WRITEMAP
Hallvard Furuseth [Mon, 12 Jan 2015 11:19:51 +0000 (12:19 +0100)]
ITS#8021 doc: Don't mix MDB_WRITEMAP + non-WRITEMAP

9 years agoMore cleanup for fdatasync hack
Howard Chu [Mon, 12 Jan 2015 10:38:14 +0000 (10:38 +0000)]
More cleanup for fdatasync hack

9 years agoTweak conditionals for fdatasync hack
Howard Chu [Sun, 11 Jan 2015 11:37:37 +0000 (11:37 +0000)]
Tweak conditionals for fdatasync hack

9 years agoITS#8021 env_sync is invalid in RDONLY env
Howard Chu [Fri, 9 Jan 2015 11:25:07 +0000 (11:25 +0000)]
ITS#8021 env_sync is invalid in RDONLY env

9 years agofdatasync hack, again
Howard Chu [Thu, 8 Jan 2015 12:54:14 +0000 (12:54 +0000)]
fdatasync hack, again

Check for ext3/ext4 fs, then check kernel version.

9 years agoRevert "Note MDB_SAFE_FDATASYNC"
Howard Chu [Thu, 8 Jan 2015 12:17:29 +0000 (12:17 +0000)]
Revert "Note MDB_SAFE_FDATASYNC"

This reverts commit 293d6bb47f7f0d54a45d57ce2be3a9595e806dc0.

Revert "Simpler fdatasync hack"

This reverts commit 9585c012335b2a28fbfdd267bcdeeeea91dc0f08.

9 years agoNote MDB_SAFE_FDATASYNC
Howard Chu [Thu, 8 Jan 2015 11:43:57 +0000 (11:43 +0000)]
Note MDB_SAFE_FDATASYNC

9 years agoSimpler fdatasync hack
Howard Chu [Thu, 8 Jan 2015 11:42:08 +0000 (11:42 +0000)]
Simpler fdatasync hack

9 years agoRevert "Fix prev commit for env_sync0"
Howard Chu [Thu, 8 Jan 2015 11:28:33 +0000 (11:28 +0000)]
Revert "Fix prev commit for env_sync0"

This reverts commit 985bbbbdd5d64e57f55249ffdeb7c08035b240b2.

Revert "Hack for potential ext3/ext4 corruption issue"

This reverts commit 0018eeb2c3b2239c30def9d47c9d194a4ebf35fe.

9 years agoFix prev commit for env_sync0
Howard Chu [Sun, 21 Dec 2014 00:13:50 +0000 (00:13 +0000)]
Fix prev commit for env_sync0

9 years agoHack for potential ext3/ext4 corruption issue
Howard Chu [Thu, 18 Dec 2014 04:38:53 +0000 (04:38 +0000)]
Hack for potential ext3/ext4 corruption issue

Use regular fsync() if we think this commit grew the DB file.

9 years agoFix MDB_APPEND doc
Howard Chu [Mon, 15 Dec 2014 20:40:59 +0000 (20:40 +0000)]
Fix MDB_APPEND doc

We actually compare the new key against the last key, to prevent
corruption.

9 years agomake clean: remove *.lo
Hallvard Furuseth [Sat, 13 Dec 2014 19:35:08 +0000 (20:35 +0100)]
make clean: remove *.lo

9 years agoTry to avoid an invalid datafile after failed init
Hallvard Furuseth [Mon, 8 Dec 2014 08:56:36 +0000 (09:56 +0100)]
Try to avoid an invalid datafile after failed init

9 years agoClarify mdb_dbi_open doc
Howard Chu [Mon, 8 Dec 2014 03:21:09 +0000 (03:21 +0000)]
Clarify mdb_dbi_open doc

The concurrency restriction is on threads within a single process.
Multiple processes can use mdb_dbi_open without affecting each other.

9 years agoC90-compatible code for SysV semaphores
Hallvard Furuseth [Fri, 5 Dec 2014 20:00:21 +0000 (21:00 +0100)]
C90-compatible code for SysV semaphores

9 years agoITS#7987 fix excessive space for single write txn
Leo Yuriev [Fri, 5 Dec 2014 19:30:31 +0000 (19:30 +0000)]
ITS#7987 fix excessive space for single write txn

9 years agoITS#7994 fix prev commit
Howard Chu [Fri, 5 Dec 2014 19:15:41 +0000 (19:15 +0000)]
ITS#7994 fix prev commit

Strip docs promising behaviors that we don't promise to hold.
Strip MDB_txnid_t typedef.

9 years agoITS#7994 Access to current transaction ID.
David Barbour [Fri, 5 Dec 2014 17:18:30 +0000 (11:18 -0600)]
ITS#7994 Access to current transaction ID.

I, David Barbour, hereby place the following modifications to OpenLDAP
Software (and only these modifications) into the public domain. Hence,
these modifications may be freely used and/or redistributed for any
purpose with or without attribution and/or other notice.

9 years agoFix SysV semaphores - repair mti_txnid.
Hallvard Furuseth [Fri, 5 Dec 2014 17:18:53 +0000 (18:18 +0100)]
Fix SysV semaphores - repair mti_txnid.

Similar to 443a7e40c4280cfd07cbf80c5de62ea072b136e3.

9 years agoFor ITS#7789: Ensure mapsize >= pages in use.
Hallvard Furuseth [Wed, 3 Dec 2014 11:37:55 +0000 (12:37 +0100)]
For ITS#7789: Ensure mapsize >= pages in use.

Check new mapsizes against mm_last_pg.  Move
mdb_env_init_meta0() so it can set mm_last_pg earlier.

9 years agoFix WIN32 -> _WIN32
Hallvard Furuseth [Wed, 3 Dec 2014 11:27:53 +0000 (12:27 +0100)]
Fix WIN32 -> _WIN32

9 years agomdb_strerror: Silence warning @ Windows
Hallvard Furuseth [Mon, 1 Dec 2014 07:59:29 +0000 (08:59 +0100)]
mdb_strerror: Silence warning @ Windows

9 years agoFix comments
Hallvard Furuseth [Mon, 1 Dec 2014 07:59:29 +0000 (08:59 +0100)]
Fix comments

9 years agoClean up SysV semaphore code.
Hallvard Furuseth [Mon, 1 Dec 2014 07:59:29 +0000 (08:59 +0100)]
Clean up SysV semaphore code.

Change MDB_LOCK_FORMAT to differ from Posix semaphores/mutexes.
Do not use array/member length 0 for MDB_txninfo.mt2.

9 years agoFix robust mutexes - repair mti_txnid.
Hallvard Furuseth [Mon, 1 Dec 2014 07:59:29 +0000 (08:59 +0100)]
Fix robust mutexes - repair mti_txnid.

Broken by e3b6c359a935283c21e1fd7d03b790d87d53b933, if
commit() crashes in write_meta before setting mti_txnid.

9 years agoSimplify recent changes a bit.
Hallvard Furuseth [Mon, 1 Dec 2014 07:59:29 +0000 (08:59 +0100)]
Simplify recent changes a bit.

9 years agoITS#7961,#7987 Re-fix txn init.
Hallvard Furuseth [Sat, 22 Nov 2014 21:56:31 +0000 (22:56 +0100)]
ITS#7961,#7987 Re-fix txn init.

More fallout from 4d02c741b120786df1b87ee9ed49c1d3f9bc7522:
Don't modify another thread's write txn. Reinit me_txn0 fully.

10 years agoITS#7971 LMDB: clarification in mdb_txn_renew0().
leo@yuriev.ru [Fri, 17 Oct 2014 22:46:53 +0000 (22:46 +0000)]
ITS#7971 LMDB: clarification in mdb_txn_renew0().

10 years agoITS#7970 LMDB: Critical Heisenbug
leo@yuriev.ru [Fri, 17 Oct 2014 22:35:41 +0000 (22:35 +0000)]
ITS#7970 LMDB: Critical Heisenbug

Inconsistent reading & SIGSEGV due to the race condition.

10 years agoITS#7969 LMDB: volatile & __synchronize().
leo@yuriev.ru [Fri, 17 Oct 2014 22:22:39 +0000 (22:22 +0000)]
ITS#7969 LMDB: volatile & __synchronize().

Globally shared fields of meta-data are not 'volatile'.

10 years agoITS#7959 fix prev commit
Howard Chu [Wed, 8 Oct 2014 18:25:27 +0000 (19:25 +0100)]
ITS#7959 fix prev commit

fstat returns -1, not an errno. Move code into its own function
for reuse.

10 years agoITS#7961 fix txn init
Howard Chu [Sat, 4 Oct 2014 20:48:49 +0000 (21:48 +0100)]
ITS#7961 fix txn init

More fallout from 4d02c741b120786df1b87ee9ed49c1d3f9bc7522

10 years agoITS#7959 Check fstat return value
Jean-Christophe DUBOIS [Fri, 3 Oct 2014 18:24:25 +0000 (20:24 +0200)]
ITS#7959 Check fstat return value

Signed-off-by: Jean-Christophe DUBOIS <jcd@tribudubois.net>
10 years agoITS#7841 trivial cleanup
Leo Yuriev [Thu, 4 Sep 2014 20:19:16 +0000 (00:19 +0400)]
ITS#7841 trivial cleanup

TRIVIA - lmdb: clean testdb-dir while "make test".

10 years agoITS#7956 fix compact of empty env
Howard Chu [Thu, 2 Oct 2014 21:11:43 +0000 (22:11 +0100)]
ITS#7956 fix compact of empty env

10 years agoITS#7955, #7671 fix MDB_PREV_DUP
Howard Chu [Thu, 2 Oct 2014 20:58:20 +0000 (21:58 +0100)]
ITS#7955, #7671 fix MDB_PREV_DUP

10 years agoITS#7953 .gitignore *.lo
Howard Chu [Thu, 2 Oct 2014 20:35:15 +0000 (21:35 +0100)]
ITS#7953 .gitignore *.lo

10 years agoITS#7952 .gitignore mdb_dump/load
Howard Chu [Thu, 2 Oct 2014 20:33:35 +0000 (21:33 +0100)]
ITS#7952 .gitignore mdb_dump/load

10 years agoDon't use -fPIC for static lib
Howard Chu [Wed, 1 Oct 2014 20:00:03 +0000 (21:00 +0100)]
Don't use -fPIC for static lib

10 years agoUse robust mutexes by default
Howard Chu [Wed, 1 Oct 2014 19:58:15 +0000 (20:58 +0100)]
Use robust mutexes by default

Making it optional on pthreads just complicates things;
they're always robust on other implementations

10 years agoUse SysV semaphores instead of POSIX
Howard Chu [Sun, 20 Jul 2014 18:08:55 +0000 (11:08 -0700)]
Use SysV semaphores instead of POSIX

Since they can cleanup after themselves on process exit

10 years agoMust do dlist_free before releasing Wmutex
Howard Chu [Sun, 20 Jul 2014 15:10:34 +0000 (08:10 -0700)]
Must do dlist_free before releasing Wmutex

10 years agoMDB_ROBUST: Use MDB_PID_T. Drop a wmutex variable.
Hallvard Furuseth [Sun, 20 Jul 2014 14:42:04 +0000 (16:42 +0200)]
MDB_ROBUST: Use MDB_PID_T. Drop a wmutex variable.

10 years agoFree write mutex earlier in txn_reset0
Howard Chu [Wed, 16 Jul 2014 16:24:45 +0000 (09:24 -0700)]
Free write mutex earlier in txn_reset0

10 years agoAdd MDB_ROBUST
Hallvard Furuseth [Wed, 16 Jul 2014 14:15:58 +0000 (07:15 -0700)]
Add MDB_ROBUST

10 years agoAndroid also only has memalign
Howard Chu [Thu, 25 Sep 2014 18:25:56 +0000 (19:25 +0100)]
Android also only has memalign

10 years agonew date
Howard Chu [Sat, 20 Sep 2014 06:24:32 +0000 (07:24 +0100)]
new date

10 years agoITS#7943 reinit txn flags
Howard Chu [Fri, 19 Sep 2014 00:45:43 +0000 (01:45 +0100)]
ITS#7943 reinit txn flags

When reusing the main write txn

10 years agoPlug leak in 4d02c741b120786df1b87ee9ed49c1d3f9bc7522
Howard Chu [Thu, 18 Sep 2014 00:22:02 +0000 (01:22 +0100)]
Plug leak in 4d02c741b120786df1b87ee9ed49c1d3f9bc7522

Free writer txn on env_close

10 years agoSilence some clang warnings
Howard Chu [Tue, 16 Sep 2014 20:54:07 +0000 (21:54 +0100)]
Silence some clang warnings

10 years agoRelease 0.9.14
Howard Chu [Mon, 15 Sep 2014 18:48:32 +0000 (19:48 +0100)]
Release 0.9.14

10 years agoChange retry to num times 60. Testing shows that on a known dataset, this has the...
Quanah Gibson-Mount [Sat, 13 Sep 2014 21:21:17 +0000 (16:21 -0500)]
Change retry to num times 60.  Testing shows that on a known dataset, this has the same growth behavior as 2.4.39, while num times 20 resulted in significant growth.

10 years agoMore for me_pgoldest
Howard Chu [Tue, 9 Sep 2014 18:44:23 +0000 (19:44 +0100)]
More for me_pgoldest

Leave it in main env struct, it doesn't need to be rolled back
with nested txns.

10 years agoRemember oldest reader txnid
Howard Chu [Tue, 9 Sep 2014 18:40:05 +0000 (19:40 +0100)]
Remember oldest reader txnid

Don't walk the readers table unless we really need to.

10 years agoUse a single write txn
Howard Chu [Thu, 4 Sep 2014 09:40:11 +0000 (10:40 +0100)]
Use a single write txn

10 years agoITS#7913 cleanup
Howard Chu [Sun, 24 Aug 2014 20:18:03 +0000 (21:18 +0100)]
ITS#7913 cleanup

we already checked for data == NULL, drop unnecessary if

10 years agoMore for MIPS
Howard Chu [Fri, 22 Aug 2014 00:40:20 +0000 (17:40 -0700)]
More for MIPS

Move CACHEFLUSH, avoid unnecessary if()

10 years agoPartially revert ada26306992babeccad0c5443fbd76e28dd24cd6
Howard Chu [Mon, 18 Aug 2014 03:44:53 +0000 (20:44 -0700)]
Partially revert ada26306992babeccad0c5443fbd76e28dd24cd6

Of course, MacOSX only has posix_memalign, and only in recent versions.
(Older versions could use valloc instead. That precludes ever changing
the LMDB pagesize to be different from the OS pagesize.) Not all that
crucial since it only affects mdb_env_copyfd1.

10 years agoMicrooptimize loose pages
Hallvard Furuseth [Sat, 16 Aug 2014 23:50:32 +0000 (01:50 +0200)]
Microoptimize loose pages

10 years agoFix loose pages in mdb_freelist_save().
Hallvard Furuseth [Sat, 16 Aug 2014 22:29:12 +0000 (00:29 +0200)]
Fix loose pages in mdb_freelist_save().

Leaving them in dirty_list caused breakage.  Instead merge them
into me_pghead at the end, when no more pages will be allocated.

10 years agoSplit out mdb_midl_xmerge, add MDB_IDL_ALLOCLEN
Hallvard Furuseth [Sat, 16 Aug 2014 09:34:44 +0000 (11:34 +0200)]
Split out mdb_midl_xmerge, add MDB_IDL_ALLOCLEN

10 years agoITS#7917
Howard Chu [Mon, 11 Aug 2014 18:01:20 +0000 (11:01 -0700)]
ITS#7917

10 years agoITS#7917 fix mdb_dbi_open
Howard Chu [Mon, 11 Aug 2014 18:00:11 +0000 (11:00 -0700)]
ITS#7917 fix mdb_dbi_open

Don't let dummy go out of scope

10 years agoJust use memalign, not posix_memalign
Howard Chu [Thu, 7 Aug 2014 18:06:53 +0000 (11:06 -0700)]
Just use memalign, not posix_memalign

Everything has it. Solaris doesn't have posix_memalign.