Skip to content

Commit

Permalink
Merge pull request #72 from mariux64/automap-41-hostconig
Browse files Browse the repository at this point in the history
make-automaps: Support nfs > 4.0
  • Loading branch information
pmenzel authored Jan 30, 2019
2 parents c16b63d + cf5b3fc commit 9cfbd35
Showing 1 changed file with 35 additions and 7 deletions.
42 changes: 35 additions & 7 deletions make-automaps/make-automaps
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,28 @@ use warnings;

chomp (my $hostname=`uname -n`);$hostname=~s/\..*//;

{
my %SERVER_CAN_41;
sub server_vers_opt {
my ($servername)=@_;
unless (exists $SERVER_CAN_41{$servername}) {
my $pid=fork;
if (defined $pid) {
unless ($pid) {
open STDERR,'>','/dev/null';
exec 'hostconfig','--host',$servername,'nfsd41';
die "exec failed: $!\n";
}
wait;
$SERVER_CAN_41{$servername} = $? ? 0 : 1;
} else {
$SERVER_CAN_41{$servername} = 0;
}
}
return $SERVER_CAN_41{$servername} ? () : ('-vers=4.0');
}
}

sub convert_map {
my ($amd,$auto,$parse_line)=@_;
open IN,'<',$amd or die "$amd: $!\n";
Expand All @@ -22,13 +44,13 @@ sub convert_map {
sub parse_jbod_line {
my ($in,$source)=@_;
if ($in=~m"^(X\d+)\s+host==([^;]+);type:=link;fs:=/amd/\2/X/\1 host!=\2;type:=nfs;rhost:=\2;fs:=/amd/\2/x/\1;rfs:=/amd/\2/X/\1$") {
return "$1 -vers=4.0 $2:/amd/$2/X/$1";
return join(' ',$1,server_vers_opt($2),"$2:/amd/$2/X/$1");
} elsif ($in=~m"^(C\d+)\s+host==([^;]+);type:=link;fs:=/amd/\2/C/\1 host!=\2;type:=nfs;rhost:=\2;fs:=/amd/\2/c/\1;rfs:=/amd/\2/C/\1$") {
return "$1 -vers=4.0 $2:/amd/$2/C/$1";
return join(' ',$1,server_vers_opt($2),"$2:/amd/$2/C/$1");
} elsif ($in=~m"^(M\d+)\s+host==([^;]+);type:=link;fs:=/amd/\2/M/\1 host!=\2;type:=nfs;rhost:=\2;fs:=/amd/\2/m/\1;rfs:=/amd/\2/M/\1$") {
return "$1 -vers=4.0 $2:/amd/$2/M/$1";
return join(' ',$1,server_vers_opt($2),"$2:/amd/$2/M/$1");
} elsif ($in=~m"^(X\d+)\s+-fs:=/amd/([^/]+)/X/\1 host==\2;type:=link host!=\2;type:=nfs;rhost:=\2") {
return "$1 -vers=4.0 $2:/amd/$2/X/$1";
return join(' ',$1,server_vers_opt($2),"$2:/amd/$2/X/$1");
} else {
warn "?? $source : $_ ??";
}
Expand Down Expand Up @@ -68,8 +90,8 @@ sub parse_map_line {
return ();
}

sub parse_subkey_line { my ($key,$host,$fs)=parse_map_line(@_); return $key ? "$key -vers=4.0 $host:$fs/$key" : undef; }
sub parse_nosubkey_line { my ($key,$host,$fs)=parse_map_line(@_); return $key ? "$key -vers=4.0 $host:$fs" : undef; }
sub parse_subkey_line { my ($key,$host,$fs)=parse_map_line(@_); return $key ? join(' ',$key,server_vers_opt($host),"$host:$fs/$key") : undef; }
sub parse_nosubkey_line { my ($key,$host,$fs)=parse_map_line(@_); return $key ? join(' ',$key,server_vers_opt($host),"$host:$fs") : undef; }

sub create_pkg_map {
my $cache;
Expand All @@ -82,10 +104,16 @@ sub create_pkg_map {
/\S/ or next;
my ($pkg,$flags)=split ' ';
my $local="/var/pkg/$pkg";
my $rw = $flags eq 'BUILD' ? ' -vers=4.0,rw' : ' -vers=4.0';
my $rw;
if (-d $local) {
$rw = $flags eq 'BUILD' ? ' -rw' : '';
print $out "$pkg$rw :$local\n";
} else {
if (server_vers_opt('ex')) {
$rw = $flags eq 'BUILD' ? ' -vers=4.0,rw' : ' -vers=4.0';
} else{
$rw = $flags eq 'BUILD' ? ' -rw' : '';
}
print $out "$pkg$rw ex:/amd/ex/X/X2008/package/pkg/$pkg\n";
}
}
Expand Down

0 comments on commit 9cfbd35

Please sign in to comment.