Documentation
¶
Index ¶
- func New() resource.Driver
- type MDDriver
- type MDDriverProvisioner
- type MDDriverResizer
- type MDDriverUnprovisioner
- type T
- func (t *T) Boot(ctx context.Context) error
- func (t *T) ClaimedDevices(ctx context.Context) device.L
- func (t *T) CurrentSize(ctx context.Context) (int64, error)
- func (t *T) DriverID() driver.ID
- func (t *T) ExposedDevices(ctx context.Context) device.L
- func (t *T) GetName() string
- func (t *T) Info(ctx context.Context) (resource.InfoKeys, error)
- func (t *T) Ingest(ctx context.Context) error
- func (t *T) Label(_ context.Context) string
- func (t *T) Manifest() *manifest.T
- func (t *T) ProvisionAsLeader(ctx context.Context) error
- func (t *T) Provisioned(ctx context.Context) (provisioned.T, error)
- func (t *T) ReservableDevices(ctx context.Context) device.L
- func (t *T) Resize(ctx context.Context, to int64) error
- func (t *T) ResizePlan(ctx context.Context, to int64) (int64, error)
- func (t *T) Resync(ctx context.Context) error
- func (t *T) SetUUID(ctx context.Context, uuid string) error
- func (t *T) Start(ctx context.Context) error
- func (t *T) Status(ctx context.Context) status.T
- func (t *T) Stop(ctx context.Context) error
- func (t *T) SubDevices(ctx context.Context) device.L
- func (t *T) ToSync(ctx context.Context) []string
- func (t *T) UnprovisionAsLeader(ctx context.Context) error
- func (t *T) UnsetUUID(ctx context.Context) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type MDDriver ¶
type MDDriver interface {
Activate(ctx context.Context) error
Deactivate(ctx context.Context) error
Resync(ctx context.Context) error
IsActive(ctx context.Context) (bool, string, error)
Exists(ctx context.Context) (bool, error)
Devices(ctx context.Context) (device.L, error)
UUID() string
IsAutoActivated() bool
DisableAutoActivation() error
}
type MDDriverProvisioner ¶
type MDDriverResizer ¶
type MDDriverUnprovisioner ¶
type T ¶
type T struct {
resdisk.T
Bitmap string `json:"bitmap"`
Chunk *int64 `json:"chunk"`
Devs []string `json:"devs"`
Layout string `json:"layout"`
Level string `json:"level"`
Nodes []string `json:"nodes"`
Path naming.Path `json:"path"`
Size string `json:"size"`
Spares int `json:"spares"`
UUID string `json:"uuid"`
Name string `json:"name"`
}
func (*T) CurrentSize ¶
CurrentSize implements resource.Sizer.
func (*T) Label ¶
Label implements Label from resource.Driver interface, it returns a formatted short description of the Resource
func (*T) Provisioned ¶
func (*T) Resize ¶
Resize implements resource.Resizer.
It grows the array onto members that have grown already, and does not reshape: the members and the level stay as they are.
func (*T) ResizePlan ¶
ResizePlan implements resource.Resizer.
An array hands out what its data members hold together, and how many of them that is depends on the level: one for a raid1, all of them for a raid0 or a linear, n-1 for a raid5, n-2 for a raid6, n divided by the copies for a raid10. Rather than enumerate the levels and the raid10 layouts, the array is asked what it already does: its size divided by what it uses on each member is exactly the number of members its size is made of.
A member size is a whole number of chunks on a striped level, so it is rounded up to one, never down: the link above asked for a size it needs.