Documentation ¶
Index ¶
- Constants
- Variables
- func ApplyUpdates(updates ...writeaheadlog.Update) error
- func CreateAndApplyTransaction(wal *writeaheadlog.WAL, updates ...writeaheadlog.Update) (err error)
- func IsSiaDirUpdate(update writeaheadlog.Update) bool
- type DirReader
- type Metadata
- type SiaDir
- func (sd *SiaDir) Delete() error
- func (sd *SiaDir) Deleted() bool
- func (sd *SiaDir) DirReader() (*DirReader, error)
- func (sd *SiaDir) MDPath() string
- func (sd *SiaDir) Metadata() Metadata
- func (sd *SiaDir) Path() string
- func (sd *SiaDir) Rename(targetPath string) error
- func (sd *SiaDir) SetPath(targetPath string) error
- func (sd *SiaDir) UpdateBubbledMetadata(metadata Metadata) error
- func (sd *SiaDir) UpdateLastHealthCheckTime(aggregateLastHealthCheckTime, lastHealthCheckTime time.Time) error
- func (sd *SiaDir) UpdateMetadata(metadata Metadata) error
Constants ¶
const ( // SiaDirExtension is the name of the metadata file for the sia directory SiaDirExtension = ".siadir" // DefaultDirHealth is the default health for the directory and the fall // back value when there is an error. This is to protect against falsely // trying to repair directories that had a read error DefaultDirHealth = float64(0) // DefaultDirRedundancy is the default redundancy for the directory and the // fall back value when there is an error. This is to protect against // falsely trying to repair directories that had a read error DefaultDirRedundancy = float64(-1) )
Variables ¶
var ( // ErrDeleted is the error returned if the siadir is deleted ErrDeleted = errors.New("siadir is deleted") )
Functions ¶
func ApplyUpdates ¶
func ApplyUpdates(updates ...writeaheadlog.Update) error
ApplyUpdates applies a number of writeaheadlog updates to the corresponding SiaDir. This method can apply updates from different SiaDirs and should only be run before the SiaDirs are loaded from disk right after the startup of spd. Otherwise we might run into concurrency issues.
func CreateAndApplyTransaction ¶
func CreateAndApplyTransaction(wal *writeaheadlog.WAL, updates ...writeaheadlog.Update) (err error)
CreateAndApplyTransaction is a helper method that creates a writeaheadlog transaction and applies it.
func IsSiaDirUpdate ¶
func IsSiaDirUpdate(update writeaheadlog.Update) bool
IsSiaDirUpdate is a helper method that makes sure that a wal update belongs to the SiaDir package.
Types ¶
type DirReader ¶
type DirReader struct {
// contains filtered or unexported fields
}
DirReader is a helper type that allows reading a raw .siadir from disk while keeping the file in memory locked.
type Metadata ¶
type Metadata struct { // The following fields are aggregate values of the siadir. These values are // the totals of the siadir and any sub siadirs, or are calculated based on // all the values in the subtree AggregateHealth float64 `json:"aggregatehealth"` AggregateLastHealthCheckTime time.Time `json:"aggregatelasthealthchecktime"` AggregateMinRedundancy float64 `json:"aggregateminredundancy"` AggregateModTime time.Time `json:"aggregatemodtime"` AggregateNumFiles uint64 `json:"aggregatenumfiles"` AggregateNumStuckChunks uint64 `json:"aggregatenumstuckchunks"` AggregateNumSubDirs uint64 `json:"aggregatenumsubdirs"` AggregateRemoteHealth float64 `json:"aggregateremotehealth"` AggregateSize uint64 `json:"aggregatesize"` AggregateStuckHealth float64 `json:"aggregatestuckhealth"` // The following fields are information specific to the siadir that is not // an aggregate of the entire sub directory tree Health float64 `json:"health"` LastHealthCheckTime time.Time `json:"lasthealthchecktime"` MinRedundancy float64 `json:"minredundancy"` Mode os.FileMode `json:"mode"` ModTime time.Time `json:"modtime"` NumFiles uint64 `json:"numfiles"` NumStuckChunks uint64 `json:"numstuckchunks"` NumSubDirs uint64 `json:"numsubdirs"` RemoteHealth float64 `json:"remotehealth"` Size uint64 `json:"size"` StuckHealth float64 `json:"stuckhealth"` // Version is the used version of the header file. Version string `json:"version"` }
Metadata is the metadata that is saved to disk as a .siadir file
type SiaDir ¶
type SiaDir struct {
// contains filtered or unexported fields
}
SiaDir contains the metadata information about a renter directory
func LoadSiaDir ¶
func LoadSiaDir(path string, deps modules.Dependencies, wal *writeaheadlog.WAL) (sd *SiaDir, err error)
LoadSiaDir loads the directory metadata from disk
func New ¶
New creates a new directory in the renter directory and makes sure there is a metadata file in the directory and creates one as needed. This method will also make sure that all the parent directories are created and have metadata files as well and will return the SiaDir containing the information for the directory that matches the siaPath provided
func (*SiaDir) Delete ¶
Delete removes the directory from disk and marks it as deleted. Once the directory is deleted, attempting to access the directory will return an error.
func (*SiaDir) DirReader ¶
DirReader creates a io.ReadCloser that can be used to read the raw SiaDir from disk.
func (*SiaDir) UpdateBubbledMetadata ¶
UpdateBubbledMetadata updates the SiaDir Metadata that is bubbled and saves the changes to disk. For fields that are not bubbled, this method sets them to the current values in the SiaDir metadata
func (*SiaDir) UpdateLastHealthCheckTime ¶
func (sd *SiaDir) UpdateLastHealthCheckTime(aggregateLastHealthCheckTime, lastHealthCheckTime time.Time) error
UpdateLastHealthCheckTime updates the SiaDir LastHealthCheckTime and AggregateLastHealthCheckTime and saves the changes to disk
func (*SiaDir) UpdateMetadata ¶
UpdateMetadata updates the SiaDir metadata on disk