Okay, Let it be the current way the patch is doing i.e. the active CLMS to reboot the self-node. (Since it is involving broadcast, may be in future cluster_id should also be sent I guess. But yes, not applicable in the current scenario)
Thanks, Mathi. > -----Original Message----- > From: Hans Nordebäck [mailto:hans.nordeb...@ericsson.com] > Sent: Monday, October 03, 2016 5:00 PM > To: Mathivanan Naickan Palanivelu; anders.wid...@ericsson.com > Cc: opensaf-devel@lists.sourceforge.net > Subject: Re: [PATCH 1 of 1] clm: add support for cluster reboot V3 [#2053] > > Hi Mathi, > > I updated with the first comment. Regarding the second comment nodeid is > sent to clmna so it don't reboot the node where active clms is running. > > That reboot will be done by active clms. Maybe there is another way to > detect this in clmna? > > /Thanks HansN > > On 10/03/2016 01:17 PM, Mathivanan Naickan Palanivelu wrote: > > Hans, > > ACK after fixing Anders' and two of my comments inlined as [Mathi]. > > > > Thanks, > > Mathi. > > > >> -----Original Message----- > >> From: Hans Nordebäck [mailto:hans.nordeb...@ericsson.com] > >> Sent: Friday, September 30, 2016 3:38 PM > >> To: Mathivanan Naickan Palanivelu; anders.wid...@ericsson.com > >> Cc: opensaf-devel@lists.sourceforge.net > >> Subject: Re: [PATCH 1 of 1] clm: add support for cluster reboot V3 > >> [#2053] > >> > >> Hi Mathi, > >> > >> see comments inline below. Do you think we can push this with AndersW > >> comments incorporated? > >> > >> /Thanks HansN > >> > >> > >> On 09/30/2016 11:26 AM, Mathivanan Naickan Palanivelu wrote: > >>> Thanks for the details and I agree. > >>> I was actually enquiring about > >>> - why a new "opensaf_safe_reboot" option in the opensaf_reboot > >>> script and > >>> - Why a osaf_safe_reboot() is added in osaf_utility.c instead of > >>> using the > >> opensaf_reboot() function itself. > >> [HansN] after CLM has requested safe_reboot, processing should > >> continue normally, i.e. not stop in e.g. > >> the use_fallback loop in opensaf_reboot, as then AMF probably will > >> start error handling/recovery etc. > >>> For the first question, I think the obvious guess would be that we > >>> want to > >> use 'shutdown -r' such that rc scripts are invoked when doing the reboot. > >> [HansN] yes, we have to separate between shutdown and reboot -f. > >>> Thanks, > >>> Mathi. > >>> > >>>> -----Original Message----- > >>>> From: Hans Nordebäck [mailto:hans.nordeb...@ericsson.com] > >>>> Sent: Friday, September 30, 2016 2:14 PM > >>>> To: Mathivanan Naickan Palanivelu; anders.wid...@ericsson.com > >>>> Cc: opensaf-devel@lists.sourceforge.net > >>>> Subject: Re: [PATCH 1 of 1] clm: add support for cluster reboot V3 > >>>> [#2053] > >>>> > >>>> Hi Mathi, > >>>> > >>>> ordering a cluster reboots are done at several places, both outside > >>>> OpenSAF and inside OpenSAF e.g. SMF. > >>>> > >>>> There are several different solutions to order a cluster reboot and > >>>> in many cases they don't work well, so it would be > >>>> > >>>> good if OpenSAF could provide one way to perform a cluster reboot. > >>>> AMF may also use this for implementing SA_AMF_CLUSTER_RESET. > >>>> > >>>> One common use case is upgrade with a following cluster reboot. The > >>>> payloads are normally PXE booted and the DHCP > >>>> > >>>> is stopped at the controllers before ordering a cluster reboot so > >>>> the payloads will not start until the controllers has rebooted and > >>>> DHCP is > >> started. > >>>> Then each node is rebooted by in sequence do ssh to each node and > >>>> order a reboot. This may take time and if CLM can broadcast this > >>>> reboot request the > >>>> > >>>> reboot will be considerable faster. So therefor in the first > >>>> version of the cluster reboot support I don't think we need to > >>>> consider implementing phases, this can > >>>> > >>>> be added later, with e.g. a flag in CLM as AndersW suggested. > >>>> > >>>> /Thanks HansN > >>>> > >>>> > >>>> On 09/30/2016 09:43 AM, Mathivanan Naickan Palanivelu wrote: > >>>>> Hi Hans, > >>>>> > >>>>> Could you provide some background on the need for > >>>> opensaf_safe_reboot(). > >>>>> What would be the need for this? > >>>>> > >>>>> Thanks, > >>>>> Mathi. > >>>>> > >>>>> > >>>>>> -----Original Message----- > >>>>>> From: Hans Nordeback [mailto:hans.nordeb...@ericsson.com] > >>>>>> Sent: Wednesday, September 28, 2016 5:26 PM > >>>>>> To: anders.wid...@ericsson.com; Mathivanan Naickan Palanivelu > >>>>>> Cc: opensaf-devel@lists.sourceforge.net > >>>>>> Subject: [PATCH 1 of 1] clm: add support for cluster reboot V3 > >>>>>> [#2053] > >>>>>> > >>>>>> osaf/libs/common/clmsv/include/clmsv_msg.h | 6 +++ > >>>>>> osaf/libs/core/common/include/osaf_utility.h | 5 +++ > >>>>>> osaf/libs/core/common/osaf_utility.c | 22 +++++++++++++ > >>>>>> osaf/services/saf/clmsv/clms/clms.h | 3 +- > >>>>>> osaf/services/saf/clmsv/clms/clms_imm.c | 18 ++++++++++ > >>>>>> osaf/services/saf/clmsv/clms/clms_mds.c | 46 > >>>>>> +++++++++++++++++++++++++++- > >>>>>> osaf/services/saf/clmsv/clms/clms_util.c | 12 +++++++ > >>>>>> osaf/services/saf/clmsv/nodeagent/main.c | 12 +++++++ > >>>>>> scripts/opensaf_reboot | 22 ++++++++++--- > >>>>>> 9 files changed, 139 insertions(+), 7 deletions(-) > >>>>>> > >>>>>> > >>>>>> Admin command to request cluster reboot: > >>>>>> immadm -o 1 safCluster=myClmCluster > >>>>>> > >>>>>> diff --git a/osaf/libs/common/clmsv/include/clmsv_msg.h > >>>>>> b/osaf/libs/common/clmsv/include/clmsv_msg.h > >>>>>> --- a/osaf/libs/common/clmsv/include/clmsv_msg.h > >>>>>> +++ b/osaf/libs/common/clmsv/include/clmsv_msg.h > >>>>>> @@ -23,6 +23,7 @@ typedef enum clms_msg_type { > >>>>>> CLMSV_CLMS_TO_CLMA_CBK_MSG, > >>>>>> CLMSV_CLMS_TO_CLMA_API_RESP_MSG, > >>>>>> CLMSV_CLMS_TO_CLMA_IS_MEMBER_MSG, > >>>>>> + CLMSV_CLMS_TO_CLMNA_REBOOT_MSG, > >>>>>> CLMSV_MSG_MAX > >>>>>> } CLMSV_MSG_TYPE; > >>>>>> > >>>>>> @@ -174,6 +175,10 @@ typedef struct clmsv_is_member_info_t { > >>>>>> SaUint32T client_id; > >>>>>> }CLMSV_IS_MEMBER_INFO; > >>>>>> > >>>>>> +typedef struct clmsv_reboot_info_t { > >>>>>> + SaClmNodeIdT node_id; > >>>>>> +} CLMSV_REBOOT_INFO; > >>>>>> + > >>>>>> /* Top Level CLMSv MDS message structure for use between > >>>>>> CLMS-> CLMA && CLMA -> CLMS */ typedef struct clmsv_msg_t { > >>>>>> struct clmsv_msg_t *next; /* Mailbox processing */ > >>>>>> @@ -183,6 +188,7 @@ typedef struct clmsv_msg_t { > >>>>>> CLMSV_CBK_INFO cbk_info; /* Callback Messages from > CLMS to > >>>> CLA > >>>>>> */ > >>>>>> CLMSV_API_RESP_INFO api_resp_info; /* Response > Messages > >> from > >>>>>> CLMS to CLA */ > >>>>>> CLMSV_IS_MEMBER_INFO is_member_info; /*Is node > member > >> or > >>>> not > >>>>>> Message from CLMS to CLA*/ > >>>>>> + CLMSV_REBOOT_INFO reboot_info; /* Reboot request > from > >>>>>> CLMS to CLMNA */ > >>>>>> } info; > >>>>>> } CLMSV_MSG; > >>>>>> > >>>>>> diff --git a/osaf/libs/core/common/include/osaf_utility.h > >>>>>> b/osaf/libs/core/common/include/osaf_utility.h > >>>>>> --- a/osaf/libs/core/common/include/osaf_utility.h > >>>>>> +++ b/osaf/libs/core/common/include/osaf_utility.h > >>>>>> @@ -24,6 +24,8 @@ > >>>>>> #ifndef OPENSAF_CORE_OSAF_UTILITY_H_ > >>>>>> #define OPENSAF_CORE_OSAF_UTILITY_H_ > >>>>>> > >>>>>> +#define USE_SAFE_REBOOT 1 > >>>>>> + > > [Mathi] > > I think this should be OSAF_USE_SAFE_REBOOT > > > >>>>>> #include <pthread.h> > >>>>>> > >>>>>> #ifdef __cplusplus > >>>>>> @@ -68,6 +70,9 @@ extern void osaf_abort(long i_cause) #endif > >>>>>> nothrow, noreturn)); > >>>>>> > >>>>>> +extern void osaf_safe_reboot() > >>>>>> + __attribute__ ((nothrow)); > >>>>>> + > >>>>>> static inline void osaf_mutex_lock_ordie(pthread_mutex_t* > >> io_mutex) { > >>>>>> int result = pthread_mutex_lock(io_mutex); > >>>>>> if (result != 0) osaf_abort(result); diff --git > >>>>>> a/osaf/libs/core/common/osaf_utility.c > >>>>>> b/osaf/libs/core/common/osaf_utility.c > >>>>>> --- a/osaf/libs/core/common/osaf_utility.c > >>>>>> +++ b/osaf/libs/core/common/osaf_utility.c > >>>>>> @@ -16,9 +16,12 @@ > >>>>>> */ > >>>>>> > >>>>>> #include "osaf_utility.h" > >>>>>> +#include "ncssysf_def.h" > >>>>>> +#include "configmake.h" > >>>>>> #include <stdlib.h> > >>>>>> #include <errno.h> > >>>>>> #include <syslog.h> > >>>>>> +#include <stdio.h> > >>>>>> > >>>>>> void osaf_abort(long i_cause) > >>>>>> { > >>>>>> @@ -26,3 +29,22 @@ void osaf_abort(long i_cause) > >>>>>> i_cause, __builtin_return_address(0), errno); > >>>>>> abort(); > >>>>>> } > >>>>>> + > >>>>>> +void osaf_safe_reboot() > >>>>>> +{ > >>>>>> + char str[256]; > >>>>>> + > >>>>>> + snprintf(str, sizeof(str), PKGLIBDIR "/opensaf_reboot %u %s > >>>>>> +%u", 0, > >>>>>> "not_used", USE_SAFE_REBOOT); > >>>>>> + syslog(LOG_NOTICE, "Reboot ordered using command: %s", > str); > >>>>>> + > >>>>>> + int rc = system(str); > >>>>>> + if (rc < 0) { > >>>>>> + syslog(LOG_CRIT, "Node reboot failure: exit code > %d", > >>>>>> WEXITSTATUS(rc)); > >>>>>> + } else { > >>>>>> + if (WIFEXITED(rc) && WEXITSTATUS(rc) == 0) { > >>>>>> + syslog(LOG_NOTICE, "Command: %s > successfully > >>>>>> executed", str); > >>>>>> + } else { > >>>>>> + syslog(LOG_CRIT, "Command: %s failed with > exit > >>>>>> code %d", str, WEXITSTATUS(rc)); > >>>>>> + } > >>>>>> + } > >>>>>> +} > >>>>>> diff --git a/osaf/services/saf/clmsv/clms/clms.h > >>>>>> b/osaf/services/saf/clmsv/clms/clms.h > >>>>>> --- a/osaf/services/saf/clmsv/clms/clms.h > >>>>>> +++ b/osaf/services/saf/clmsv/clms/clms.h > >>>>>> @@ -99,6 +99,7 @@ extern uint32_t clms_mds_msg_send(CLMS_C > >>>>>> MDS_DEST *dest, > >>>>>> MDS_SYNC_SND_CTXT > >>>>>> *mds_ctxt, MDS_SEND_PRIORITY_TYPE prio, NCSMDS_SVC_ID > svc_id); > >>>>>> > >>>>>> +extern uint32_t clms_mds_msg_bcast(CLMS_CB *cb, CLMSV_MSG > >>>>>> *bcast_msg); > >>>>>> extern SaAisErrorT clms_imm_activate(CLMS_CB * cb); extern > >>>>>> uint32_t clms_node_trackresplist_empty(CLMS_CLUSTER_NODE * > >>>> op_node); > >>>>>> extern uint32_t clms_send_cbk_start_sub(CLMS_CB * cb, > >>>>>> CLMS_CLUSTER_NODE * node); @@ -125,5 +126,5 @@ extern void > >>>>>> clms_cb_dump(void); extern uint32_t > >>>> clms_send_is_member_info(CLMS_CB > >>>>>> * cb, SaClmNodeIdT node_id, SaBoolT member, SaBoolT > >>>>>> is_configured); extern void clm_imm_reinit_bg(CLMS_CB * cb); > >>>>>> extern void proc_downs_during_rolechange (void); > >>>>>> - > >>>>>> +extern void clms_cluster_reboot(); > >>>>>> #endif /* ifndef CLMS_H */ > >>>>>> diff --git a/osaf/services/saf/clmsv/clms/clms_imm.c > >>>>>> b/osaf/services/saf/clmsv/clms/clms_imm.c > >>>>>> --- a/osaf/services/saf/clmsv/clms/clms_imm.c > >>>>>> +++ b/osaf/services/saf/clmsv/clms/clms_imm.c > >>>>>> @@ -19,6 +19,7 @@ > >>>>>> > >>>>>> #include "clms.h" > >>>>>> #include "osaf_extended_name.h" > >>>>>> +#include "osaf_utility.h" > >>>>>> > >>>>>> extern struct ImmutilWrapperProfile immutilWrapperProfile; > >>>>>> > >>>>>> @@ -886,6 +887,23 @@ static void clms_imm_admin_op_callback(S > >>>>>> > >>>>>> TRACE_ENTER2("Admin callback for nodename:%s, > opId:%llu", > >>>>>> objectName->value, opId); > >>>>>> > >>>>>> + // E.g. immadm -o 1 safCluster=myClmCluster > >>>>>> + if (strncmp(osaf_extended_name_borrow(objectName), > >>>>>> + osaf_extended_name_borrow(&osaf_cluster->name), > >>>>>> + osaf_extended_name_length(objectName)) == 0) { > >>>>>> + if (opId == 1) { > >>>>>> + LOG_WA("Cluster reboot requested. > Ordering > >>>>>> cluster reboot"); > >>>>>> + // MDS broadcast/multi cast call is > synchronous > >>>>>> + clms_cluster_reboot(); > >>>>>> + sleep(1); > >>>>>> + osaf_safe_reboot(); > >>>>>> + } else { > >>>>>> + LOG_ER("Admin Operation not supported for > %s", > >>>>>> osaf_extended_name_borrow(objectName)); > >>>>>> + > >>>>>> immutil_saImmOiAdminOperationResult(immOiHandle, > invocation, > >>>>>> SA_AIS_ERR_INVALID_PARAM); > >>>>>> + } > >>>>>> + goto done; > >>>>>> + } > >>>>>> + > >>>>>> /*Lookup by the node_name and get the cluster node for > CLM > >>>> Admin > >>>>>> oper */ > >>>>>> nodeop = clms_node_get_by_name(objectName); > >>>>>> if (nodeop == NULL) { > >>>>>> diff --git a/osaf/services/saf/clmsv/clms/clms_mds.c > >>>>>> b/osaf/services/saf/clmsv/clms/clms_mds.c > >>>>>> --- a/osaf/services/saf/clmsv/clms/clms_mds.c > >>>>>> +++ b/osaf/services/saf/clmsv/clms/clms_mds.c > >>>>>> @@ -659,7 +659,17 @@ uint32_t clms_mds_enc(struct ncsmds_call > >>>>>> ncs_enc_claim_space(uba, 4); > >>>>>> total_bytes += 4; > >>>>>> > >>>>>> - if (CLMSV_CLMS_TO_CLMA_API_RESP_MSG == msg- > >evt_type) { > >>>>>> + if (CLMSV_CLMS_TO_CLMNA_REBOOT_MSG == msg- > >evt_type) { > >>>>>> + /* encode the reboot msg **/ > >>>>>> + p8 = ncs_enc_reserve_space(uba, 4); > >>>>>> + if (!p8) { > >>>>>> + TRACE("ncs_enc_reserve_space failed"); > >>>>>> + goto err; > >>>>>> + } > >>>>>> + ncs_encode_32bit(&p8, msg- > >info.reboot_info.node_id); > >>>>>> + ncs_enc_claim_space(uba, 4); > >>>>>> + total_bytes += 4; > >>>>>> + } else if (CLMSV_CLMS_TO_CLMA_API_RESP_MSG == msg- > >>>>>>> evt_type) { > >>>>>> /** encode the API RSP msg subtype **/ > >>>>>> p8 = ncs_enc_reserve_space(uba, 4); > >>>>>> if (!p8) { > >>>>>> @@ -1517,3 +1527,37 @@ uint32_t clms_mds_msg_send(CLMS_CB > * > >> cb, > >>>>>> TRACE_LEAVE(); > >>>>>> return rc; > >>>>>> } > >>>>>> + > >>>>>> > >> > +/********************************************************* > >>>>>> ******************* > >>>>>> + Name : clms_mds_msg_bcast > >>>>>> + > >>>>>> + Description : This routine sends a broadcast message to CLMNA. > >>>>>> + > >>>>>> + Arguments : cb - ptr to the CLMA CB > >>>>>> + bcast_msg - ptr to the CLMSv broadcast message > >>>>>> + > >>>>>> + Return Values : NCSCC_RC_SUCCESS/NCSCC_RC_FAILURE > >>>>>> + > >>>>>> + Notes : None. > >>>>>> > >> > +********************************************************* > >>>>>> ************** > >>>>>> +*******/ uint32_t clms_mds_msg_bcast(CLMS_CB *cb, > >> CLMSV_MSG > >>>>>> *bcast_msg) > >>>>>> +{ > >>>>>> + NCSMDS_INFO snd_mds = {0}; > >>>>>> + uint32_t rc; > >>>>>> + > >>>>>> + snd_mds.i_mds_hdl = cb->mds_hdl; > >>>>>> + snd_mds.i_svc_id = NCSMDS_SVC_ID_CLMS; > >>>>>> + snd_mds.i_op = MDS_SEND; > >>>>>> + snd_mds.info.svc_send.i_msg = (NCSCONTEXT)bcast_msg; > >>>>>> + snd_mds.info.svc_send.i_to_svc = > NCSMDS_SVC_ID_CLMNA; > >>>>>> + snd_mds.info.svc_send.i_priority = > MDS_SEND_PRIORITY_HIGH; > >>>>>> + snd_mds.info.svc_send.i_sendtype = > MDS_SENDTYPE_BCAST; > >>>>>> + snd_mds.info.svc_send.info.bcast.i_bcast_scope = > >>>>>> NCSMDS_SCOPE_NONE; > >>>>>> + > >>>>>> + if ((rc = ncsmds_api(&snd_mds)) != NCSCC_RC_SUCCESS) { > >>>>>> + LOG_ER("%s: ncsmds_api MDS_SEND failed %u", > >>>>>> __FUNCTION__ ,rc); > >>>>>> + return rc; > >>>>>> + } > >>>>>> + > >>>>>> + return NCSCC_RC_SUCCESS; > >>>>>> +} > >>>>>> \ No newline at end of file > >>>>>> diff --git a/osaf/services/saf/clmsv/clms/clms_util.c > >>>>>> b/osaf/services/saf/clmsv/clms/clms_util.c > >>>>>> --- a/osaf/services/saf/clmsv/clms/clms_util.c > >>>>>> +++ b/osaf/services/saf/clmsv/clms/clms_util.c > >>>>>> @@ -1200,3 +1200,15 @@ bool ip_matched(uint16_t family1, uint8_ > >>>>>> return true; > >>>>>> } > >>>>>> > >>>>>> +// > >>>>>> +void clms_cluster_reboot() > >>>>>> +{ > >>>>>> + CLMSV_MSG bcast_msg; > >>>>>> + bcast_msg.evt_type = > CLMSV_CLMS_TO_CLMNA_REBOOT_MSG; > >>>>>> + bcast_msg.info.reboot_info.node_id = clms_cb->node_id; > > [Mathi] > > Iam okay with sending the node_id instead of a dummy message, but what > is the need for using node_id here? > > I think perhaps cluster_id should also be sent along with this? > > > >>>>>> + if (clms_mds_msg_bcast(clms_cb, &bcast_msg) == > >>>>>> NCSCC_RC_SUCCESS) { > >>>>>> + LOG_NO("Sending cluster reboot broadcast message > >>>>>> succeeded"); > >>>>>> + } else { > >>>>>> + LOG_ER("Sending cluster reboot broadcast message > failed"); > >>>>>> + } > >>>>>> +} > >>>>>> diff --git a/osaf/services/saf/clmsv/nodeagent/main.c > >>>>>> b/osaf/services/saf/clmsv/nodeagent/main.c > >>>>>> --- a/osaf/services/saf/clmsv/nodeagent/main.c > >>>>>> +++ b/osaf/services/saf/clmsv/nodeagent/main.c > >>>>>> @@ -114,6 +114,18 @@ static uint32_t clmna_mds_dec(struct ncs > >>>>>> total_bytes += 4; > >>>>>> > >>>>>> switch (msg->evt_type) { > >>>>>> + case CLMSV_CLMS_TO_CLMNA_REBOOT_MSG: > >>>>>> + { > >>>>>> + p8 = ncs_dec_flatten_space(uba, local_data, > 4); > >>>>>> + msg->info.reboot_info.node_id = > >>>>>> ncs_decode_32bit(&p8); > >>>>>> + ncs_dec_skip_space(uba, 4); > >>>>>> + total_bytes += 4; > >>>>>> + // Reboot will be performed by CLMS for this > node. > >>>>>> + if (clmna_cb->node_info.node_id != msg- > >>>>>>> info.reboot_info.node_id) { > >>>>>> + osaf_safe_reboot(); > >>>>>> + } > >>>>>> + break; > >>>>>> + } > >>>>>> case CLMSV_CLMS_TO_CLMA_API_RESP_MSG: > >>>>>> { > >>>>>> p8 = ncs_dec_flatten_space(uba, local_data, > 8); diff - > >>>> -git > >>>>>> a/scripts/opensaf_reboot b/scripts/opensaf_reboot > >>>>>> --- a/scripts/opensaf_reboot > >>>>>> +++ b/scripts/opensaf_reboot > >>>>>> @@ -40,10 +40,17 @@ NODE_ID_FILE=$pkglocalstatedir/node_id > >>>>>> > >>>>>> node_id=$1 > >>>>>> ee_name=$2 > >>>>>> +safe_reboot=$3 > >>>>>> > >>>>>> # Run commands through sudo when not superuser test $(id -u) > >>>>>> -ne 0 && icmd=$(which sudo 2> /dev/null) > >>>>>> > >>>>>> +opensaf_safe_reboot() > >>>>>> +{ > >>>>>> + logger -t "opensaf_reboot" "Rebooting local node using > shutdown" > >>>>>> + $icmd /sbin/shutdown -r now > >>>>>> +} > >>>>>> + > >>>>>> ## Use stonith for remote fencing > >>>>>> opensaf_reboot_with_remote_fencing() > >>>>>> { > >>>>>> @@ -91,8 +98,12 @@ temp_node_id=`cat "$NODE_ID_FILE"` > >>>>>> temp_node_id=`echo "$temp_node_id" |sed -e 's:^0[bBxX]::'| sed - > e > >>>>>> 's:^:0x:'` self_node_id=`printf "%d" $temp_node_id` > >>>>>> > >>>>>> -# A node ID of zero(0) means an order to reboot the local node > >>>>>> -if [ "$self_node_id" = "$node_id" ] || [ $node_id = 0 ]; then > >>>>>> + > >>>>>> +if [ "$safe_reboot" = 1 ]; then > >>>>>> + opensaf_safe_reboot > >>>>>> +else > >>>>>> + # A node ID of zero(0) means an order to reboot the local node > >>>>>> + if [ "$self_node_id" = "$node_id" ] || [ $node_id = 0 ]; > >>>>>> +then > >>>>>> # uncomment the following line if debugging errors that keep > >>>>>> restarting the node > >>>>>> # exit 0 > >>>>>> > >>>>>> @@ -114,8 +125,8 @@ if [ "$self_node_id" = "$node_id" ] || [ > >>>>>> > >>>>>> # Reboot (not shutdown) system WITH file system sync > >>>>>> $icmd /sbin/reboot -f > >>>>>> -else > >>>>>> - if [ "$FMS_USE_REMOTE_FENCING" = "1" ]; then > >>>>>> + else > >>>>>> + if [ "$FMS_USE_REMOTE_FENCING" = 1 ]; then > >>>>>> opensaf_reboot_with_remote_fencing > >>>>>> else > >>>>>> if [ ":$ee_name" != ":" ]; then @@ -133,4 +144,5 @@ > else > >>>>>> logger -t "opensaf_reboot" "Rebooting remote > >>>>>> node > >>>> in the > >>>>>> absence of PLM is outside the scope of OpenSAF" > >>>>>> fi > >>>>>> fi > >>>>>> -fi > >>>>>> + fi > >>>>>> +fi > >>>>>> \ No newline at end of file > >> > > ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel