migration

package
v0.0.0-...-288c4de Latest Latest
Warning

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

Go to latest
Published: Jul 5, 2023 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const BTRFSFeatureMigrationHeader = "migration_header"

BTRFSFeatureMigrationHeader indicates a migration header will be sent/recv in data channel after index header.

View Source
const BTRFSFeatureSubvolumeUUIDs = "header_subvolume_uuids"

BTRFSFeatureSubvolumeUUIDs indicates that the header will include subvolume UUIDs.

View Source
const BTRFSFeatureSubvolumes = "header_subvolumes"

BTRFSFeatureSubvolumes indicates migration can send/recv subvolumes.

View Source
const IndexHeaderVersion uint32 = 1

IndexHeaderVersion version of the index header to be sent/recv.

View Source
const ZFSFeatureMigrationHeader = "migration_header"

ZFSFeatureMigrationHeader indicates a migration header will be sent/recv in data channel after index header.

View Source
const ZFSFeatureZvolFilesystems = "header_zvol_filesystems"

ZFSFeatureZvolFilesystems indicates migration can send/recv zvols.

Variables

View Source
var (
	MigrationFSType_name = map[int32]string{
		0: "RSYNC",
		1: "BTRFS",
		2: "ZFS",
		3: "RBD",
		4: "BLOCK_AND_RSYNC",
	}
	MigrationFSType_value = map[string]int32{
		"RSYNC":           0,
		"BTRFS":           1,
		"ZFS":             2,
		"RBD":             3,
		"BLOCK_AND_RSYNC": 4,
	}
)

Enum value maps for MigrationFSType.

View Source
var (
	CRIUType_name = map[int32]string{
		0: "CRIU_RSYNC",
		1: "PHAUL",
		2: "NONE",
		3: "VM_QEMU",
	}
	CRIUType_value = map[string]int32{
		"CRIU_RSYNC": 0,
		"PHAUL":      1,
		"NONE":       2,
		"VM_QEMU":    3,
	}
)

Enum value maps for CRIUType.

View Source
var (
	ErrNoLiveMigrationSource = fmt.Errorf("%s CRIU isn't installed on the source server. %s on the source server", unableToLiveMigrate, toMigrateLive)
	ErrNoLiveMigrationTarget = fmt.Errorf("%s CRIU isn't installed on the target server. %s on the target server", unableToLiveMigrate, toMigrateLive)
	ErrNoLiveMigration       = fmt.Errorf("%s CRIU isn't installed. %s", unableToLiveMigrate, toMigrateLive)
)
View Source
var File_lxd_migration_migrate_proto protoreflect.FileDescriptor

Functions

func ProgressReader

func ProgressReader(op *operations.Operation, key string, description string) func(io.ReadCloser) io.ReadCloser

ProgressReader reports the read progress.

func ProgressTracker

func ProgressTracker(op *operations.Operation, key string, description string) *ioprogress.ProgressTracker

ProgressTracker returns a migration I/O tracker.

func ProgressWriter

func ProgressWriter(op *operations.Operation, key string, description string) func(io.WriteCloser) io.WriteCloser

ProgressWriter reports the write progress.

func ProtoRecv

func ProtoRecv(ws *websocket.Conn, msg proto.Message) error

ProtoRecv gets a protobuf message from a websocket.

func ProtoSend

func ProtoSend(ws *websocket.Conn, msg proto.Message) error

ProtoSend sends a protobuf message over a websocket.

func ProtoSendControl

func ProtoSendControl(ws *websocket.Conn, err error)

ProtoSendControl sends a migration control message over a websocket.

Types

type BtrfsFeatures

type BtrfsFeatures struct {
	MigrationHeader      *bool `protobuf:"varint,1,opt,name=migration_header,json=migrationHeader" json:"migration_header,omitempty"`
	HeaderSubvolumes     *bool `protobuf:"varint,2,opt,name=header_subvolumes,json=headerSubvolumes" json:"header_subvolumes,omitempty"`
	HeaderSubvolumeUuids *bool `protobuf:"varint,3,opt,name=header_subvolume_uuids,json=headerSubvolumeUuids" json:"header_subvolume_uuids,omitempty"`
	// contains filtered or unexported fields
}

func (*BtrfsFeatures) Descriptor deprecated

func (*BtrfsFeatures) Descriptor() ([]byte, []int)

Deprecated: Use BtrfsFeatures.ProtoReflect.Descriptor instead.

func (*BtrfsFeatures) GetHeaderSubvolumeUuids

func (x *BtrfsFeatures) GetHeaderSubvolumeUuids() bool

func (*BtrfsFeatures) GetHeaderSubvolumes

func (x *BtrfsFeatures) GetHeaderSubvolumes() bool

func (*BtrfsFeatures) GetMigrationHeader

func (x *BtrfsFeatures) GetMigrationHeader() bool

func (*BtrfsFeatures) ProtoMessage

func (*BtrfsFeatures) ProtoMessage()

func (*BtrfsFeatures) ProtoReflect

func (x *BtrfsFeatures) ProtoReflect() protoreflect.Message

func (*BtrfsFeatures) Reset

func (x *BtrfsFeatures) Reset()

func (*BtrfsFeatures) String

func (x *BtrfsFeatures) String() string

type CRIUType

type CRIUType int32
const (
	CRIUType_CRIU_RSYNC CRIUType = 0
	CRIUType_PHAUL      CRIUType = 1
	CRIUType_NONE       CRIUType = 2
	CRIUType_VM_QEMU    CRIUType = 3
)

func (CRIUType) Descriptor

func (CRIUType) Descriptor() protoreflect.EnumDescriptor

func (CRIUType) Enum

func (x CRIUType) Enum() *CRIUType

func (CRIUType) EnumDescriptor deprecated

func (CRIUType) EnumDescriptor() ([]byte, []int)

Deprecated: Use CRIUType.Descriptor instead.

func (CRIUType) Number

func (x CRIUType) Number() protoreflect.EnumNumber

func (CRIUType) String

func (x CRIUType) String() string

func (CRIUType) Type

func (*CRIUType) UnmarshalJSON deprecated

func (x *CRIUType) UnmarshalJSON(b []byte) error

Deprecated: Do not use.

type Config

type Config struct {
	Key   *string `protobuf:"bytes,1,req,name=key" json:"key,omitempty"`
	Value *string `protobuf:"bytes,2,req,name=value" json:"value,omitempty"`
	// contains filtered or unexported fields
}

func (*Config) Descriptor deprecated

func (*Config) Descriptor() ([]byte, []int)

Deprecated: Use Config.ProtoReflect.Descriptor instead.

func (*Config) GetKey

func (x *Config) GetKey() string

func (*Config) GetValue

func (x *Config) GetValue() string

func (*Config) ProtoMessage

func (*Config) ProtoMessage()

func (*Config) ProtoReflect

func (x *Config) ProtoReflect() protoreflect.Message

func (*Config) Reset

func (x *Config) Reset()

func (*Config) String

func (x *Config) String() string

type ControlResponse

type ControlResponse struct {
	MigrationControl
	Err error
}

ControlResponse encapsulates MigrationControl with a receive error.

type Device

type Device struct {
	Name   *string   `protobuf:"bytes,1,req,name=name" json:"name,omitempty"`
	Config []*Config `protobuf:"bytes,2,rep,name=config" json:"config,omitempty"`
	// contains filtered or unexported fields
}

func (*Device) Descriptor deprecated

func (*Device) Descriptor() ([]byte, []int)

Deprecated: Use Device.ProtoReflect.Descriptor instead.

func (*Device) GetConfig

func (x *Device) GetConfig() []*Config

func (*Device) GetName

func (x *Device) GetName() string

func (*Device) ProtoMessage

func (*Device) ProtoMessage()

func (*Device) ProtoReflect

func (x *Device) ProtoReflect() protoreflect.Message

func (*Device) Reset

func (x *Device) Reset()

func (*Device) String

func (x *Device) String() string

type IDMapType

type IDMapType struct {
	Isuid    *bool  `protobuf:"varint,1,req,name=isuid" json:"isuid,omitempty"`
	Isgid    *bool  `protobuf:"varint,2,req,name=isgid" json:"isgid,omitempty"`
	Hostid   *int32 `protobuf:"varint,3,req,name=hostid" json:"hostid,omitempty"`
	Nsid     *int32 `protobuf:"varint,4,req,name=nsid" json:"nsid,omitempty"`
	Maprange *int32 `protobuf:"varint,5,req,name=maprange" json:"maprange,omitempty"`
	// contains filtered or unexported fields
}

