"Todd C. Miller" <[email protected]> writes:

> I can explain that. The page size is being set based on the file
> system block size.

Yes, I just discovered exactly this.

I was looking at the btree.c code and saw:

        if (fstat(fd, &sb) == 0)
                psize = sb.st_blksize;
        else
                psize = PAGESIZE;

On my desktop, from dumpfs(8):

bsize   16384   shift   14      mask    0xffffc000

And on the server:

bsize   65536   shift   16      mask    0xffff0000


> Either indx_t needs to be changed to uint32_t or an upper bound
> needs to be placed on psize, perhaps 0x7fff.
>
> I'm not familiar enough with that code to say which is better.

I naively tried changing indx_t to uint32_tthat and got:

May 26 10:44:03.382 [27298] opening namespace dc=example,dc=org
btree_read_header:908: header has invalid magic

Currently, BT_MAGIC is #defined as 0xB3DBB3DB but I don't know what
comprises that value.

I think my short term workaround is going to be a smaller partition
mounted on /var/db/ldap.

          
Allan

Reply via email to