btrfsvol

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 11, 2023 License: Apache-2.0, GPL-2.0, GPL-3.0-or-later, + 1 more Imports: 12 Imported by: 0

Documentation

Overview

Package btrfsvol contains core logical-volume-management layer of btrfs.

Index

Constants

This section is empty.

Variables

View Source
var ErrCouldNotMap = errors.New("could not map logical address")

Functions

This section is empty.

Types

type AddrDelta

type AddrDelta int64

func (AddrDelta) Format

func (d AddrDelta) Format(f fmt.State, verb rune)

type BlockGroupFlags

type BlockGroupFlags uint64
const (
	BLOCK_GROUP_DATA BlockGroupFlags = 1 << iota
	BLOCK_GROUP_SYSTEM
	BLOCK_GROUP_METADATA
	BLOCK_GROUP_RAID0
	BLOCK_GROUP_RAID1
	BLOCK_GROUP_DUP
	BLOCK_GROUP_RAID10
	BLOCK_GROUP_RAID5
	BLOCK_GROUP_RAID6
	BLOCK_GROUP_RAID1C3
	BLOCK_GROUP_RAID1C4

	// BLOCK_GROUP_RAID_MASK is the set of bits that mean that
	// mean the logical:physical relationship is a one:many
	// relationship rather than a one:one relationship.
	//
	// Notably, this does not include BLOCK_GROUP_RAID0.
	BLOCK_GROUP_RAID_MASK = (BLOCK_GROUP_RAID1 | BLOCK_GROUP_DUP | BLOCK_GROUP_RAID10 | BLOCK_GROUP_RAID5 | BLOCK_GROUP_RAID6 | BLOCK_GROUP_RAID1C3 | BLOCK_GROUP_RAID1C4)
)

func (BlockGroupFlags) Has

func (BlockGroupFlags) String

func (f BlockGroupFlags) String() string

type DeviceID

type DeviceID uint64

type IntAddr

type IntAddr[T _IntAddr[T]] _IntAddr[T]

IntAddr is a type constraint that you can use to accept LogicalAddr or PhysicalAddr.

type LogicalAddr

type LogicalAddr int64

func (LogicalAddr) Add

func (LogicalAddr) Format

func (a LogicalAddr) Format(f fmt.State, verb rune)

func (LogicalAddr) Sub

type LogicalVolume

type LogicalVolume[PhysicalVolume diskio.File[PhysicalAddr]] struct {
	// contains filtered or unexported fields
}

func (*LogicalVolume[PhysicalVolume]) AddMapping

func (lv *LogicalVolume[PhysicalVolume]) AddMapping(m Mapping) error

func (*LogicalVolume[PhysicalVolume]) AddPhysicalVolume

func (lv *LogicalVolume[PhysicalVolume]) AddPhysicalVolume(id DeviceID, dev PhysicalVolume) error

func (*LogicalVolume[PhysicalVolume]) ClearMappings

func (lv *LogicalVolume[PhysicalVolume]) ClearMappings()

func (*LogicalVolume[PhysicalVolume]) Close

func (lv *LogicalVolume[PhysicalVolume]) Close() error

func (*LogicalVolume[PhysicalVolume]) CouldAddMapping

func (lv *LogicalVolume[PhysicalVolume]) CouldAddMapping(m Mapping) bool

func (*LogicalVolume[PhysicalVolume]) Mappings

func (lv *LogicalVolume[PhysicalVolume]) Mappings() []Mapping

func (*LogicalVolume[PhysicalVolume]) Name

func (lv *LogicalVolume[PhysicalVolume]) Name() string

func (*LogicalVolume[PhysicalVolume]) PhysicalVolumes

func (lv *LogicalVolume[PhysicalVolume]) PhysicalVolumes() map[DeviceID]PhysicalVolume

func (*LogicalVolume[PhysicalVolume]) ReadAt

func (lv *LogicalVolume[PhysicalVolume]) ReadAt(dat []byte, laddr LogicalAddr) (int, error)

func (*LogicalVolume[PhysicalVolume]) Resolve

func (lv *LogicalVolume[PhysicalVolume]) Resolve(laddr LogicalAddr) (paddrs containers.Set[QualifiedPhysicalAddr], maxlen AddrDelta)

func (*LogicalVolume[PhysicalVolume]) ResolveAny

func (lv *LogicalVolume[PhysicalVolume]) ResolveAny(laddr LogicalAddr, size AddrDelta) (LogicalAddr, QualifiedPhysicalAddr)

func (*LogicalVolume[PhysicalVolume]) SetName

func (lv *LogicalVolume[PhysicalVolume]) SetName(name string)

func (*LogicalVolume[PhysicalVolume]) Size

func (lv *LogicalVolume[PhysicalVolume]) Size() LogicalAddr

func (*LogicalVolume[PhysicalVolume]) UnResolve

func (lv *LogicalVolume[PhysicalVolume]) UnResolve(paddr QualifiedPhysicalAddr) LogicalAddr

func (*LogicalVolume[PhysicalVolume]) WriteAt

func (lv *LogicalVolume[PhysicalVolume]) WriteAt(dat []byte, laddr LogicalAddr) (int, error)

type Mapping

type Mapping struct {
	LAddr      LogicalAddr
	PAddr      QualifiedPhysicalAddr
	Size       AddrDelta
	SizeLocked bool                                 `json:",omitempty"`
	Flags      containers.Optional[BlockGroupFlags] `json:",omitempty"`
}

type PhysicalAddr

type PhysicalAddr int64

func (PhysicalAddr) Add

func (PhysicalAddr) Format

func (a PhysicalAddr) Format(f fmt.State, verb rune)

func (PhysicalAddr) Sub

type QualifiedPhysicalAddr

type QualifiedPhysicalAddr struct {
	Dev  DeviceID
	Addr PhysicalAddr
}

func (QualifiedPhysicalAddr) Add

func (QualifiedPhysicalAddr) Compare

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL