replica

package
v1.3.3 Latest Latest
Warning

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

Go to latest
Published: Apr 19, 2023 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ProgressStateInProgress = ProgressState("in_progress")
	ProgressStateComplete   = ProgressState("complete")
	ProgressStateError      = ProgressState("error")
)
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 MaxExtentsBuffer = 1024

Variables

This section is empty.

Functions

func GenerateDeltaFileName

func GenerateDeltaFileName(name string) string

func GenerateExpansionSnapshotLabels

func GenerateExpansionSnapshotLabels(size int64) map[string]string

func GenerateExpansionSnapshotName

func GenerateExpansionSnapshotName(size int64) string

func GenerateSnapTempFileName

func GenerateSnapTempFileName(fileName string) string

func GenerateSnapshotDiskMetaName

func GenerateSnapshotDiskMetaName(diskName string) string

func GenerateSnapshotDiskName

func GenerateSnapshotDiskName(name string) string

func GetSnapshotNameFromDiskName

func GetSnapshotNameFromDiskName(diskName string) (string, error)

func GetSnapshotNameFromTempFileName

func GetSnapshotNameFromTempFileName(tmpFileName string) (string, error)

func IsHeadDisk

func IsHeadDisk(diskName string) bool

func LoadDiffDiskLocationList added in v1.1.2

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

Types

type BackupStatus

type BackupStatus struct {
	SnapshotID    string
	Error         string
	Progress      int
	BackupURL     string
	State         ProgressState
	IsIncremental bool
	// contains filtered or unexported fields
}

func NewBackup

func NewBackup(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) (*backupstore.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, progress int, url string, errString string) error

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 bool) (*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) 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) Snapshot

func (r *Replica) Snapshot(name string, userCreated bool, created string, labels map[string]string) 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) DeepCopy added in v1.0.1

func (status *RestoreStatus) DeepCopy() *RestoreStatus

func (*RestoreStatus) FinishRestore

func (status *RestoreStatus) FinishRestore()

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) 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 bool) *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) 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) WriteAt

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

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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