diff --git a/lib/ckpt.c b/lib/ckpt.c index 454900ff..58420829 100644 --- a/lib/ckpt.c +++ b/lib/ckpt.c @@ -1634,6 +1634,7 @@ saCkptCheckpointSynchronizeAsync ( SaInvocationT invocation) { SaAisErrorT error; + struct ckptInstance *ckptInstance; struct ckptCheckpointInstance *ckptCheckpointInstance; struct req_lib_ckpt_checkpointsynchronizeasync req_lib_ckpt_checkpointsynchronizeasync; struct res_lib_ckpt_checkpointsynchronizeasync res_lib_ckpt_checkpointsynchronizeasync; @@ -1649,6 +1650,20 @@ saCkptCheckpointSynchronizeAsync ( goto error_put; } + error = saHandleInstanceGet (&ckptHandleDatabase, ckptCheckpointInstance->ckptHandle, + (void *)&ckptInstance); + if (error != SA_AIS_OK) { + goto error_put; + } + + if (ckptInstance->callbacks.saCkptCheckpointSynchronizeCallback == NULL) { + saHandleInstancePut (&ckptHandleDatabase, ckptCheckpointInstance->ckptHandle); + error = SA_AIS_ERR_INIT; + goto error_put; + } + + saHandleInstancePut (&ckptHandleDatabase, ckptCheckpointInstance->ckptHandle); + req_lib_ckpt_checkpointsynchronizeasync.header.size = sizeof (struct req_lib_ckpt_checkpointsynchronizeasync); req_lib_ckpt_checkpointsynchronizeasync.header.id = MESSAGE_REQ_CKPT_CHECKPOINT_CHECKPOINTSYNCHRONIZEASYNC; memcpy (&req_lib_ckpt_checkpointsynchronizeasync.checkpointName,