Sun Cluster Entwicklerhandbuch Datendienste für Solaris OS

xfnts_start-Methode

RGM ruft die Start-Methode auf einem Cluster-Knoten auf, wenn die Ressourcengruppe, die den Datendienst enthält, auf diesem Knoten online gebracht wird bzw. wenn die Ressource aktiviert wird. Die xfnts_start-Methode aktiviert den xfs-Dämon auf diesem Knoten.


Beispiel C–6 xfnts_start.c

/*
 * Copyright (c) 1998-2004 Sun Microsystems, Inc.
 * Alle Rechte vorbehalten.
 *
 * xfnts_svc_start.c - Start-Methode für HA-XFS
 */

#pragma ident “@(#)xfnts_svc_start.c 1.13 01/01/18 SMI”

#include <rgm/libdsdev.h>
#include “xfnts.h”

/*
 * Start-Methode für HA-XFS. Sie führt einige Kontrollprüfungen bei
 * den Ressourceneinstellungen aus und startet dann HA-XFS unter PMF mit
 * einem Aktionsskript.
 */

int
main(int argc, char *argv[])
{
   scds_handle_t   scds_handle;
   int rc;

   /*
    * Alle von RGM übergebenen Argumente verarbeiten und syslog
    * initialisieren
    */

   if (scds_initialize(&scds_handle, argc, argv) != SCHA_ERR_NOERR)
{
      scds_syslog(LOG_ERR, “Initialisierung des Handles fehlgeschlagen.”);
      return (1);
   }

   /* Konfiguration validieren und bei Fehler zurückgehen */
   rc = svc_validate(scds_handle);
   if (rc != 0) {
      scds_syslog(LOG_ERR,
          “Konfigurationsvalidierung fehlgeschlagen.”);
      return (rc);
   }

   /* Datendienst starten und bei Fehlschlag Fehler zurückgeben */
   rc = svc_start(scds_handle);
   if (rc != 0) {
      goto finished;
   }

   /* Warten, bis der Dienst vollständig gestartet ist. */
   scds_syslog_debug(DBG_LEVEL_HIGH,
       “svc_wait wird aufgerufen, um zu überprüfen, ob der Dienst gestartet wurde.”);

   rc = svc_wait(scds_handle);

   scds_syslog_debug(DBG_LEVEL_HIGH,
       “Rückgabe von svc_wait”);

   if (rc == 0) {
      scds_syslog(LOG_INFO, “Dienst erfolgreich gestartet.”);
   } else {
      scds_syslog(LOG_ERR, “Starten des Dienstes fehlgeschlagen.”);
   }


finished:
   /* Zugewiesene Umgebungsressourcen freigeben */
   scds_close(&scds_handle);

   return (rc);
}