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

Re: back-mdb - futures...



Howard Chu writes:
> The basic idea is to construct a database that is always mmap'd to a
> fixed virtual address, and which returns its mmap'd data pages directly
> to the caller (instead of copying them to a newly allocated
> buffer). Given a fixed address, it becomes feasible to make the on-disk
> record format identical to the in-memory format. (...)

One big problem, if I understand you correctly, is that a database
accumulates the results bugs more efficiently than anything else.
There's no layer between slapd and the disk database which may catch
an error or fail before the error gets saved.

So if something does a wild pointer write which ends up in the database,
it stays written.  If something creates a wild pointer out from an entry
in the database (ping ITS#5340), you've saved a "slapd will crash" state
into the database itself.  be_release() of the entry doesn't help, nor
does stopping slapd.  slapcat/slapadd might save you since it doesn't
need the entire database, but it too is more fragile.

-- 
Hallvard