Class: UBLK::Target

Inherits:
Object
  • Object
show all
Defined in:
lib/ublk/target.rb,
sig/ublk.rbs

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(size:, queues: 1, depth: 128) ⇒ Target

Returns a new instance of Target.

Parameters:

  • size: (Integer)
  • queues: (Integer) (defaults to: 1)
  • depth: (Integer) (defaults to: 128)

Raises:

  • (ArgumentError)


7
8
9
10
11
12
13
14
15
# File 'lib/ublk/target.rb', line 7

def initialize(size:, queues: 1, depth: 128)
  raise ArgumentError, "size must be a positive multiple of 512" unless size.is_a?(Integer) && size.positive? && (size % 512).zero?
  raise ArgumentError, "queues must be between 1 and 4096" unless queues.is_a?(Integer) && queues.between?(1, 4096)
  raise ArgumentError, "depth must be between 1 and 4096" unless depth.is_a?(Integer) && depth.between?(1, 4096)

  @size = size
  @queues = queues
  @depth = depth
end

Instance Attribute Details

#depthInteger (readonly)

Returns the value of attribute depth.

Returns:

  • (Integer)


5
6
7
# File 'lib/ublk/target.rb', line 5

def depth
  @depth
end

#queuesInteger (readonly)

Returns the value of attribute queues.

Returns:

  • (Integer)


5
6
7
# File 'lib/ublk/target.rb', line 5

def queues
  @queues
end

#sizeInteger (readonly)

Returns the value of attribute size.

Returns:

  • (Integer)


5
6
7
# File 'lib/ublk/target.rb', line 5

def size
  @size
end

Instance Method Details

#discard(_offset, _length) ⇒ Integer

Parameters:

  • offset (Integer)
  • length (Integer)

Returns:

  • (Integer)

Raises:

  • (Errno::EOPNOTSUPP)


29
30
31
# File 'lib/ublk/target.rb', line 29

def discard(_offset, _length)
  raise Errno::EOPNOTSUPP
end

#flushInteger

Returns:

  • (Integer)


27
# File 'lib/ublk/target.rb', line 27

def flush = 0

#logical_block_sizeInteger

Returns:

  • (Integer)


37
# File 'lib/ublk/target.rb', line 37

def logical_block_size = 512

#physical_block_sizeInteger

Returns:

  • (Integer)


38
# File 'lib/ublk/target.rb', line 38

def physical_block_size = 4096

#read(_offset, _length) ⇒ String

Parameters:

  • offset (Integer)
  • length (Integer)

Returns:

  • (String)

Raises:

  • (NotImplementedError)


17
18
19
# File 'lib/ublk/target.rb', line 17

def read(_offset, _length)
  raise NotImplementedError, "targets must implement #read"
end

#read_only?Boolean

Returns:

  • (Boolean)


39
# File 'lib/ublk/target.rb', line 39

def read_only? = false

#rotational?Boolean

Returns:

  • (Boolean)


40
# File 'lib/ublk/target.rb', line 40

def rotational? = false

#write(_offset, _data) ⇒ Integer

Parameters:

  • offset (Integer)
  • data (String)

Returns:

  • (Integer)

Raises:

  • (Errno::EROFS)


21
22
23
24
25
# File 'lib/ublk/target.rb', line 21

def write(_offset, _data)
  raise Errno::EROFS if read_only?

  raise NotImplementedError, "targets must implement #write"
end

#write_zeroes(_offset, _length) ⇒ Integer

Parameters:

  • offset (Integer)
  • length (Integer)

Returns:

  • (Integer)

Raises:

  • (Errno::EOPNOTSUPP)


33
34
35
# File 'lib/ublk/target.rb', line 33

def write_zeroes(_offset, _length)
  raise Errno::EOPNOTSUPP
end