# # # osds.pm # # Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved. # # # NAME # osds_okadriverstate.pm - Linux OSD component of okadriverstate.pl. # # DESCRIPTION # Purpose # Report if OKA drivers are installed and/or loaded # # # NOTES # # # use strict; package osds_okadriverstate; require Exporter; our @ISA = qw(Exporter); our @EXPORT = qw( osds_oka_version osds_validate_oka_drivers ); use acfslib; use osds_acfslib; use okalib; use osds_okalib; # Get the currently installed OKA driver version. # The OS reported is the version that the driver was built with ($kversion). # sub osds_oka_version { my ($kversion, $dversion) = lib_osds_get_current_installed_version(); my ($arch) = `uname -i`; chomp($arch); if (!defined($kversion) || !defined($dversion)) { # Kernel version and/or driver version not detected. lib_error_print_noalert(116, "Internal error."); exit 1; } my ($return_string) = "$kversion($arch)/$dversion"; return $return_string; } sub osds_validate_oka_drivers { my ($test_mode, $release, $version, $patchlevel, $arch) = @_; my ($type); my ($result); my ($my_kernel) = `uname -r`; chomp ($my_kernel); my ($my_platform) = `uname -p`; chomp ($my_platform); if ($test_mode) { if (($release =~ /EL/) || ($release =~ /SLES/)) { $type = $release; } else { # test is for another OS. return "NOOP"; } $my_kernel = $version; if ($release eq "EL5") { $release = "redhat-release-5"; } elsif($release eq "EL6") { $release = "redhat-release-6"; } elsif($release eq "SLES10") { $release = "sles-release-10"; } elsif($release eq "SLES11") { $release = "sles-release-11"; } $result = lib_osds_get_os_type($test_mode, $release, $version, $patchlevel); if ($result =~ /not supported/) { return USM_NOT_SUPPORTED; } } else { $type = lib_osds_get_os_type(); if ($type =~ /not supported/) { return USM_NOT_SUPPORTED; } } $result = USM_SUPPORTED; if ($type =~ /EL/) { if ($type eq 'EL6') { if (($my_kernel =~ /^2.6.32-100/) && ($my_platform eq 'x86_64')) { $result = USM_SUPPORTED; } } } else { # Not expected to ever get here $result = USM_NOT_SUPPORTED; } return $result; }