replica

package
v1.6.1 Latest Latest
Warning

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

Go to latest
Published: Mar 28, 2024 License: Apache-2.0 Imports: 28 Imported by: 0

Documentation

Index

Constants

View Source
const (
	FileLockDirectory = "/host/var/lib/longhorn/.lock"
	HashLockFileName  = "hash"
)
View Source
const (
	OpCoalesce = "coalesce" // Source is parent, target is child
	OpRemove   = "remove"
	OpReplace  = "replace"
	OpPrune    = "prune" // Remove overlapping chunks from the source.
)
View Source
const (
	ProgressStateInProgress = ProgressState("in_progress")
	ProgressStateComplete   = ProgressState("complete")
	ProgressStateError      = ProgressState("error")
)
View Source
const MaxExtentsBuffer = 1024

Variables

This section is empty.

Functions

func DeleteSnapshotHashInfoChecksumFile added in v1.4.0

func DeleteSnapshotHashInfoChecksumFile(snapshotName string) error

func GetSnapshotChangeTime added in v1.4.0

func GetSnapshotChangeTime(snapshotName string) (string, error)

func GetSnapshotHashInfoFromChecksumFile added in v1.4.0

func GetSnapshotHashInfoFromChecksumFile(snapshotName string) (*xattrType.SnapshotHashInfo, error)

func LoadDiffDiskLocationList added in v1.1.2

func LoadDiffDiskLocationList(diffDisk *diffDisk, disk types.DiffDisk, currentFileIndex byte) error

func SetSnapshotHashInfoToChecksumFile added in v1.4.0

func SetSnapshotHashInfoToChecksumFile(snapshotName string, info *xattrType.SnapshotHashInfo) error

Types

type BackupStatus

type BackupStatus struct {
	Name string

	SnapshotID    string
	Error         string
	Progress      int
	BackupURL     string
	State         ProgressState
	IsIncremental bool
	IsOpened      bool
	// contains filtered or unexported fields
}

func NewBackup

func NewBackup(name, volumeID, snapID string, backingFile *backingfile.BackingFile) *BackupStatus

func (*BackupStatus) CloseSnapshot

func (rb *BackupStatus) CloseSnapshot(snapID, volumeID string) error

func (*BackupStatus) CompareSnapshot

func (rb *BackupStatus) CompareSnapshot(snapID, compareSnapID, volumeID string) (*btypes.Mappings, error)

func (*BackupStatus) HasSnapshot

func (rb *BackupStatus) HasSnapshot(snapID, volumeID string) bool

func (*BackupStatus) OpenSnapshot

func (rb *BackupStatus) OpenSnapshot(snapID, volumeID string) error

func (*BackupStatus) ReadSnapshot

func (rb *BackupStatus) ReadSnapshot(snapID, volumeID string, start int64, data []byte) error

func (*BackupStatus) UpdateBackupStatus

func (rb *BackupStatus) UpdateBackupStatus(snapID, volumeID string, state string, progress int, url string, errString string) error

UpdateBackupStatus updates the backup status. The state is first-respected, but if - The errString is not empty, the state will be set to error. - The progress is 100, the state will be set to complete.

type DiskInfo

type DiskInfo struct {
	Name        string            `json:"name"`
	Parent      string            `json:"parent"`
	Children    map[string]bool   `json:"children"`
	Removed     bool              `json:"removed"`
	UserCreated bool              `json:"usercreated"`
	Created     string            `json:"created"`
	Size        string            `json:"size"`
	Labels      map[string]string `json:"labels"`
}

type Info

type Info struct {
	Size            int64
	Head            string
	Dirty           bool
	Rebuilding      bool
	Error           string
	Parent          string
	SectorSize      int64
	BackingFilePath string
	BackingFile     *backingfile.BackingFile `json:"-"`
}

func ReadInfo

func ReadInfo(dir string) (Info, error)

type PrepareRemoveAction

type PrepareRemoveAction struct {
	Action string `json:"action"`
	Source string `json:"source"`
	Target string `json:"target"`
}

type ProgressState

type ProgressState string

type Replica

type Replica struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

func New

func New(size, sectorSize int64, dir string, backingFile *backingfile.BackingFile, disableRevCounter, unmapMarkDiskChainRemoved bool, snapshotMaxCount int, SnapshotMaxSize int64) (*Replica, error)

func NewReadOnly

func NewReadOnly(dir, head string, backingFile *backingfile.BackingFile) (*Replica, error)

func OpenSnapshot added in v1.2.0

func OpenSnapshot(dir string, snapshotName string) (*Replica, error)

func (*Replica) Chain

func (r *Replica) Chain() ([]string, error)

func (*Replica) Close

