Previous releases of Berkeley DB returned the system error EIO when the
memp_fget function was called to retrieve a page, the page did not
exist, and the DB_MPOOL_CREATE
flag was not set. In the 3.3
release, the error DB_PAGE_NOTFOUND
is returned instead, to
allow applications to distinguish between recoverable and
non-recoverable errors. Applications calling the memp_fget function
and checking for a return of EIO should check for
DB_PAGE_NOTFOUND
instead.
Previous releases of Berkeley DB treated filesystem I/O failure (the most common of which the filesystem running out of space), as a fatal error, returning DB_RUNRECOVERY. When a filesystem failure happens in the 3.3 release Berkeley DB returns the underlying system error (usually EIO), but can continue to run. Applications should abort any enclosing transaction when a recoverable system error occurs in order to recover from the error.