Sun Cluster 3.0 12/01 データサービス開発ガイド

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

データサービスリソースを含むリソースグループがクラスタのノード上でオンラインになったとき、あるいは、リソースが有効になったとき、RGM はそのクラスタノード上で START メソッドを呼び出します。xfnts_start メソッドはそのノード上で xfs デーモンを起動します。


例 C-6 xfnts_start.c

/*
 * Copyright (c) 1998-2001 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"

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