func (r *Replica) Close() error

func (*Replica) CloseWithoutWritingMetaData added in v1.2.0

func (r *Replica) CloseWithoutWritingMetaData()

func (*Replica) Delete

func (r *Replica) Delete() error

func (*Replica) DisplayChain

func (r *Replica) DisplayChain() ([]string, error)

func (*Replica) Expand

func (r *Replica) Expand(size int64) (err error)

func (*Replica) GetDataLayout added in v1.2.0

func (r *Replica) GetDataLayout(ctx context.Context) (<-chan sparse.FileInterval, <-chan error, error)

func (*Replica) GetRemainSnapshotCounts

func (r *Replica) GetRemainSnapshotCounts() int

func (*Replica) GetReplicaStat added in v1.1.0

func (r *Replica) GetReplicaStat() (int64, int64)

func (*Replica) GetRevisionCounter

func (r *Replica) GetRevisionCounter() int64

func (*Replica) GetSnapshotCountUsage added in v1.6.0

func (r *Replica) GetSnapshotCountUsage() int

func (*Replica) GetSnapshotSizeUsage added in v1.6.0

func (r *Replica) GetSnapshotSizeUsage() int64

func (*Replica) GetUnmapMarkDiskChainRemoved added in v1.4.0

func (r *Replica) GetUnmapMarkDiskChainRemoved() bool

func (*Replica) Info

func (r *Replica) Info() Info

func (*Replica) IsRevCounterDisabled added in v1.1.0

func (r *Replica) IsRevCounterDisabled() bool

func (*Replica) ListDisks

func (r *Replica) ListDisks() map[string]DiskInfo

func (*Replica) MarkDiskAsRemoved

func (r *Replica) MarkDiskAsRemoved(name string) error

func (*Replica) Preload added in v1.2.0

func (r *Replica) Preload(includeBackingFileLayer bool) error

Preload populates r.volume.location with correct values

func (*Replica) PrepareRemoveDisk

func (r *Replica) PrepareRemoveDisk(name string) ([]PrepareRemoveAction, error)

func (*Replica) ReadAt

func (r *Replica) ReadAt(buf []byte, offset int64) (int, error)

func (*Replica) Reload

func (r *Replica) Reload() (*Replica, error)

func (*Replica) RemoveDiffDisk

func (r *Replica) RemoveDiffDisk(name string, force bool) error

func (*Replica) ReplaceDisk

func (r *Replica) ReplaceDisk(target, source string) error

func (*Replica) Revert

func (r *Replica) Revert(name, created string) (*Replica, error)

func (*Replica) SetRebuilding

func (r *Replica) SetRebuilding(rebuilding bool) error

func (*Replica) SetRevisionCounter

func (r *Replica) SetRevisionCounter(counter int64) error

func (*Replica) SetSnapshotMaxCount added in v1.6.0

func (r *Replica) SetSnapshotMaxCount(count int)

func (*Replica) SetSnapshotMaxSize added in v1.6.0

func (r *Replica) SetSnapshotMaxSize(size int64)

func (*Replica) SetUnmapMarkDiskChainRemoved added in v1.4.0

func (r *Replica) SetUnmapMarkDiskChainRemoved(enabled bool)

func (*Replica) Snapshot

func (r *Replica) Snapshot(name string, userCreated bool, created string, labels map[string]string) error

func (*Replica) UnmapAt added in v1.4.0

func (r *Replica) UnmapAt(length uint32, offset int64) (n int, err error)

func (*Replica) WriteAt

func (r *Replica) WriteAt(buf []byte, offset int64) (int, error)

type RestoreStatus

type RestoreStatus struct {
	sync.RWMutex

	Progress  int
	Error     string
	BackupURL string
	State     ProgressState

	// The file that (temporarily) stores the data during the restoring.
	ToFileName string
	// The snapshot file that stores the restored data in the end.
	SnapshotDiskName string

	LastRestored           string
	CurrentRestoringBackup string
	// contains filtered or unexported fields
}

func NewRestore

func NewRestore(snapshotName, replicaAddress, backupURL, currentRestoringBackup string) *RestoreStatus

func (*RestoreStatus) CloseVolumeDev added in v1.5.4

func (status *RestoreStatus) CloseVolumeDev(volDev *os.File) error

func (*RestoreStatus) DeepCopy added in v1.0.1

func (status *RestoreStatus) DeepCopy() *RestoreStatus

func (*RestoreStatus) FinishRestore

func (status *RestoreStatus) FinishRestore()

func (*RestoreStatus) GetStopChan added in v1.5.4

func (status *RestoreStatus) GetStopChan() chan struct{}

func (*RestoreStatus) OpenVolumeDev added in v1.5.4

