spdk

package
v1.6.4 Latest Latest
Warning

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

Go to latest
Published: Dec 18, 2024 License: Apache-2.0 Imports: 36 Imported by: 2

Documentation

Index

Constants

View Source
const (
	SnapshotOperationCreate = SnapshotOperationType("snapshot-create")
	SnapshotOperationDelete = SnapshotOperationType("snapshot-delete")
	SnapshotOperationRevert = SnapshotOperationType("snapshot-revert")
)
View Source
const (
	DiskTypeFilesystem = "filesystem"
	DiskTypeBlock      = "block"

	ReplicaRebuildingLvolSuffix  = "rebuilding"
	RebuildingSnapshotNamePrefix = "rebuild"

	SyncTimeout = 60 * time.Minute
)
View Source
const (
	MonitorInterval = 3 * time.Second
)

Variables

This section is empty.

Functions

func GenerateRebuildingSnapshotName

func GenerateRebuildingSnapshotName() string

func GetBdevLvolMap

func GetBdevLvolMap(cli *spdkclient.Client) (map[string]*spdktypes.BdevInfo, error)

func GetBdevMap

func GetBdevMap(cli *spdkclient.Client) (map[string]*spdktypes.BdevInfo, error)

func GetNvmfEndpoint

func GetNvmfEndpoint(nqn, ip string, port int32) string

func GetNvmfSubsystemMap

func GetNvmfSubsystemMap(cli *spdkclient.Client) (map[string]*spdktypes.NvmfSubsystem, error)

func GetReplicaRebuildingLvolName

func GetReplicaRebuildingLvolName(replicaName string) string

func GetReplicaSnapshotLvolName

func GetReplicaSnapshotLvolName(replicaName, snapshotName string) string

func GetReplicaSnapshotLvolNamePrefix

func GetReplicaSnapshotLvolNamePrefix(replicaName string) string

func GetServiceClient

func GetServiceClient(address string) (*client.SPDKClient, error)

func GetSnapshotNameFromReplicaSnapshotLvolName

func GetSnapshotNameFromReplicaSnapshotLvolName(replicaName, snapLvolName string) string

func IsReplicaSnapshotLvol

func IsReplicaSnapshotLvol(replicaName, lvolName string) bool

func ServiceLvolToProtoLvol

func ServiceLvolToProtoLvol(replicaName string, lvol *Lvol) *spdkrpc.Lvol

func ServiceReplicaToProtoReplica

func ServiceReplicaToProtoReplica(r *Replica) *spdkrpc.Replica

Types

type Backup

type Backup struct {
	sync.Mutex

	Name         string
	VolumeName   string
	SnapshotName string

	IP            string
	Port          int32
	IsIncremental bool

	BackupURL string
	State     btypes.ProgressState
	Progress  int
	Error     string
	// contains filtered or unexported fields
}

func NewBackup

func NewBackup(spdkClient *spdkclient.Client, backupName, volumeName, snapshotName string, replica *Replica, superiorPortAllocator *util.Bitmap) (*Backup, error)

NewBackup creates a new backup instance

func (*Backup) BackupCreate

func (b *Backup) BackupCreate(config *backupstore.DeltaBackupConfig) error

BackupCreate creates the backup

func (*Backup) CloseSnapshot

func (b *Backup) CloseSnapshot(snapshotName, volumeName string) error

func (*Backup) CompareSnapshot

func (b *Backup) CompareSnapshot(snapshotName, compareSnapshotName, volumeName string) (*btypes.Mappings, error)

CompareSnapshot compares the data between two snapshots and returns the mappings

func (*Backup) HasSnapshot

func (b *Backup) HasSnapshot(snapshotName, volumeName string) bool

HasSnapshot checks if the snapshot exists

func (*Backup) OpenSnapshot

func (b *Backup) OpenSnapshot(snapshotName, volumeName string) error

OpenSnapshot opens the snapshot lvol for backup

func (*Backup) ReadSnapshot

func (b *Backup) ReadSnapshot(snapshotName, volumeName string, offset int64, data []byte) error

