RGM は、データサービスリソースのあるリソースグループがクラスタノードまたはゾーン上でオンラインになると、そのノードまたはゾーン上で Start メソッドを実行します。また、リソースが有効になったときも、RGM は同じ動作をします。 xfnts_start メソッドは、そのノードまたは大域ゾーン上で xfs デーモンをアクティブにします。
/* * Copyright (c) 1998-2006 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); } |