Sha256: 630cca1f733a9d5091820f427e623ea3634c7ec195bb4cf9ed8c0a33bdffe404

Contents?: true

Size: 1.03 KB

Versions: 7

Compression:

Stored size: 1.03 KB

Contents

require 'sys-uname'
require 'util/miq-system'

if Sys::Platform::IMPL == :linux
  if MiqSystem.arch == :x86_64
    require 'linux_block_device'
    require 'disk/modules/RawBlockIO'
  end
end

module MiqLargeFile
  def self.open(file_name, flags)
    case Sys::Platform::OS
    when :unix
      if Sys::Platform::IMPL == :linux
        return(RawBlockIO.new(file_name, flags)) if MiqLargeFileStat.new(file_name).blockdev?
      end
      return(MiqLargeFileOther.new(file_name, flags))
    else
      return(MiqLargeFileOther.new(file_name, flags))
    end
  end

  def self.size(file_name)
    f = open(file_name, "r")
    s = f.size
    f.close
    s
  end

  # For camcorder interposition.
  class MiqLargeFileStat
    def initialize(file_name)
      @file_name = file_name
    end

    def blockdev?
      File.stat(@file_name).blockdev?
    end
  end

  class MiqLargeFileOther < File
    def write(buf, _len)
      super(buf)
    end

    def size
      return stat.size unless stat.blockdev?
      LinuxBlockDevice.size(fileno)
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
manageiq-smartstate-0.2.2 lib/disk/modules/MiqLargeFile.rb
manageiq-smartstate-0.2.1 lib/disk/modules/MiqLargeFile.rb
manageiq-smartstate-0.2.0 lib/disk/modules/MiqLargeFile.rb
manageiq-smartstate-0.1.6 lib/disk/modules/MiqLargeFile.rb
manageiq-smartstate-0.1.5 lib/disk/modules/MiqLargeFile.rb
manageiq-smartstate-0.1.4 lib/disk/modules/MiqLargeFile.rb
manageiq-smartstate-0.1.3 lib/disk/modules/MiqLargeFile.rb