[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: openldap.git branch mdb.master updated. 0ce6bb4be0034120c850917bc4f59b4d4efc1432



I wrote:

> A simple variant of page ranges, to save space and simplify range handling:
>   /* Page range: (pagecount << MDB_PGNO_BITS) | (pageno + pagecount) */
>   typedef pgno_t mdb_pages_t;
> 
> Lone pages get pagecount=1.  With MDB_PGCOUNT_BITS = (64bit 4 ? 19 : 12)

MDB_PGCOUNT_BITS = sizeof(mdb_pages_t)*CHAR_BIT - MDB_PGNO_BITS,
i.e. mdb_pages_t's remainig bits.

> and page size 4096, that limits MDB to a 128 petabyte DB and 2G entry
> size.  Or 4G database and 16M entry size on 32-bit machines.  (I'd call
> limiting the entry size a bonus compared to today's mdb: The current
> freelist doesn't exactly handle 2 billion freed pages gracefully.)

2/4096 billion.

-- 
Hallvard