func (*IDMapType) Descriptor deprecated

func (*IDMapType) Descriptor() ([]byte, []int)

Deprecated: Use IDMapType.ProtoReflect.Descriptor instead.

func (*IDMapType) GetHostid

func (x *IDMapType) GetHostid() int32

func (*IDMapType) GetIsgid

func (x *IDMapType) GetIsgid() bool

func (*IDMapType) GetIsuid

func (x *IDMapType) GetIsuid() bool

func (*IDMapType) GetMaprange

func (x *IDMapType) GetMaprange() int32

func (*IDMapType) GetNsid

func (x *IDMapType) GetNsid() int32

func (*IDMapType) ProtoMessage

func (*IDMapType) ProtoMessage()

func (*IDMapType) ProtoReflect

func (x *IDMapType) ProtoReflect() protoreflect.Message

func (*IDMapType) Reset

func (x *IDMapType) Reset()

func (*IDMapType) String

func (x *IDMapType) String() string

type Info

type Info struct {
	Config *backupConfig.Config `json:"config,omitempty" yaml:"config,omitempty"` // Equivalent of backup.yaml but embedded in index.
}

Info represents the index frame sent if supported.

type InfoResponse

type InfoResponse struct {
	StatusCode int
	Error      string
	Refresh    *bool // This is used to let the source know whether to actually refresh a volume.
}

InfoResponse represents the response to the index frame sent if supported. Right now this doesn't contain anything useful, its just used to indicate receipt of the index header. But in the future the itention is to use it allow the target to send back additional information to the source about which frames (such as snapshots) it needs for the migration after having inspected the Info index header.

func (*InfoResponse) Err

func (r *InfoResponse) Err() error

Err returns the error of the response.

type MigrationControl

type MigrationControl struct {
	Success *bool `protobuf:"varint,1,req,name=success" json:"success,omitempty"`
	// optional failure message if sending a failure
	Message *string `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"`
	// contains filtered or unexported fields
}

func (*MigrationControl) Descriptor deprecated

func (*MigrationControl) Descriptor() ([]byte, []int)

Deprecated: Use MigrationControl.ProtoReflect.Descriptor instead.

func (*MigrationControl) GetMessage

func (x *MigrationControl) GetMessage() string

func (*MigrationControl) GetSuccess

func (x *MigrationControl) GetSuccess() bool

func (*MigrationControl) ProtoMessage

func (*MigrationControl) ProtoMessage()

func (*MigrationControl) ProtoReflect

func (x *MigrationControl) ProtoReflect() protoreflect.Message

func (*MigrationControl) Reset

func (x *MigrationControl) Reset()

func (*MigrationControl) String

func (x *MigrationControl) String() string

type MigrationFSType

type MigrationFSType int32
const (
	MigrationFSType_RSYNC           MigrationFSType = 0
	MigrationFSType_BTRFS           MigrationFSType = 1
	MigrationFSType_ZFS             MigrationFSType = 2
	MigrationFSType_RBD             MigrationFSType = 3
	MigrationFSType_BLOCK_AND_RSYNC MigrationFSType = 4
)

func (MigrationFSType) Descriptor

func (MigrationFSType) Enum

func (x MigrationFSType) Enum() *MigrationFSType

func (MigrationFSType) EnumDescriptor deprecated

func (MigrationFSType) EnumDescriptor() ([]byte, []int)

Deprecated: Use MigrationFSType.Descriptor instead.

func (MigrationFSType) Number

func (MigrationFSType) String

func (x MigrationFSType) String() string

func (MigrationFSType) Type

func (*MigrationFSType) UnmarshalJSON deprecated

func (x *MigrationFSType) UnmarshalJSON(b []byte) error

Deprecated: Do not use.

type MigrationHeader

