데이터 서비스 자원을 포함하는 자원 그룹이 클러스터 노드에서 온라인 상태가 되거나 자원이 사용 가능하게 될 경우 RGM은 해당 노드에서 Start 메소드를 호출합니다. xfnts_start 메소드는 해당 노드에서 xfs 데몬을 활성화합니다.
/* * Copyright (c) 1998-2004 by Sun Microsystems, Inc. * All rights reserved. * * xfnts_svc_start.c - Start method for HA-XFS */ #pragma ident “@(#)xfnts_svc_start.c 1.13 01/01/18 SMI” #include <rgm/libdsdev.h> #include “xfnts.h” /* * The start method for HA-XFS. Does some sanity checks on * the resource settings then starts the HA-XFS under PMF with * an action script. */ int main(int argc, char *argv[]) { scds_handle_t scds_handle; int rc; /* * Process all the arguments that have been passed to us from RGM * and do some initialization for syslog */ if (scds_initialize(&scds_handle, argc, argv) != SCHA_ERR_NOERR) { scds_syslog(LOG_ERR, “Failed to initialize the handle.”); return (1); } /* Validate the configuration and if there is an error return back */ rc = svc_validate(scds_handle); if (rc != 0) { scds_syslog(LOG_ERR, “Failed to validate configuration.”); return (rc); } /* Start the data service, if it fails return with an error */ rc = svc_start(scds_handle); if (rc != 0) { goto finished; } /* Wait for the service to start up fully */ scds_syslog_debug(DBG_LEVEL_HIGH, “Calling svc_wait to verify that service has started.”); rc = svc_wait(scds_handle); scds_syslog_debug(DBG_LEVEL_HIGH, “Returned from svc_wait”); if (rc == 0) { scds_syslog(LOG_INFO, “Successfully started the service.”); } else { scds_syslog(LOG_ERR, “Failed to start the service.”); } finished: /* Free up the Environment resources that were allocated */ scds_close(&scds_handle); return (rc); } |