lotus/storage/sectorstorage/stores/interface.go

39 lines
987 B
Go
Raw Normal View History

package stores
import (
2020-03-13 00:23:05 +00:00
"context"
2020-03-19 15:10:19 +00:00
"syscall"
"golang.org/x/xerrors"
2020-03-13 00:23:05 +00:00
"github.com/filecoin-project/specs-actors/actors/abi"
)
type Store interface {
2020-03-26 02:50:56 +00:00
AcquireSector(ctx context.Context, s abi.SectorID, existing SectorFileType, allocate SectorFileType, sealing bool) (paths SectorPaths, stores SectorPaths, done func(), err error)
Remove(ctx context.Context, s abi.SectorID, types SectorFileType) error
// move sectors into storage
2020-03-26 02:50:56 +00:00
MoveStorage(ctx context.Context, s abi.SectorID, types SectorFileType) error
FsStat(ctx context.Context, id ID) (FsStat, error)
2020-03-19 15:10:19 +00:00
}
func Stat(path string) (FsStat, error) {
var stat syscall.Statfs_t
if err := syscall.Statfs(path, &stat); err != nil {
return FsStat{}, xerrors.Errorf("statfs: %w", err)
}
return FsStat{
Capacity: stat.Blocks * uint64(stat.Bsize),
Available: stat.Bavail * uint64(stat.Bsize),
2020-03-19 15:10:19 +00:00
}, nil
}
type FsStat struct {
Capacity uint64
Available uint64 // Available to use for sector storage
Used uint64
}