Hitachi PMR fix - swapnfs is not available when paging resource is chaged.

git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@10372 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
sjing 2011-08-26 03:38:30 +00:00
parent 8dd019c941
commit dae397cf6a

View File

@ -6283,10 +6283,10 @@ sub update_dd_boot
{
# only update if it has not been done yet
my $cmd = "cat $dd_boot_file_mn | grep 'xCAT basecust support'";
my @result = xCAT::Utils->runcmd("$cmd", -1);
if ($::RUNCMD_RC != 0)
{
#my $cmd = "cat $dd_boot_file_mn | grep 'xCAT basecust support'";
#my @result = xCAT::Utils->runcmd("$cmd", -1);
#if ($::RUNCMD_RC != 0)
#{
if ($::VERBOSE)
{
my $rsp;
@ -6362,6 +6362,18 @@ sub update_dd_boot
fi
\n\n~;
my $basecustrm = qq~
# xCAT basecust removal support #5
# Check if BASECUST_REMOVAL is specified,
# if yes, then remove the specified device
# This change will finally go into AIX NIM support
[ -n "\${BASECUST_REMOVAL}" ] && {
cp /SPOT/usr/sbin/rmdev /usr/sbin
rmdev -l \${BASECUST_REMOVAL} -d
rm -f /usr/sbin/rmdev
}
\n\n~;
if (open(DDBOOT, "<$dd_boot_file_mn"))
{
@lines = <DDBOOT>;
@ -6391,32 +6403,47 @@ sub update_dd_boot
}
# Create a new one
my $dontupdate = 0;
my $dontupdt1 = 0;
my $dontupdt2 = 0;
my $dontupdt3 = 0;
if (open(DDBOOT, ">$dd_boot_file_mn"))
{
foreach my $l (@lines)
{
if ($l =~ /xCAT basecust support/)
{
$dontupdt1 = 1;
}
if ($l =~ /xCAT support/)
{
$dontupdate = 1;
$dontupdt2 = 1;
}
if (($l =~ /network boot phase 1/)) {
if ($l =~ /xCAT basecust removal support/)
{
$dontupdt3 = 1;
}
if (($l =~ /network boot phase 1/) && (!$dontupdt1)) {
# add /etc/basecust to restore
print DDBOOT $odmrestore;
}
if (($l =~ /configure paging - local or NFS network/)) {
if (($l =~ /configure paging - local or NFS network/) && (!$dontupdt1)) {
# make basecust persistent
print DDBOOT $mntbase;
}
if (($l =~ /0x620/) && (!$dontupdate))
if (($l =~ /0x620/) && (!$dontupdt2))
{
# add the patch to set the console
print DDBOOT $patch;
}
if (($l =~ /Copy the local_domain file to/) && (!$dontupdate)) {
if (($l =~ /Copy the local_domain file to/) && (!$dontupdt2)) {
# add the aixlitesetup hook for xCAT statelite support
print DDBOOT $scripthook;
}
if (($l =~ /Start NFS remote paging/) && (!$dontupdt3))
{
# add basecuse removal for swapdev
print DDBOOT $basecustrm;
}
print DDBOOT $l;
}
close(DDBOOT);
@ -6454,7 +6481,7 @@ sub update_dd_boot
xCAT::MsgUtils->message("I", $rsp, $callback);
}
}
}
#}
else
{ # dd_boot file doesn't exist
return 1;
@ -8738,6 +8765,69 @@ sub mkdsklsnode
}
}
# Update /tftpboot/nodeip.info to export the variable BASECUST_REMOVAL
# then during the network boot, rc.dd_boot script will check this variable
# to see if we need remove any device after restbase /etc/basecust.
# For now, we only need to remove swapnfs0.
# Only for the ODM persistent feature
if ($imagehash{$image_name}{shared_root})
{
# This has a shared_root resource, then it might have /etc/basecust restore
# Update /tftpboot/nodeip.info
my ($nodehost, $nodeip) = xCAT::NetworkUtils->gethostnameandip($node);
if (!$nodehost || !$nodeip)
{
my $rsp = {};
$rsp->{data}->[0] = "Can not resolve the node $node";
xCAT::MsgUtils->message("E", $rsp, $callback);
next;
}
my $tftpdir = xCAT::Utils->getTftpDir();
my $niminfoloc = "$tftpdir/${nodeip}.info";
my $cmd = "cat $niminfoloc | grep 'BASECUST_REMOVAL'";
my @result = xCAT::Utils->runcmd("$cmd", -1);
if ($::RUNCMD_RC != 0)
{
if ($::VERBOSE)
{
my $rsp;
push @{$rsp->{data}}, "Updating the $niminfoloc file.\n";
xCAT::MsgUtils->message("I", $rsp, $callback);
}
unless (open(NIMINFOFILE, "<$niminfoloc"))
{
my $rsp = {};
$rsp->{data}->[0] = "Can not open the niminfo file $niminfoloc for reading.";
xCAT::MsgUtils->message("E", $rsp, $callback);
next;
}
my @infofile = <NIMINFOFILE>;
close(NIMINFOFILE);
push @infofile, "export BASECUST_REMOVAL=swapnfs0\n";
unless (open(NEWINFO, ">$niminfoloc"))
{
my $rsp = {};
$rsp->{data}->[0] = "Can not open the file $niminfoloc for writing";
xCAT::MsgUtils->message("E", $rsp, $callback);
next;
}
for my $line (@infofile)
{
print NEWINFO $line;
}
close(NEWINFO);
}
}
if (0)
{