データサービスリソースを含むリソースグループがオンラインになったとき、あるいは、リソースが有効になったとき、RGM はそのクラスタノード上で Start メソッドを呼び出します。xfnts_start メソッドはそのノード上で xfs デーモンを起動します。
/* * Copyright (c) 1998-2003 by Sun Microsystems, Inc. * All rights reserved. * * xfnts_svc_start.c - HA-XFS の起動メソッド */ #pragma ident “@(#)xfnts_svc_start.c 1.13 01/01/18 SMI” #include <rgm/libdsdev.h> #include “xfnts.h” /* * HA-XFS 用の起動メソッド。リソース設定に対していくつかの * 健全性検査を行なったあと、アクションスクリプトを使用して HA-XFS を * PMF の制御下で起動する。 */ int main(int argc, char *argv[]) { scds_handle_t scds_handle; int rc; /* * RGM から渡された引数を処理して、syslog を初期化する。 */ if (scds_initialize(&scds_handle, argc, argv) != SCHA_ERR_NOERR) { scds_syslog(LOG_ERR, “Failed to initialize the handle.”); return (1); } /* 構成の妥当性を検査する。エラーがあれば戻る。*/ rc = svc_validate(scds_handle); if (rc != 0) { scds_syslog(LOG_ERR, “Failed to validate configuration.”); return (rc); } /* データサービスを起動する。失敗した場合、エラーで戻る。*/ rc = svc_start(scds_handle); if (rc != 0) { goto finished; } /* サービスが完全に起動するまで待つ。*/ 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: /* 割り当てられた環境リソースを解放する。*/ scds_close(&scds_handle); return (rc); } |