# # # osds.pm # # Copyright (c) 2007, 2014, Oracle and/or its affiliates. All rights reserved. # # # NAME # osds_usm_driver_state.pm - Linux OSD component of usm_driver_state. # # DESCRIPTION # Purpose # Report if USM drivers are installed and/or loaded # # Usage # usm_driver_state [installed] [loaded] [version] # # NOTES # # # use strict; package osds_acfsdriverstate; require Exporter; our @ISA = qw(Exporter); our @EXPORT = qw( osds_version osds_validate_drivers osds_usm_compatible ); use acfslib; use osds_acfslib; use osds_acfsroot; # Get the currently installed USM driver version. # The OS reported is the version that the driver was built with ($kversion). # sub osds_version { my ($kversion, $dversion, $rversion) = lib_osds_get_current_installed_version(); my ($arch) = `uname -i`; chomp($arch); if (!defined($kversion) || !defined($dversion) || !defined($rversion)) { # Kernel version and/or driver version not detected. lib_error_print(116, "Internal error."); exit 1; } my ($return_string) = "$kversion($arch)/$dversion/$rversion"; return $return_string; } sub osds_validate_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 "EL7") { $release = "redhat-release-7"; } elsif($release eq "RHEL6") { $release = "redhat-release-server-6"; } elsif($release eq "RHEL7") { $release = "redhat-release-server-7"; } elsif($release eq "SLES10") { $release = "sles-release-10"; } elsif($release eq "SLES11") { $release = "sles-release-11"; } elsif($release eq "SLES12") { $release = "sles-release-12"; } $result = lib_osds_get_os_type($test_mode, $release, $version, $patchlevel, $arch); if ($result =~ /not supported/) { return USM_NOT_SUPPORTED; } else { return USM_SUPPORTED; } } else { $type = lib_osds_get_os_type(); if ($type =~ /not supported/) { return USM_NOT_SUPPORTED; } else { return USM_SUPPORTED; } } return $result; } # osds_usm_compatible # # Make sure drivers are kabi compatible. # sub osds_usm_compatible { my ($sub_command) = @_; my ($result) = USM_SUPPORTED; if (osds_acfsroot::osds_initialize(undef, $sub_command) != USM_SUCCESS) { $result = USM_NOT_SUPPORTED; } return $result; } #end osds_usm_compatible