Lines Matching defs:mfp

73 __memp_fopen(dbmp, mfp, path, flags, mode, pagesize, needlock, finfop, retp)
75 MPOOLFILE *mfp;
98 * If mfp is provided, we take the DB_MPOOL_FINFO information from
99 * the mfp. We don't bother initializing everything, because some
100 * of them are expensive to acquire. If no mfp is provided and the
105 if (mfp != NULL) {
106 finfo.ftype = mfp->ftype;
109 finfo.lsn_offset = mfp->lsn_off;
110 finfo.clear_len = mfp->clear_len;
205 if (mfp == NULL)
207 path, pagesize, last_pgno, finfop, &mfp);
209 ++mfp->ref;
222 dbmfp->mfp = mfp;
246 if (F_ISSET(mfp, MP_CAN_MMAP)) {
248 F_CLR(mfp, MP_CAN_MMAP);
250 F_CLR(mfp, MP_CAN_MMAP);
252 F_CLR(mfp, MP_CAN_MMAP);
254 F_CLR(mfp, MP_CAN_MMAP);
259 F_CLR(mfp, MP_CAN_MMAP);
262 if (F_ISSET(mfp, MP_CAN_MMAP)) {
267 F_CLR(mfp, MP_CAN_MMAP);
306 MPOOLFILE *mfp;
317 for (mfp = SH_TAILQ_FIRST(&dbmp->mp->mpfq, __mpoolfile);
318 mfp != NULL; mfp = SH_TAILQ_NEXT(mfp, q, __mpoolfile)) {
319 if (F_ISSET(mfp, MP_TEMP))
322 R_ADDR(dbmp, mfp->fileid_off), DB_FILE_ID_LEN)) {
323 if (finfop->clear_len != mfp->clear_len ||
324 finfop->ftype != mfp->ftype ||
325 pagesize != mfp->stat.st_pagesize) {
333 ++mfp->ref;
334 *retp = mfp;
340 if ((ret = __memp_alloc(dbmp, sizeof(MPOOLFILE), NULL, &mfp)) != 0)
342 *retp = mfp;
345 memset(mfp, 0, sizeof(MPOOLFILE));
346 mfp->ref = 1;
347 mfp->ftype = finfop->ftype;
348 mfp->lsn_off = finfop->lsn_offset;
349 mfp->clear_len = finfop->clear_len;
356 mfp->stat.st_pagesize = pagesize;
357 mfp->orig_last_pgno = mfp->last_pgno = last_pgno;
360 F_SET(mfp, MP_TEMP);
364 strlen(path) + 1, &mfp->path_off, &p)) != 0)
370 DB_FILE_ID_LEN, &mfp->fileid_off, &p)) != 0)
374 F_SET(mfp, MP_CAN_MMAP);
379 mfp->pgcookie_len = 0;
380 mfp->pgcookie_off = 0;
383 finfop->pgcookie->size, &mfp->pgcookie_off, &p)) != 0)
386 mfp->pgcookie_len = finfop->pgcookie->size;
390 SH_TAILQ_INSERT_HEAD(&dbmp->mp->mpfq, mfp, q, __mpoolfile);
393 err: if (mfp->path_off != 0)
395 R_ADDR(dbmp, mfp->path_off));
396 if (mfp->fileid_off != 0)
398 R_ADDR(dbmp, mfp->fileid_off));
399 if (mfp != NULL)
400 __db_shalloc_free(dbmp->addr, mfp);
401 mfp = NULL;
503 MPOOLFILE *mfp;
507 mfp = dbmfp->mfp;
512 if (mfp->ref > 1) {
513 --mfp->ref;
523 mf_offset = R_OFFSET(dbmp, mfp);
541 __memp_bhfree(dbmp, mfp, bhp, 0);
547 SH_TAILQ_REMOVE(&mp->mpfq, mfp, q, __mpoolfile);
550 if (mfp->path_off != 0)
551 __db_shalloc_free(dbmp->addr, R_ADDR(dbmp, mfp->path_off));
552 if (mfp->fileid_off != 0)
553 __db_shalloc_free(dbmp->addr, R_ADDR(dbmp, mfp->fileid_off));
554 if (mfp->pgcookie_off != 0)
555 __db_shalloc_free(dbmp->addr, R_ADDR(dbmp, mfp->pgcookie_off));
556 __db_shalloc_free(dbmp->addr, mfp);