type MigrationHeader struct {
	Fs                 *MigrationFSType `protobuf:"varint,1,req,name=fs,enum=migration.MigrationFSType" json:"fs,omitempty"`
	Criu               *CRIUType        `protobuf:"varint,2,opt,name=criu,enum=migration.CRIUType" json:"criu,omitempty"`
	Idmap              []*IDMapType     `protobuf:"bytes,3,rep,name=idmap" json:"idmap,omitempty"`
	SnapshotNames      []string         `protobuf:"bytes,4,rep,name=snapshotNames" json:"snapshotNames,omitempty"`
	Snapshots          []*Snapshot      `protobuf:"bytes,5,rep,name=snapshots" json:"snapshots,omitempty"`
	Predump            *bool            `protobuf:"varint,7,opt,name=predump" json:"predump,omitempty"`
	RsyncFeatures      *RsyncFeatures   `protobuf:"bytes,8,opt,name=rsyncFeatures" json:"rsyncFeatures,omitempty"`
	Refresh            *bool            `protobuf:"varint,9,opt,name=refresh" json:"refresh,omitempty"`
	ZfsFeatures        *ZfsFeatures     `protobuf:"bytes,10,opt,name=zfsFeatures" json:"zfsFeatures,omitempty"`
	VolumeSize         *int64           `protobuf:"varint,11,opt,name=volumeSize" json:"volumeSize,omitempty"`
	BtrfsFeatures      *BtrfsFeatures   `protobuf:"bytes,12,opt,name=btrfsFeatures" json:"btrfsFeatures,omitempty"`
	IndexHeaderVersion *uint32          `protobuf:"varint,13,opt,name=indexHeaderVersion" json:"indexHeaderVersion,omitempty"`
	// contains filtered or unexported fields
}

func TypesToHeader

func TypesToHeader(types ...Type) *MigrationHeader

TypesToHeader converts one or more Types to a MigrationHeader. It uses the first type argument supplied to indicate the preferred migration method and sets the MigrationHeader's Fs type to that. If the preferred type is ZFS then it will also set the header's optional ZfsFeatures. If the fallback Rsync type is present in any of the types even if it is not preferred, then its optional features are added to the header's RsyncFeatures, allowing for fallback negotiation to take place on the farside.

func (*MigrationHeader) Descriptor deprecated

func (*MigrationHeader) Descriptor() ([]byte, []int)

Deprecated: Use MigrationHeader.ProtoReflect.Descriptor instead.

func (*MigrationHeader) GetBtrfsFeatures

func (x *MigrationHeader) GetBtrfsFeatures() *BtrfsFeatures

func (*MigrationHeader) GetBtrfsFeaturesSlice

func (m *MigrationHeader) GetBtrfsFeaturesSlice() []string

GetBtrfsFeaturesSlice returns a slice of strings representing the supported BTRFS features.

func (*MigrationHeader) GetCriu

func (x *MigrationHeader) GetCriu() CRIUType

func (*MigrationHeader) GetFs

func (x *MigrationHeader) GetFs() MigrationFSType

func (*MigrationHeader) GetIdmap

func (x *MigrationHeader) GetIdmap() []*IDMapType

func (*MigrationHeader) GetIndexHeaderVersion

func (x *MigrationHeader) GetIndexHeaderVersion() uint32

func (*MigrationHeader) GetPredump

func (x *MigrationHeader) GetPredump() bool

func (*MigrationHeader) GetRefresh

func (x *MigrationHeader) GetRefresh() bool

func (*MigrationHeader) GetRsyncFeatures

func (x *MigrationHeader) GetRsyncFeatures() *RsyncFeatures

func (*MigrationHeader) GetRsyncFeaturesSlice

func (m *MigrationHeader) GetRsyncFeaturesSlice() []string

GetRsyncFeaturesSlice returns a slice of strings representing the supported RSYNC features.

func (*MigrationHeader) GetSnapshotNames

func (x *MigrationHeader) GetSnapshotNames() []string

func (*MigrationHeader) GetSnapshots

func (x *MigrationHeader) GetSnapshots() []*Snapshot

func (*MigrationHeader) GetVolumeSize

func (x *MigrationHeader) GetVolumeSize() int64

func (*MigrationHeader) GetZfsFeatures

func (x *MigrationHeader) GetZfsFeatures() *ZfsFeatures

func (*MigrationHeader) GetZfsFeaturesSlice

func (m *MigrationHeader) GetZfsFeaturesSlice() []string

GetZfsFeaturesSlice returns a slice of strings representing the supported ZFS features.

func (*MigrationHeader) ProtoMessage

func (*MigrationHeader) ProtoMessage()

func (*MigrationHeader) ProtoReflect

func (x *MigrationHeader) ProtoReflect() protoreflect.Message

func (*MigrationHeader) Reset

func (x *MigrationHeader) Reset()