func (status *RestoreStatus) OpenVolumeDev(volDevName string) (*os.File, string, error)

func (*RestoreStatus) Revert added in v1.1.0

func (status *RestoreStatus) Revert(previousStatus *RestoreStatus)

Revert is used for reverting the current restore status to the previous status. This function will be invoked when:

  1. The new restore is failed before the actual restore is performed.
  2. The existing files are not modified.
  3. The current status has been updated/initialized for the new restore.

If there is no modification applied on the existing replica disk files after the restore failure, it means the replica is still available. In order to make sure the replica work fine for the next restore and the status is not messed up, the revert is indispensable.

func (*RestoreStatus) StartNewRestore added in v1.1.0

func (status *RestoreStatus) StartNewRestore(backupURL, currentRestoringBackup, toFileName, snapshotDiskName string, validLastRestoredBackup bool)

func (*RestoreStatus) Stop added in v1.5.4

func (status *RestoreStatus) Stop()

func (*RestoreStatus) UpdateRestoreStatus

func (status *RestoreStatus) UpdateRestoreStatus(snapshot string, rp int, re error)

type Server

type Server struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

func NewServer

func NewServer(dir string, backing *backingfile.BackingFile, sectorSize int64, disableRevCounter, unmapMarkDiskChainRemoved bool, snapshotMaxCount int, snapshotMaxSize int64) *Server

func (*Server) Close

func (s *Server) Close() error

func (*Server) Create

func (s *Server) Create(size int64) error

func (*Server) Delete

func (s *Server) Delete() error

func (*Server) Expand

func (s *Server) Expand(size int64) error

func (*Server) MarkDiskAsRemoved

func (s *Server) MarkDiskAsRemoved(name string) error

func (*Server) Open

func (s *Server) Open() error

func (*Server) PingResponse

func (s *Server) PingResponse() error

func (*Server) PrepareRemoveDisk

func (s *Server) PrepareRemoveDisk(name string) ([]PrepareRemoveAction, error)

func (*Server) ReadAt

func (s *Server) ReadAt(buf []byte, offset int64) (int, error)

func (*Server) Reload

func (s *Server) Reload() error

func (*Server) RemoveDiffDisk

func (s *Server) RemoveDiffDisk(name string, force bool) error

func (*Server) ReplaceDisk

func (s *Server) ReplaceDisk(target, source string) error

func (*Server) Replica

func (s *Server) Replica() *Replica

func (*Server) Revert

func (s *Server) Revert(name, created string) error

func (*Server) SetRebuilding

func (s *Server) SetRebuilding(rebuilding bool) error

func (*Server) SetRevisionCounter

func (s *Server) SetRevisionCounter(counter int64) error

func (*Server) SetSnapshotMaxCount added in v1.6.0

func (s *Server) SetSnapshotMaxCount(count int)

func (*Server) SetSnapshotMaxSize added in v1.6.0

func (s *Server) SetSnapshotMaxSize(size int64)

func (*Server) SetUnmapMarkDiskChainRemoved added in v1.4.0

func (s *Server) SetUnmapMarkDiskChainRemoved(enabled bool)

func (*Server) Snapshot

func (s *Server) Snapshot(name string, userCreated bool, createdTime string, labels map[string]string) error

func (*Server) Status

func (s *Server) Status() (types.ReplicaState, Info)

func (*Server) UnmapAt added in v1.4.0

func (s *Server) UnmapAt(length uint32, off int64) (int, error)

func (*Server) WriteAt

func (s *Server) WriteAt(buf []byte, offset int64) (int, error)

type SnapshotHashJob added in v1.4.0

type SnapshotHashJob struct {
	sync.Mutex

	Ctx        context.Context
	CancelFunc context.CancelFunc

	SnapshotName string
	Rehash       bool

	SnapshotHashStatus
	// contains filtered or unexported fields
}

func NewSnapshotHashJob added in v1.4.0

func NewSnapshotHashJob(ctx context.Context, cancel context.CancelFunc, snapshotName string, rehash bool) *SnapshotHashJob

func (*SnapshotHashJob) Execute added in v1.4.0

func (t *SnapshotHashJob) Execute() (err error)

func (*SnapshotHashJob) LockFile added in v1.4.0

func (t *SnapshotHashJob) LockFile() (fileLock *flock.Flock, err error)

func (*SnapshotHashJob) UnlockFile added in v1.4.0

func (t *SnapshotHashJob) UnlockFile(fileLock *flock.Flock)

type SnapshotHashStatus added in v1.4.0

type SnapshotHashStatus struct {
	StatusLock sync.RWMutex

	State             ProgressState
	Checksum          string
	Error             string
	SilentlyCorrupted bool
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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