/* * Create the section if it doesn't exist. * Called on becoming active */ SaAisErrorT alarmClockCkptActivate(SaCkptCheckpointHandleT ckptHdl, ClUint32T section_num) { SaAisErrorT rc = SA_AIS_OK; SaCkptSectionIdT *id; if(section_num > NUM_SECTION_ID_MAPS) return SA_AIS_ERR_INVALID_PARAM; id = §ionIdMap[section_num-1].sectionId; rc = clCkptSectionCheck(ckptHdl, (ClCkptSectionIdT*)id); if(rc != CL_OK) { if(CL_GET_ERROR_CODE(rc) == CL_ERR_NOT_EXIST) { rc = alarmClockCkptSectionCreate(ckptHdl, 1); if(rc == SA_AIS_OK) { alarmClockLogWrite(CL_LOG_SEV_INFO, "alarmClockActivate: Section [%.*s] created successfully", id->idLen, (const char *)id->id); } } else rc = SA_AIS_ERR_UNAVAILABLE; /* internal error */ } else rc = SA_AIS_OK; if(rc != SA_AIS_OK) { alarmClockLogWrite(CL_LOG_SEV_INFO, "alarmClockActivate: Section operation on section [%d] " "failed with [%#x]", section_num, rc); } return rc; }
static ClRcT __alarmClockCkptSectionCheck(ClCkptHdlT ckpt_hdl, ClUint32T section_num) { ClCkptSectionIdT *section_id; if(section_num > NUM_SECTION_ID_MAPS) return CL_ERR_OUT_OF_RANGE; section_id = (ClCkptSectionIdT*)§ionIdMap[section_num-1].sectionId; return clCkptSectionCheck(ckpt_hdl, section_id); }
SaAisErrorT alarmClockCkptActivate(SaCkptCheckpointHandleT ckptHdl, ClUint32T section_num) { SaAisErrorT rc = SA_AIS_OK; SaCkptSectionIdT id; id.idLen = sizeof(section_num); id.id = (ClUint8T*)§ion_num; rc = saCkptActiveReplicaSet(ckptHdl); if(rc != SA_AIS_OK) { alarmClockLogWrite(CL_LOG_SEV_ERROR, "alarmClockReplicaSet: returned [%#x]", rc); return rc; } rc = clCkptSectionCheck(ckptHdl, (ClCkptSectionIdT*)&id); if(rc != CL_OK) { if(CL_GET_ERROR_CODE(rc) == CL_ERR_NOT_EXIST) { SaCkptSectionCreationAttributesT attr; attr.sectionId = &id; attr.expirationTime = (ClTimeT)CL_TIME_END; rc = saCkptSectionCreate(ckptHdl, &attr, NULL, 0); if(rc == SA_AIS_OK) { alarmClockLogWrite(CL_LOG_SEV_INFO, "alarmClockActivate: Section [%d] created successfully", section_num); } } else rc = SA_AIS_ERR_UNAVAILABLE; /* internal error */ } else rc = SA_AIS_OK; if(rc != SA_AIS_OK) { alarmClockLogWrite(CL_LOG_SEV_INFO, "alarmClockActivate: Section operation on section [%d] " "failed with [%#x]", section_num, rc); } return rc; }
ClRcT alarmClockCkptActivate(ClCkptHdlT ckptHdl, ClUint32T numSections) { ClRcT rc = CL_OK; ClCkptSectionIdT id; ClCharT section_name[CL_MAX_NAME_LENGTH]; snprintf(section_name, sizeof(section_name), "s%05d", numSections); id.idLen = strlen(section_name); id.id = (ClUint8T*)section_name; rc = clCkptActiveReplicaSet(ckptHdl); if(rc != CL_OK) { alarmClockLogWrite(CL_LOG_SEV_ERROR, "alarmClockReplicaSet: returned [%#x]", rc); return rc; } rc = clCkptSectionCheck(ckptHdl, &id); if(CL_GET_ERROR_CODE(rc) == CL_ERR_NOT_EXIST) { ClCkptSectionCreationAttributesT attr; attr.sectionId = &id; attr.expirationTime = (ClTimeT)CL_TIME_END; rc = clCkptSectionCreate(ckptHdl, &attr, NULL, 0); if(rc == CL_OK) { alarmClockLogWrite(CL_LOG_SEV_INFO, "alarmClockActivate: Section [%s] created successfully", section_name); } } if(rc != CL_OK) { alarmClockLogWrite(CL_LOG_SEV_INFO, "alarmClockActivate: Section operation on [%s] " "failed with [%#x]", section_name, rc); } return rc; }