func (*MigrationHeader) String

func (x *MigrationHeader) String() string

type MigrationSync

type MigrationSync struct {
	FinalPreDump *bool `protobuf:"varint,1,req,name=finalPreDump" json:"finalPreDump,omitempty"`
	// contains filtered or unexported fields
}

func (*MigrationSync) Descriptor deprecated

func (*MigrationSync) Descriptor() ([]byte, []int)

Deprecated: Use MigrationSync.ProtoReflect.Descriptor instead.

func (*MigrationSync) GetFinalPreDump

func (x *MigrationSync) GetFinalPreDump() bool

func (*MigrationSync) ProtoMessage

func (*MigrationSync) ProtoMessage()

func (*MigrationSync) ProtoReflect

func (x *MigrationSync) ProtoReflect() protoreflect.Message

func (*MigrationSync) Reset

func (x *MigrationSync) Reset()

func (*MigrationSync) String

func (x *MigrationSync) String() string

type RsyncFeatures

type RsyncFeatures struct {
	Xattrs        *bool `protobuf:"varint,1,opt,name=xattrs" json:"xattrs,omitempty"`
	Delete        *bool `protobuf:"varint,2,opt,name=delete" json:"delete,omitempty"`
	Compress      *bool `protobuf:"varint,3,opt,name=compress" json:"compress,omitempty"`
	Bidirectional *bool `protobuf:"varint,4,opt,name=bidirectional" json:"bidirectional,omitempty"`
	// contains filtered or unexported fields
}

func (*RsyncFeatures) Descriptor deprecated

func (*RsyncFeatures) Descriptor() ([]byte, []int)

Deprecated: Use RsyncFeatures.ProtoReflect.Descriptor instead.

func (*RsyncFeatures) GetBidirectional

func (x *RsyncFeatures) GetBidirectional() bool

func (*RsyncFeatures) GetCompress

func (x *RsyncFeatures) GetCompress() bool

func (*RsyncFeatures) GetDelete

func (x *RsyncFeatures) GetDelete() bool

func (*RsyncFeatures) GetXattrs

func (x *RsyncFeatures) GetXattrs() bool

func (*RsyncFeatures) ProtoMessage

func (*RsyncFeatures) ProtoMessage()

func (*RsyncFeatures) ProtoReflect

func (x *RsyncFeatures) ProtoReflect() protoreflect.Message

func (*RsyncFeatures) Reset

func (x *RsyncFeatures) Reset()

func (*RsyncFeatures) String

func (x *RsyncFeatures) String() string

type Snapshot

type Snapshot struct {
	Name         *string   `protobuf:"bytes,1,req,name=name" json:"name,omitempty"`
	LocalConfig  []*Config `protobuf:"bytes,2,rep,name=localConfig" json:"localConfig,omitempty"`
	Profiles     []string  `protobuf:"bytes,3,rep,name=profiles" json:"profiles,omitempty"`
	Ephemeral    *bool     `protobuf:"varint,4,req,name=ephemeral" json:"ephemeral,omitempty"`
	LocalDevices []*Device `protobuf:"bytes,5,rep,name=localDevices" json:"localDevices,omitempty"`
	Architecture *int32    `protobuf:"varint,6,req,name=architecture" json:"architecture,omitempty"`
	Stateful     *bool     `protobuf:"varint,7,req,name=stateful" json:"stateful,omitempty"`
	CreationDate *int64    `protobuf:"varint,8,opt,name=creation_date,json=creationDate" json:"creation_date,omitempty"`
	LastUsedDate *int64    `protobuf:"varint,9,opt,name=last_used_date,json=lastUsedDate" json:"last_used_date,omitempty"`
	ExpiryDate   *int64    `protobuf:"varint,10,opt,name=expiry_date,json=expiryDate" json:"expiry_date,omitempty"`
	// contains filtered or unexported fields
}

func (*Snapshot) Descriptor deprecated

func (*Snapshot) Descriptor() ([]byte, []int)

Deprecated: Use Snapshot.ProtoReflect.Descriptor instead.

func (*Snapshot) GetArchitecture

func (x *Snapshot) GetArchitecture() int32

func (*Snapshot) GetCreationDate

func (x *Snapshot) GetCreationDate() int64

func (*Snapshot) GetEphemeral

func (x *Snapshot) GetEphemeral() bool

