Sun Cluster データサービス開発ガイド (Solaris OS 版)

xfnts_start メソッドのコードリスト

RGM は、データサービスリソースのあるリソースグループがクラスタノードまたはゾーン上でオンラインになると、そのノードまたはゾーン上で Start メソッドを実行します。また、リソースが有効になったときも、RGM は同じ動作をします。 xfnts_start メソッドは、そのノードまたは大域ゾーン上で xfs デーモンをアクティブにします。


例 C–6 xfnts_start.c

/*
 * 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);
}