• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.10.1/BerkeleyDB-21/db/mp/

Lines Matching refs:mfp

92 __memp_fopen(dbmfp, mfp, path, flags, mode, pgsize)
94 MPOOLFILE *mfp;
133 * We're called internally with a specified mfp, in which case the
140 DB_ASSERT(env, mfp == NULL || path == NULL);
144 if (mfp == NULL) {
181 __memp_mpf_find(env, dbmfp, hp, path, flags,&mfp);
185 if (mfp != NULL)
194 MUTEX_LOCK(env, mfp->mutex);
195 if (!mfp->deadfile) {
196 ++mfp->mpf_cnt;
199 MUTEX_UNLOCK(env, mfp->mutex);
207 if (mfp->deadfile)
248 if (mfp != NULL) {
250 path = R_ADDR(dbmp->reginfo, mfp->path_off);
256 if (mfp != NULL)
317 if (mfp == NULL && !F_ISSET(dbmfp, MP_FILEID_SET)) {
326 if (mfp != NULL)
337 if ((ret = __memp_mpf_find(env, dbmfp, hp, path, flags, &mfp) != 0))
340 if (alloc_mfp != NULL && mfp == NULL) {
341 mfp = alloc_mfp;
343 SH_TAILQ_INSERT_HEAD(&hp->hash_bucket, mfp, q, __mpoolfile);
344 } else if (mfp != NULL) {
361 mfp->clear_len != DB_CLEARLEN_NOTSET &&
362 dbmfp->clear_len != mfp->clear_len) ||
363 (pagesize != 0 && pagesize != mfp->stat.st_pagesize) ||
365 mfp->lsn_off != DB_LSN_OFF_NOTSET &&
366 dbmfp->lsn_offset != mfp->lsn_off)) {
383 if (mfp == NULL) {
431 mfp = alloc_mfp;
434 SH_TAILQ_INSERT_TAIL(&hp->hash_bucket, mfp, q);
444 if (F_ISSET(mfp, MP_DURABLE_UNKNOWN)) {
446 F_SET(mfp, MP_NOT_DURABLE);
447 F_CLR(mfp, MP_DURABLE_UNKNOWN);
449 !F_ISSET(mfp, MP_NOT_DURABLE)) {
458 ++mfp->multiversion;
463 * All paths to here have initialized the mfp variable to reference
466 dbmfp->mfp = mfp;
490 if (F_ISSET(mfp, MP_CAN_MMAP)) {
495 F_CLR(mfp, MP_CAN_MMAP);
497 F_CLR(mfp, MP_CAN_MMAP);
499 F_CLR(mfp, MP_CAN_MMAP);
501 F_CLR(mfp, MP_CAN_MMAP);
510 F_CLR(mfp, MP_CAN_MMAP);
514 if (F_ISSET(mfp, MP_CAN_MMAP)) {
519 F_CLR(mfp, MP_CAN_MMAP);
535 if (dbmfp->mfp == tmp_dbmfp->mfp &&
557 MUTEX_LOCK(env, mfp->mutex);
558 --mfp->mpf_cnt;
559 MUTEX_UNLOCK(env, mfp->mutex);
582 MPOOLFILE *mfp;
586 SH_TAILQ_FOREACH(mfp, &hp->hash_bucket, q, __mpoolfile) {
588 if (mfp->deadfile || F_ISSET(mfp, MP_TEMP))
597 if (!mfp->no_backing_file)
600 if (strcmp(path, R_ADDR(dbmp->reginfo, mfp->path_off)))
609 R_ADDR(dbmp->reginfo, mfp->fileid_off));
612 mfp->fileid_off), DB_FILE_ID_LEN) != 0)
620 * We should be able to set mfp to NULL and break out of the
624 MUTEX_LOCK(env, mfp->mutex);
625 mfp->deadfile = 1;
626 MUTEX_UNLOCK(env, mfp->mutex);
642 MUTEX_LOCK(env, mfp->mutex);
643 if (mfp->deadfile) {
644 MUTEX_UNLOCK(env, mfp->mutex);
647 ++mfp->mpf_cnt;
648 MUTEX_UNLOCK(env, mfp->mutex);
652 mfp->ftype = dbmfp->ftype;
654 mfp->clear_len = dbmfp->clear_len;
656 mfp->lsn_off = dbmfp->lsn_offset;
661 *mfpp = mfp;
675 MPOOLFILE *mfp;
683 dbmp->reginfo, NULL, sizeof(MPOOLFILE), NULL, &mfp)) != 0)
685 memset(mfp, 0, sizeof(MPOOLFILE));
686 mfp->mpf_cnt = 1;
687 mfp->ftype = dbmfp->ftype;
688 mfp->stat.st_pagesize = pagesize;
689 mfp->lsn_off = dbmfp->lsn_offset;
690 mfp->clear_len = dbmfp->clear_len;
691 mfp->priority = dbmfp->priority;
693 mfp->maxpgno = (db_pgno_t)
694 (dbmfp->gbytes * (GIGABYTE / mfp->stat.st_pagesize));
695 mfp->maxpgno += (db_pgno_t)
696 ((dbmfp->bytes + mfp->stat.st_pagesize - 1) /
697 mfp->stat.st_pagesize);
700 mfp->no_backing_file = 1;
702 mfp->unlink_on_close = 1;
705 F_SET(mfp, MP_DURABLE_UNKNOWN);
707 F_SET(mfp, MP_DIRECT);
709 F_SET(mfp, MP_EXTENT);
711 F_SET(mfp, MP_NOT_DURABLE);
712 F_SET(mfp, MP_CAN_MMAP);
721 F_SET(mfp, MP_TEMP);
723 mfp->mpf_cnt++;
728 NULL, DB_FILE_ID_LEN, &mfp->fileid_off, &p)) != 0)
736 NULL, strlen(path) + 1, &mfp->path_off, &p)) != 0)
743 mfp->pgcookie_len = 0;
744 mfp->pgcookie_off = 0;
748 &mfp->pgcookie_off, &p)) != 0)
752 mfp->pgcookie_len = dbmfp->pgcookie->size;
756 MTX_MPOOLFILE_HANDLE, 0, &mfp->mutex)) != 0)
758 *retmfp = mfp;
805 MPOOLFILE *mfp;
876 mfp = dbmfp->mfp;
878 (F_ISSET(dbmfp, MP_OPEN_CALLED) && mfp != NULL) ||
879 (!F_ISSET(dbmfp, MP_OPEN_CALLED) && mfp == NULL));
892 MUTEX_LOCK(env, mfp->mutex);
894 --mfp->multiversion;
895 if (--mfp->mpf_cnt == 0 || LF_ISSET(DB_MPOOL_DISCARD)) {
897 F_ISSET(mfp, MP_TEMP) || mfp->unlink_on_close) {
898 mfp->deadfile = 1;
900 if (mfp->unlink_on_close) {
903 mfp->path_off), 0, NULL, &rpath)) != 0 && ret == 0)
912 if (mfp->block_cnt == 0) {
920 __memp_mf_discard(dbmp, mfp)) != 0 && ret == 0)
926 MUTEX_UNLOCK(env, mfp->mutex);
945 __memp_mf_discard(dbmp, mfp)
947 MPOOLFILE *mfp;
960 hp += mfp->bucket;
973 mfp->file_written && !mfp->deadfile && !F_ISSET(mfp, MP_TEMP);
980 mfp->deadfile = 1;
983 MUTEX_UNLOCK(env, mfp->mutex);
984 if ((t_ret = __mutex_free(env, &mfp->mutex)) != 0 && ret == 0)
989 SH_TAILQ_REMOVE(&hp->hash_bucket, mfp, q, __mpoolfile);
995 (t_ret = __memp_mf_sync(dbmp, mfp, 0)) != 0 && ret == 0)
1001 sp->st_cache_hit += mfp->stat.st_cache_hit;
1002 sp->st_cache_miss += mfp->stat.st_cache_miss;
1003 sp->st_map += mfp->stat.st_map;
1004 sp->st_page_create += mfp->stat.st_page_create;
1005 sp->st_page_in += mfp->stat.st_page_in;
1006 sp->st_page_out += mfp->stat.st_page_out;
1010 if (mfp->path_off != 0)
1012 R_ADDR(dbmp->reginfo, mfp->path_off));
1013 if (mfp->fileid_off != 0)
1015 R_ADDR(dbmp->reginfo, mfp->fileid_off));
1016 if (mfp->pgcookie_off != 0)
1018 R_ADDR(dbmp->reginfo, mfp->pgcookie_off));
1019 __memp_free(&dbmp->reginfo[0], NULL, mfp);
1041 MPOOLFILE *mfp;
1053 SH_TAILQ_FOREACH(mfp, &hp->hash_bucket, q, __mpoolfile) {
1055 if (mfp->deadfile || F_ISSET(mfp, MP_TEMP))
1059 if (!mfp->no_backing_file)
1071 R_ADDR(dbmp->reginfo, mfp->path_off),