[SSI] What happens when the second node boots [ correct me if i am wrong ]
Brought to you by:
brucewalker,
rogertsang
From: Aneesh K. K.V <ane...@di...> - 2001-12-03 14:47:55
|
Hi, While debugging the crash on alpha I tried to trace the calls when the second node joins. I am putting below what i noticed .I may be wrong at some of the places. So please correct me. I guess this should be helpful when SSI get taken to some other platform. What happens when the second node boots and join the cluster ..... When the second node boots and tries to join the cluster it makes a call to cluster_config --intiproc( Done inside /linuxrc which resides in the inital ramdisk ). The cluster_config further goes to make a system call ( The generic system call ssisys which is mapped to the kernel call sys_ssisys ). It further goes down to make a call to initproc_postroot which resides inthe file nsc_initproc.c This call further goes down and sleeps for ever. cluster_config --initproc enter the kernel sys_ssisys initproc_postroot sleep Meanwhile the init in the master node is notified regarding the arrival of the new node. I don't know how it is notified. I guess through the SIGCLUSTER with the node number( Correct me if I am wrong ) . Here it scans the /etc/inittab.ssi. and start all the lines mareked U/D/R/L . For the time being we have only U for rc.nodeup and D for rc.nodedown. Since we are here during node up it goes and execute rc.nodeup . The entire call goes down from process_node to _startup and then to _spawn it further check if the node is same at his node number if not it makes a call to rexecvp which is implemented in libcluster. It further goes making a call __rexecve which then make a system call to rexecve The sys_rexecve will then go and make cli_rexecve call . _startup _spawn if( node !== this_node ) rexecvp __rexecve sys_rexecve cli_rexecve -aneesh |