summaryrefslogtreecommitdiff
path: root/lib/ntdb/open.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ntdb/open.c')
-rw-r--r--lib/ntdb/open.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/lib/ntdb/open.c b/lib/ntdb/open.c
index abec117236..2a265afe7d 100644
--- a/lib/ntdb/open.c
+++ b/lib/ntdb/open.c
@@ -679,6 +679,17 @@ _PUBLIC_ struct ntdb_context *ntdb_open(const char *name, int ntdb_flags,
ntdb->file->device = st.st_dev;
ntdb->file->inode = st.st_ino;
+
+ /* call their open hook if they gave us one. */
+ if (ntdb->openhook) {
+ ecode = ntdb->openhook(ntdb->file->fd, ntdb->openhook_data);
+ if (ecode != NTDB_SUCCESS) {
+ ntdb_logerr(ntdb, ecode, NTDB_LOG_ERROR,
+ "ntdb_open: open hook failed");
+ goto fail;
+ }
+ open_flags |= O_CREAT;
+ }
} else {
/* ensure there is only one process initialising at once */
ecode = ntdb_lock_open(ntdb, openlock,
@@ -689,17 +700,6 @@ _PUBLIC_ struct ntdb_context *ntdb_open(const char *name, int ntdb_flags,
}
}
- /* call their open hook if they gave us one. */
- if (ntdb->openhook) {
- ecode = ntdb->openhook(ntdb->file->fd, ntdb->openhook_data);
- if (ecode != NTDB_SUCCESS) {
- ntdb_logerr(ntdb, ecode, NTDB_LOG_ERROR,
- "ntdb_open: open hook failed");
- goto fail;
- }
- open_flags |= O_CREAT;
- }
-
/* If they used O_TRUNC, read will return 0. */
rlen = pread(ntdb->file->fd, &hdr, sizeof(hdr), 0);
if (rlen == 0 && (open_flags & O_CREAT)) {