fis-gtm/sr_port/mur_pini_state.c

47 lines
1.6 KiB
C

/****************************************************************
* *
* Copyright 2003, 2010 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
* under a license. If you do not know the terms of *
* the license, please stop and do not read further. *
* *
****************************************************************/
#include "mdef.h"
#include "gdsroot.h"
#include "gdsbt.h"
#include "gtm_facility.h"
#include "fileinfo.h"
#include "gdsfhead.h"
#include "filestruct.h"
#include "jnl.h" /* for muprec.h */
#include "buddy_list.h" /* for muprec.h */
#include "hashtab_int4.h" /* needed for muprec.h */
#include "hashtab_int8.h" /* needed for muprec.h */
#include "hashtab_mname.h" /* needed for muprec.h */
#include "muprec.h"
#include "iosp.h" /* for SS_NORMAL */
/* This routine marks the state of process vector for show=BROKEN/ACTIVE/PROCESS
* Note that unfenced transactions can be broken only in the case -FENCES=ALWAYS
* mur_forward() marks a non-BROKEN process vector as ACTIVE_PROC when it finds it.
* mur_forward() call to this routine does not change state of BROKEN_PROC
* When mur_forward() finds correspinding PFIN record, it marks it FINISHED.
*/
uint4 mur_pini_state(jnl_ctl_list *jctl, uint4 pini_addr, int state)
{
pini_list_struct *plst;
uint4 status;
status = mur_get_pini(jctl, pini_addr, &plst);
if (SS_NORMAL != status)
return status;
if (BROKEN_PROC == plst->state)
return SS_NORMAL;
plst->state = (enum pini_rec_stat)state;
return SS_NORMAL;
}