Lines Matching refs:mp

101 fmd_ckpt_create(fmd_ckpt_t *ckp, fmd_module_t *mp)
103 const char *dir = mp->mod_ckpt;
104 const char *name = mp->mod_name;
108 ckp->ckp_mp = mp;
138 fmd_ckpt_open(fmd_ckpt_t *ckp, fmd_module_t *mp)
146 ckp->ckp_mp = mp;
149 mp->mod_ckpt, mp->mod_name);
352 fmd_module_t *mp = ckp->ckp_mp;
359 if (fmd_module_locked(mp))
360 fmd_module_unlock(mp);
363 fmd_module_abort(mp, err);
696 fmd_ckpt_resv_module(fmd_ckpt_t *ckp, fmd_module_t *mp)
701 for (cp = fmd_list_next(&mp->mod_cases); cp; cp = fmd_list_next(cp))
704 n = fmd_serd_hash_count(&mp->mod_serds);
705 fmd_serd_hash_apply(&mp->mod_serds,
709 n = fmd_buf_hash_count(&mp->mod_bufs);
710 fmd_buf_hash_apply(&mp->mod_bufs, (fmd_buf_f *)fmd_ckpt_resv_buf, ckp);
714 ckp->ckp_strn += strlen(mp->mod_name) + 1;
715 ckp->ckp_strn += strlen(mp->mod_path) + 1;
716 ckp->ckp_strn += strlen(mp->mod_info->fmdi_desc) + 1;
717 ckp->ckp_strn += strlen(mp->mod_info->fmdi_vers) + 1;
721 fmd_ckpt_save_module(fmd_ckpt_t *ckp, fmd_module_t *mp)
728 for (cp = fmd_list_next(&mp->mod_cases); cp; cp = fmd_list_next(cp))
731 if ((n = fmd_serd_hash_count(&mp->mod_serds)) != 0) {
735 fmd_serd_hash_apply(&mp->mod_serds,
742 if ((n = fmd_buf_hash_count(&mp->mod_bufs)) != 0) {
746 fmd_buf_hash_apply(&mp->mod_bufs,
753 fcfm.fcfm_name = fmd_ckpt_string(ckp, mp->mod_name);
754 fcfm.fcfm_path = fmd_ckpt_string(ckp, mp->mod_path);
755 fcfm.fcfm_desc = fmd_ckpt_string(ckp, mp->mod_info->fmdi_desc);
756 fcfm.fcfm_vers = fmd_ckpt_string(ckp, mp->mod_info->fmdi_vers);
764 fmd_ckpt_save(fmd_module_t *mp)
774 ASSERT(fmd_module_locked(mp));
780 if (mp->mod_stats->ms_ckpt_save.fmds_value.bool == FMD_B_FALSE) {
781 fmd_module_commit(mp);
785 if (!(mp->mod_flags & (FMD_MOD_MDIRTY | FMD_MOD_CDIRTY)))
789 mp->mod_name, mp->mod_gen + 1));
797 if (stat64(mp->mod_ckpt, &st) != 0 || !S_ISDIR(st.st_mode)) {
798 (void) snprintf(path, sizeof (path), "%s-", mp->mod_ckpt);
799 (void) rename(mp->mod_ckpt, path);
802 if (mkdir(mp->mod_ckpt, dirmode) != 0) {
804 "failed to mkdir %s", mp->mod_ckpt);
814 if (fmd_ckpt_create(&ckp, mp) == -1) {
819 fmd_ckpt_resv_module(&ckp, mp);
821 if (fmd_ckpt_alloc(&ckp, mp->mod_gen + 1) != 0) {
832 fmd_ckpt_save_module(&ckp, mp);
841 fmd_module_commit(mp);
842 TRACE((FMD_DBG_CKPT, "ckpt save end %s", mp->mod_name));
844 mp->mod_stats->ms_ckpt_cnt.fmds_value.ui64++;
845 mp->mod_stats->ms_ckpt_time.fmds_value.ui64 += gethrtime() - now;
848 mp->mod_name, mp->mod_gen);
996 fmd_ckpt_restore_bufs(fmd_ckpt_t *ckp, fmd_module_t *mp,
1022 fmd_buf_write((fmd_hdl_t *)mp, cp,
1031 fmd_ckpt_restore_case(fmd_ckpt_t *ckp, fmd_module_t *mp, const fcf_sec_t *sp)
1043 fmd_module_lock(mp);
1045 if ((cp = fmd_case_recreate(mp, NULL,
1079 fmd_module_unlock(mp);
1080 fmd_ckpt_restore_bufs(ckp, mp, cp, fcfc->fcfc_bufs);
1084 fmd_ckpt_restore_serd(fmd_ckpt_t *ckp, fmd_module_t *mp, const fcf_sec_t *sp)
1104 fmd_serd_create((fmd_hdl_t *)mp, s, fcfd->fcfd_n, fcfd->fcfd_t);
1105 fmd_module_lock(mp);
1109 fmd_serd_eng_lookup(&mp->mod_serds, s));
1111 fmd_module_unlock(mp);
1117 fmd_ckpt_restore_module(fmd_ckpt_t *ckp, fmd_module_t *mp)
1123 if (strcmp(mp->mod_name, fmd_ckpt_strptr(ckp, fcfm->fcfm_name, "")) ||
1124 strcmp(mp->mod_path, fmd_ckpt_strptr(ckp, fcfm->fcfm_path, ""))) {
1126 "checkpoint is not for module %s\n", mp->mod_name);
1135 fmd_ckpt_restore_case(ckp, mp, sp);
1138 fmd_ckpt_restore_serd(ckp, mp, sp);
1143 fmd_ckpt_restore_bufs(ckp, mp, NULL, fcfm->fcfm_bufs);
1144 mp->mod_gen = ckp->ckp_hdr->fcfh_cgen;
1153 fmd_ckpt_restore(fmd_module_t *mp)
1157 if (mp->mod_stats->ms_ckpt_restore.fmds_value.bool == FMD_B_FALSE)
1160 TRACE((FMD_DBG_CKPT, "ckpt restore begin %s", mp->mod_name));
1162 if (fmd_ckpt_open(&ckp, mp) == -1) {
1165 TRACE((FMD_DBG_CKPT, "ckpt restore end %s", mp->mod_name));
1169 ASSERT(!fmd_module_locked(mp));
1170 fmd_ckpt_restore_module(&ckp, mp);
1172 fmd_module_clrdirty(mp);
1174 TRACE((FMD_DBG_CKPT, "ckpt restore end %s", mp->mod_name));
1175 fmd_dprintf(FMD_DBG_CKPT, "restored checkpoint of %s\n", mp->mod_name);
1183 fmd_ckpt_delete(fmd_module_t *mp)
1188 "%s/%s", mp->mod_ckpt, mp->mod_name);
1190 TRACE((FMD_DBG_CKPT, "delete %s ckpt", mp->mod_name));
1202 fmd_ckpt_rename(fmd_module_t *mp)
1206 (void) snprintf(src, sizeof (src), "%s/%s", mp->mod_ckpt, mp->mod_name);
1209 TRACE((FMD_DBG_CKPT, "rename %s ckpt", mp->mod_name));