ReadSnapshot reads the data from the block device exposed by NVMe-oF TCP

func (*Backup) UpdateBackupStatus

func (b *Backup) UpdateBackupStatus(snapshotName, volumeName 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 BackupCreateInfo

type BackupCreateInfo struct {
	BackupName     string
	IsIncremental  bool
	ReplicaAddress string
}

type Engine

type Engine struct {
	sync.RWMutex

	Name               string
	VolumeName         string
	SpecSize           uint64
	ActualSize         uint64
	ReplicaAddressMap  map[string]string
	ReplicaBdevNameMap map[string]string
	ReplicaModeMap     map[string]types.Mode
	IP                 string
	Port               int32
	Frontend           string
	Endpoint           string

	State    types.InstanceState
	ErrorMsg string

	Head        *api.Lvol
	SnapshotMap map[string]*api.Lvol

	IsRestoring bool

	// UpdateCh should not be protected by the engine lock
	UpdateCh chan interface{}
	// contains filtered or unexported fields
}

func NewEngine

func NewEngine(engineName, volumeName, frontend string, specSize uint64, engineUpdateCh chan interface{}) *Engine

func (*Engine) BackupCreate

func (e *Engine) BackupCreate(backupName, volumeName, engineName, snapshotName, backingImageName, backingImageChecksum string,
	labels []string, backupTarget string, credential map[string]string, concurrentLimit int32, compressionMethod, storageClassName string, size uint64) (*BackupCreateInfo, error)

func (*Engine) BackupRestore

func (e *Engine) BackupRestore(spdkClient *spdkclient.Client, backupUrl, engineName, snapshotName string, credential map[string]string, concurrentLimit int32) (*spdkrpc.EngineBackupRestoreResponse, error)

func (*Engine) BackupRestoreFinish

func (e *Engine) BackupRestoreFinish(spdkClient *spdkclient.Client) error

func (*Engine) BackupStatus

func (e *Engine) BackupStatus(backupName, replicaAddress string) (*spdkrpc.BackupStatusResponse, error)

func (*Engine) CheckAndUpdateInfoFromReplica

func (e *Engine) CheckAndUpdateInfoFromReplica()

func (*Engine) Create

func (e *Engine) Create(spdkClient *spdkclient.Client, replicaAddressMap, localReplicaLvsNameMap map[string]string, portCount int32, superiorPortAllocator *util.Bitmap) (ret *spdkrpc.Engine, err error)

func (*Engine) Delete

func (e *Engine) Delete(spdkClient *spdkclient.Client, superiorPortAllocator *util.Bitmap) (err error)

func (*Engine) Get

func (e *Engine) Get() (res *spdkrpc.Engine)

func (*Engine) ReplicaAddFinish

func (e *Engine) ReplicaAddFinish(spdkClient *spdkclient.Client, replicaName, replicaAddress string, localReplicaLvsNameMap map[string]string) (err error)

func (*Engine) ReplicaAddStart

func (e *Engine) ReplicaAddStart(spdkClient *spdkclient.Client, replicaName, replicaAddress string) (err error)

func (*Engine) ReplicaDelete

func (e *Engine) ReplicaDelete(spdkClient *spdkclient.Client, replicaName, replicaAddress string) (err error)

func (*Engine) ReplicaList

func (e *Engine) ReplicaList(spdkClient *spdkclient.Client) (ret map[string]*api.Replica, err error)

func (*Engine) ReplicaShallowCopy

func (e *Engine) ReplicaShallowCopy(dstReplicaName, dstReplicaAddress string) (err error)

func (*Engine) RestoreStatus

func (e *Engine) RestoreStatus() (*spdkrpc.RestoreStatusResponse, error)

func (*Engine) SetErrorState

func (e *Engine) SetErrorState()

func (*Engine) SnapshotCreate

func (e *Engine) SnapshotCreate(spdkClient *spdkclient.Client, inputSnapshotName string, opts *api.SnapshotOptions) (snapshotName string, err error)

func (*Engine) SnapshotDelete

func (e *Engine) SnapshotDelete(spdkClient *spdkclient.Client, snapshotName string) (err error)

func (*Engine) SnapshotRevert

func (e *Engine) SnapshotRevert(spdkClient *spdkclient.Client, snapshotName string) (err error)

func (*Engine) ValidateAndUpdate

func (e *Engine) ValidateAndUpdate(spdkClient *spdkclient.Client) (err error)

type Fragmap

type Fragmap struct {
	Map         bitmap.Bitmap
	ClusterSize uint64
	NumClusters uint64
}

type Lvol

type Lvol struct {
	Name       string
	UUID       string
	Alias      string
	SpecSize   uint64
	ActualSize uint64
	Parent     string
	// Children is map[<snapshot lvol name>] rather than map[<snapshot name>]. <snapshot lvol name> consists of `<replica name>-snap-<snapshot name>`
	Children     map[string]*Lvol
	CreationTime string
	UserCreated  bool
}

func BdevLvolInfoToServiceLvol

func BdevLvolInfoToServiceLvol(bdev *spdktypes.BdevInfo) *Lvol

type Replica

type Replica struct {
	sync.RWMutex

	// ActiveChain stores the backing image info in index 0.
	// If a replica does not contain a backing image, the first entry will be nil.
	// The last entry of the chain is always the head lvol.
	ActiveChain []*Lvol
	ChainLength int
	// SnapshotLvolMap map[<snapshot lvol name>]. <snapshot lvol name> consists of `<replica name>-snap-<snapshot name>`
	SnapshotLvolMap map[string]*Lvol

	Name       string
	Alias      string
	LvsName    string
	LvsUUID    string
	SpecSize   uint64
	ActualSize uint64
	IP         string
	PortStart  int32
	PortEnd    int32

	State    types.InstanceState
	ErrorMsg string

	IsExposeRequired bool
	IsExposed        bool

	// UpdateCh should not be protected by the replica lock
	UpdateCh chan interface{}
	// contains filtered or unexported fields
}

func NewReplica

func NewReplica(ctx context.Context, replicaName, lvsName, lvsUUID string, specSize, actualSize uint64, updateCh chan interface{}) *Replica

func (*Replica) BackupRestore

func (r *Replica) BackupRestore(spdkClient *spdkclient.Client, backupUrl, snapshotName string, credential map[string]string, concurrentLimit int32) (err error)

func (*Replica) Create

func (r *Replica) Create(spdkClient *spdkclient.Client, exposeRequired bool, portCount int32, superiorPortAllocator *util.Bitmap) (ret *spdkrpc.Replica, err error)

func (*Replica) Delete

func (r *Replica) Delete(spdkClient *spdkclient.Client, cleanupRequired bool, superiorPortAllocator *util.Bitmap) (err error)

func (*Replica) Get

func (r *Replica) Get() (pReplica *spdkrpc.Replica)

func (*Replica) RebuildingDstFinish

func (r *Replica) RebuildingDstFinish(spdkClient *spdkclient.Client, unexposeRequired bool) (err error)

func (*Replica) RebuildingDstSnapshotCreate

func (r *Replica) RebuildingDstSnapshotCreate(spdkClient *spdkclient.Client, snapshotName string, opts *api.SnapshotOptions) (err error)

func (*Replica) RebuildingDstSnapshotRevert

func (r *Replica) RebuildingDstSnapshotRevert(spdkClient *spdkclient.Client, snapshotName string) (err error)

func (*Replica) RebuildingDstStart

func (r *Replica) RebuildingDstStart(spdkClient *spdkclient.Client, exposeRequired bool) (address string, err error)

func (*Replica) RebuildingSrcAttach

func (r *Replica) RebuildingSrcAttach(spdkClient *spdkclient.Client, dstReplicaName, dstRebuildingLvolAddress string) (err error)

func (*Replica) RebuildingSrcDetach

func (r *Replica) RebuildingSrcDetach(spdkClient *spdkclient.Client, dstReplicaName string) (err error)

func (*Replica) RebuildingSrcFinish

func (r *Replica) RebuildingSrcFinish(spdkClient *spdkclient.Client, dstReplicaName string) (err error)

func (*Replica) RebuildingSrcStart

func (r *Replica) RebuildingSrcStart(spdkClient *spdkclient.Client, localReplicaLvsNameMap map[string]string, dstReplicaName, dstRebuildingLvolAddress string) (err error)

func (*Replica) SetErrorState

func (r *Replica) SetErrorState()

func (*Replica) SnapshotCreate

func (r *Replica) SnapshotCreate(spdkClient *spdkclient.Client, snapshotName string, opts *api.SnapshotOptions) (pReplica *spdkrpc.Replica, err error)

func (*Replica) SnapshotDelete

func (r *Replica) SnapshotDelete(spdkClient *spdkclient.Client, snapshotName string) (pReplica *spdkrpc.Replica, err error)

func (*Replica) SnapshotRevert

func (r *Replica) SnapshotRevert(spdkClient *spdkclient.Client, snapshotName string) (pReplica *spdkrpc.Replica, err error)

func (*Replica) SnapshotShallowCopy

func (r *Replica) SnapshotShallowCopy(spdkClient *spdkclient.Client, snapshotName string) (err error)

func (*Replica) Sync

func (r *Replica) Sync(spdkClient *spdkclient.Client) (err error)

type Restore

type Restore struct {
	sync.RWMutex

	Progress  int
	Error     string
	BackupURL string
	State     btypes.ProgressState

	// The snapshot file that stores the restored data in the end.
	LvolName     string
	SnapshotName string

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

func NewRestore

func NewRestore(spdkClient *spdkclient.Client, lvolName, snapshotName, backupUrl, backupName string, replica *Replica) (*Restore, error)

func (*Restore) CloseVolumeDev

func (r *Restore) CloseVolumeDev(volDev *os.File) error

func (*Restore) DeepCopy

func (r *Restore) DeepCopy() *Restore

func (*Restore) FinishRestore

func (r *Restore) FinishRestore()

func (*Restore) GetStopChan

func (r *Restore) GetStopChan() chan struct{}

func (*Restore) OpenVolumeDev

func (r *Restore) OpenVolumeDev(volDevName string) (*os.File, string, error)

func (*Restore) StartNewRestore

func (r *Restore) StartNewRestore(backupUrl, currentRestoringBackup, lvolName, snapshotName string, validLastRestoredBackup bool)

func (*Restore) Stop

func (r *Restore) Stop()

func (*Restore) UpdateRestoreStatus

func (r *Restore) UpdateRestoreStatus(snapshotLvolName string, progress int, err error)

type Server

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

func NewServer

func NewServer(ctx context.Context, portStart, portEnd int32) (*Server, error)

func (*Server) DiskCreate

func (s *Server) DiskCreate(ctx context.Context, req *spdkrpc.DiskCreateRequest) (ret *spdkrpc.Disk, err error)

func (*Server) DiskDelete

func (s *Server) DiskDelete(ctx context.Context, req *spdkrpc.DiskDeleteRequest) (ret *emptypb.Empty, err error)

func (*Server) DiskGet

func (s *Server) DiskGet(ctx context.Context, req *spdkrpc.DiskGetRequest) (ret *spdkrpc.Disk, err error)

func (*Server) EngineBackupCreate

func (s *Server) EngineBackupCreate(ctx context.Context, req *spdkrpc.BackupCreateRequest) (ret *spdkrpc.BackupCreateResponse, err error)

func (*Server) EngineBackupRestore

func (s *Server) EngineBackupRestore(ctx context.Context, req *spdkrpc.EngineBackupRestoreRequest) (ret *spdkrpc.EngineBackupRestoreResponse, err error)

func (*Server) EngineBackupRestoreFinish

func (s *Server) EngineBackupRestoreFinish(ctx context.Context, req *spdkrpc.EngineBackupRestoreFinishRequest) (ret *emptypb.Empty, err error)

func (*Server) EngineBackupStatus

func (s *Server) EngineBackupStatus(ctx context.Context, req *spdkrpc.BackupStatusRequest) (*spdkrpc.BackupStatusResponse, error)

func (*Server) EngineCreate

func (s *Server) EngineCreate(ctx context.Context, req *spdkrpc.EngineCreateRequest) (ret *spdkrpc.Engine, err error)

func (*Server) EngineDelete

func (s *Server) EngineDelete(ctx context.Context, req *spdkrpc.EngineDeleteRequest) (ret *emptypb.Empty, err error)

func (*Server) EngineGet

func (s *Server) EngineGet(ctx context.Context, req *spdkrpc.EngineGetRequest) (ret *spdkrpc.Engine, err error)

func (*Server) EngineList

func (s *Server) EngineList(ctx context.Context, req *emptypb.Empty) (*spdkrpc.EngineListResponse, error)

func (*Server) EngineReplicaAdd

func (s *Server) EngineReplicaAdd(ctx context.Context, req *spdkrpc.EngineReplicaAddRequest) (ret *emptypb.Empty, err error)

func (*Server) EngineReplicaDelete

func (s *Server) EngineReplicaDelete(ctx context.Context, req *spdkrpc.EngineReplicaDeleteRequest) (ret *emptypb.Empty, err error)

func (*Server) EngineReplicaList

func (s *Server) EngineReplicaList(ctx context.Context, req *spdkrpc.EngineReplicaListRequest) (ret *spdkrpc.EngineReplicaListResponse, err error)

func (*Server) EngineRestoreStatus

func (s *Server) EngineRestoreStatus(ctx context.Context, req *spdkrpc.RestoreStatusRequest) (*spdkrpc.RestoreStatusResponse, error)

func (*Server) EngineSnapshotCreate

func (s *Server) EngineSnapshotCreate(ctx context.Context, req *spdkrpc.SnapshotRequest) (ret *spdkrpc.SnapshotResponse, err error)

func (*Server) EngineSnapshotDelete

func (s *Server) EngineSnapshotDelete(ctx context.Context, req *spdkrpc.SnapshotRequest) (ret *emptypb.Empty, err error)

func (*Server) EngineSnapshotRevert

func (s *Server) EngineSnapshotRevert(ctx context.Context, req *spdkrpc.SnapshotRequest) (ret *emptypb.Empty, err error)

func (*Server) EngineWatch

func (s *Server) EngineWatch(req *emptypb.Empty, srv spdkrpc.SPDKService_EngineWatchServer) error

func (*Server) LogGetFlags

func (s *Server) LogGetFlags(ctx context.Context, req *emptypb.Empty) (ret *spdkrpc.LogGetFlagsResponse, err error)

func (*Server) LogGetLevel

func (s *Server) LogGetLevel(ctx context.Context, req *emptypb.Empty) (ret *spdkrpc.LogGetLevelResponse, err error)

func (*Server) LogSetFlags

func (s *Server) LogSetFlags(ctx context.Context, req *spdkrpc.LogSetFlagsRequest) (ret *emptypb.Empty, err error)

func (*Server) LogSetLevel

func (s *Server) LogSetLevel(ctx context.Context, req *spdkrpc.LogSetLevelRequest) (ret *emptypb.Empty, err error)

func (*Server) ReplicaBackupCreate

func (s *Server) ReplicaBackupCreate(ctx context.Context, req *spdkrpc.BackupCreateRequest) (ret *spdkrpc.BackupCreateResponse, err error)

func (*Server) ReplicaBackupRestore

func (s *Server) ReplicaBackupRestore(ctx context.Context, req *spdkrpc.ReplicaBackupRestoreRequest) (ret *emptypb.Empty, err error)

func (*Server) ReplicaBackupStatus

func (s *Server) ReplicaBackupStatus(ctx context.Context, req *spdkrpc.BackupStatusRequest) (ret *spdkrpc.BackupStatusResponse, err error)

func (*Server) ReplicaCreate

func (s *Server) ReplicaCreate(ctx context.Context, req *spdkrpc.ReplicaCreateRequest) (ret *spdkrpc.Replica, err error)

func (*Server) ReplicaDelete

func (s *Server) ReplicaDelete(ctx context.Context, req *spdkrpc.ReplicaDeleteRequest) (ret *emptypb.Empty, err error)

func (*Server) ReplicaGet

func (s *Server) ReplicaGet(ctx context.Context, req *spdkrpc.ReplicaGetRequest) (ret *spdkrpc.Replica, err error)

func (*Server) ReplicaList

func (s *Server) ReplicaList(ctx context.Context, req *emptypb.Empty) (*spdkrpc.ReplicaListResponse, error)

func (*Server) ReplicaRebuildingDstFinish

func (s *Server) ReplicaRebuildingDstFinish(ctx context.Context, req *spdkrpc.ReplicaRebuildingDstFinishRequest) (ret *emptypb.Empty, err error)

func (*Server) ReplicaRebuildingDstSnapshotCreate

func (s *Server) ReplicaRebuildingDstSnapshotCreate(ctx context.Context, req *spdkrpc.SnapshotRequest) (ret *emptypb.Empty, err error)

func (*Server) ReplicaRebuildingDstSnapshotRevert

func (s *Server) ReplicaRebuildingDstSnapshotRevert(ctx context.Context, req *spdkrpc.SnapshotRequest) (ret *emptypb.Empty, err error)

func (*Server) ReplicaRebuildingSrcAttach

func (s *Server) ReplicaRebuildingSrcAttach(ctx context.Context, req *spdkrpc.ReplicaRebuildingSrcAttachRequest) (ret *emptypb.Empty, err error)

func (*Server) ReplicaRebuildingSrcDetach

func (s *Server) ReplicaRebuildingSrcDetach(ctx context.Context, req *spdkrpc.ReplicaRebuildingSrcDetachRequest) (ret *emptypb.Empty, err error)

func (*Server) ReplicaRebuildingSrcFinish

func (s *Server) ReplicaRebuildingSrcFinish(ctx context.Context, req *spdkrpc.ReplicaRebuildingSrcFinishRequest) (ret *emptypb.Empty, err error)

func (*Server) ReplicaRebuildingSrcStart

func (s *Server) ReplicaRebuildingSrcStart(ctx context.Context, req *spdkrpc.ReplicaRebuildingSrcStartRequest) (ret *emptypb.Empty, err error)

func (*Server) ReplicaRestoreStatus

func (s *Server) ReplicaRestoreStatus(ctx context.Context, req *spdkrpc.ReplicaRestoreStatusRequest) (ret *spdkrpc.ReplicaRestoreStatusResponse, err error)

func (*Server) ReplicaSnapshotCreate

func (s *Server) ReplicaSnapshotCreate(ctx context.Context, req *spdkrpc.SnapshotRequest) (ret *spdkrpc.Replica, err error)

func (*Server) ReplicaSnapshotDelete

func (s *Server) ReplicaSnapshotDelete(ctx context.Context, req *spdkrpc.SnapshotRequest) (ret *emptypb.Empty, err error)

func (*Server) ReplicaSnapshotRevert

func (s *Server) ReplicaSnapshotRevert(ctx context.Context, req *spdkrpc.SnapshotRequest) (ret *emptypb.Empty, err error)

func (*Server) ReplicaSnapshotShallowCopy

func (s *Server) ReplicaSnapshotShallowCopy(ctx context.Context, req *spdkrpc.ReplicaSnapshotShallowCopyRequest) (ret *emptypb.Empty, err error)

func (*Server) ReplicaWatch

func (s *Server) ReplicaWatch(req *emptypb.Empty, srv spdkrpc.SPDKService_ReplicaWatchServer) error

func (*Server) Subscribe

func (s *Server) Subscribe(instanceType types.InstanceType) (<-chan interface{}, error)

func (*Server) VersionDetailGet

type SnapshotOperationType

type SnapshotOperationType string

Jump to

Keyboard shortcuts

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