Skip to content
Snippets Groups Projects
Select Git revision
  • b017d3091599b86a841c6f4f11d0e110bfb45207
  • master default protected
2 results

Filesystems.pm

Blame
  • Filesystems.pm 5.35 KiB
    
    =head1 NAME
    
      Util::Filesystems
    
    =head1 DESCRIPTION
    
    Wrapper for Linux::Proc::Filesystems and possibly other modules to obtain
    a full picture about available filesystems
    
    Wanted information
    * mount point info (Sys::Filesystem)
    * free space
    * LVM
    
    =cut
    
    use strict;
    
    package Util::Filesystems;
    
    use Data::Dumper;
    $Data::Dumper::Indent= 1;
    
    my $initialzed= 0;
    
    my $have_LPM= 0;
    
    BEGIN {
      eval {
        require Linux::Proc::Mounts;
      };
    
      if ($@)
      {
        # print "consider to install Linux::Proc::Mounts\n";
      }
      else
      {
        $have_LPM= 1;
      }
    }
    
    my %setable= map { $_ => 1 } qw();
    
    my %ignore_fs_type= map { $_ => 1 } qw(none rootfs tmpfs proc devpts
      devtmpfs usbfs sysfs binfmt_misc fusectl debugfs securityfs pstore
      cgroup autofs hugetlbfs mqueue tracefs overlayfs fuse.gvfsd-fuse fuseblk
      fuse.sshfs cifs squashfs nsfs
    );
    
    my %ignore_fs_path= map { $_ => 1 } qw(tmpfs);
    # print "ignore_fs_type: ", Dumper (\%ignore_fs_type);
    
    __PACKAGE__->main() unless caller();
    
    sub main
    {
    
      # print join (' ', __FILE__, __LINE__, 'main: caller=['. caller(). ']'), "\n";
    
      my $fs= new Util::Filesystems;
      $fs->_init();
      # print __LINE__, ' fs: ', Dumper($fs);
      print "regular filesystems: ", join(' ', $fs->regular_filesystems()), "\n";
    }
    
    sub new
    {
      my $class= shift;