func (*Snapshot) GetExpiryDate

func (x *Snapshot) GetExpiryDate() int64

func (*Snapshot) GetLastUsedDate

func (x *Snapshot) GetLastUsedDate() int64

func (*Snapshot) GetLocalConfig

func (x *Snapshot) GetLocalConfig() []*Config

func (*Snapshot) GetLocalDevices

func (x *Snapshot) GetLocalDevices() []*Device

func (*Snapshot) GetName

func (x *Snapshot) GetName() string

func (*Snapshot) GetProfiles

func (x *Snapshot) GetProfiles() []string

func (*Snapshot) GetStateful

func (x *Snapshot) GetStateful() bool

func (*Snapshot) ProtoMessage

func (*Snapshot) ProtoMessage()

func (*Snapshot) ProtoReflect

func (x *Snapshot) ProtoReflect() protoreflect.Message

func (*Snapshot) Reset

func (x *Snapshot) Reset()

func (*Snapshot) String

func (x *Snapshot) String() string

type Type

type Type struct {
	FSType   MigrationFSType // Transport mode selected.
	Features []string        // Feature hints for selected FSType transport mode.
}

Type represents the migration transport type. It indicates the method by which the migration can take place and what optional features are available.

func MatchTypes

func MatchTypes(offer *MigrationHeader, fallbackType MigrationFSType, ourTypes []Type) ([]Type, error)

MatchTypes attempts to find matching migration transport types between an offered type sent from a remote source and the types supported by a local storage pool. If matches are found then one or more Types are returned containing the method and the matching optional features present in both. The function also takes a fallback type which is used as an additional offer type preference in case the preferred remote type is not compatible with the local type available. It is expected that both sides of the migration will support the fallback type for the volume's content type that is being migrated.

type VolumeSourceArgs

type VolumeSourceArgs struct {
	IndexHeaderVersion uint32
	Name               string
	Snapshots          []string
	MigrationType      Type
	TrackProgress      bool
	MultiSync          bool
	FinalSync          bool
	Data               any // Optional store to persist storage driver state between MultiSync phases.
	ContentType        string
	AllowInconsistent  bool
	Refresh            bool
	Info               *Info
	VolumeOnly         bool
	ClusterMove        bool
}

VolumeSourceArgs represents the arguments needed to setup a volume migration source.

type VolumeTargetArgs

type VolumeTargetArgs struct {
	IndexHeaderVersion    uint32
	Name                  string
	Description           string
	Config                map[string]string // Only used for custom volume migration.
	Snapshots             []string
	MigrationType         Type
	TrackProgress         bool
	Refresh               bool
	Live                  bool
	VolumeSize            int64
	ContentType           string
	VolumeOnly            bool
	ClusterMoveSourceName string
}

VolumeTargetArgs represents the arguments needed to setup a volume migration sink.

type ZfsFeatures

type ZfsFeatures struct {
	Compress        *bool `protobuf:"varint,1,opt,name=compress" json:"compress,omitempty"`
	MigrationHeader *bool `protobuf:"varint,2,opt,name=migration_header,json=migrationHeader" json:"migration_header,omitempty"`
	HeaderZvols     *bool `protobuf:"varint,3,opt,name=header_zvols,json=headerZvols" json:"header_zvols,omitempty"`
	// contains filtered or unexported fields
}

func (*ZfsFeatures) Descriptor deprecated

func (*ZfsFeatures) Descriptor() ([]byte, []int)

Deprecated: Use ZfsFeatures.ProtoReflect.Descriptor instead.

func (*ZfsFeatures) GetCompress

func (x *ZfsFeatures) GetCompress() bool

func (*ZfsFeatures) GetHeaderZvols

func (x *ZfsFeatures) GetHeaderZvols() bool

func (*ZfsFeatures) GetMigrationHeader

func (x *ZfsFeatures) GetMigrationHeader() bool

func (*ZfsFeatures) ProtoMessage

func (*ZfsFeatures) ProtoMessage()

func (*ZfsFeatures) ProtoReflect

func (x *ZfsFeatures) ProtoReflect() protoreflect.Message

func (*ZfsFeatures) Reset

func (x *ZfsFeatures) Reset()

func (*ZfsFeatures) String

func (x *ZfsFeatures) String() string

Jump to

Keyboard shortcuts

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