ldb_mdb: handle EBADE from mdb_env_open
authorGary Lockyer <gary@catalyst.net.nz>
Tue, 20 Mar 2018 22:38:22 +0000 (11:38 +1300)
committerStefan Metzmacher <metze@samba.org>
Thu, 12 Apr 2018 14:27:18 +0000 (16:27 +0200)
Under some circumstances mdb_env_open returns EBADE, we treat this as
indicating the file is not a valid lmdb format file.

Signed-off-by: Gary Lockyer <gary@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
lib/ldb/ldb_mdb/ldb_mdb.c

index 1e6c99b3dd0d92eb5a030016ece211d725052fda..0e81a824f0eff6f78864eef2ddacb57e32406c5e 100644 (file)
@@ -41,6 +41,7 @@ int ldb_mdb_err_map(int lmdb_err)
                return LDB_SUCCESS;
        case EIO:
                return LDB_ERR_OPERATIONS_ERROR;
+       case EBADE:
        case MDB_INCOMPATIBLE:
        case MDB_CORRUPTED:
        case MDB_INVALID:
@@ -788,7 +789,7 @@ static int lmdb_pvt_open(struct lmdb_private *lmdb,
                        "Could not create MDB environment %s: %s\n",
                        path,
                        mdb_strerror(ret));
-               return LDB_ERR_OPERATIONS_ERROR;
+               return ldb_mdb_err_map(ret);
        }
 
        /* Close when lmdb is released */