export PartialFile and OpenPartialFile
This commit is contained in:
parent
87ed228fd3
commit
e275b54f55
24
extern/sector-storage/ffiwrapper/partialfile.go
vendored
24
extern/sector-storage/ffiwrapper/partialfile.go
vendored
@ -25,7 +25,7 @@ const veryLargeRle = 1 << 20
|
|||||||
// unsealed sector files internally have this structure
|
// unsealed sector files internally have this structure
|
||||||
// [unpadded (raw) data][rle+][4B LE length fo the rle+ field]
|
// [unpadded (raw) data][rle+][4B LE length fo the rle+ field]
|
||||||
|
|
||||||
type partialFile struct {
|
type PartialFile struct {
|
||||||
maxPiece abi.PaddedPieceSize
|
maxPiece abi.PaddedPieceSize
|
||||||
|
|
||||||
path string
|
path string
|
||||||
@ -57,7 +57,7 @@ func writeTrailer(maxPieceSize int64, w *os.File, r rlepluslazy.RunIterator) err
|
|||||||
return w.Truncate(maxPieceSize + int64(rb) + 4)
|
return w.Truncate(maxPieceSize + int64(rb) + 4)
|
||||||
}
|
}
|
||||||
|
|
||||||
func createPartialFile(maxPieceSize abi.PaddedPieceSize, path string) (*partialFile, error) {
|
func createPartialFile(maxPieceSize abi.PaddedPieceSize, path string) (*PartialFile, error) {
|
||||||
f, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE, 0644) // nolint
|
f, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE, 0644) // nolint
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, xerrors.Errorf("openning partial file '%s': %w", path, err)
|
return nil, xerrors.Errorf("openning partial file '%s': %w", path, err)
|
||||||
@ -89,10 +89,10 @@ func createPartialFile(maxPieceSize abi.PaddedPieceSize, path string) (*partialF
|
|||||||
return nil, xerrors.Errorf("close empty partial file: %w", err)
|
return nil, xerrors.Errorf("close empty partial file: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return openPartialFile(maxPieceSize, path)
|
return OpenPartialFile(maxPieceSize, path)
|
||||||
}
|
}
|
||||||
|
|
||||||
func openPartialFile(maxPieceSize abi.PaddedPieceSize, path string) (*partialFile, error) {
|
func OpenPartialFile(maxPieceSize abi.PaddedPieceSize, path string) (*PartialFile, error) {
|
||||||
f, err := os.OpenFile(path, os.O_RDWR, 0644) // nolint
|
f, err := os.OpenFile(path, os.O_RDWR, 0644) // nolint
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, xerrors.Errorf("openning partial file '%s': %w", path, err)
|
return nil, xerrors.Errorf("openning partial file '%s': %w", path, err)
|
||||||
@ -165,7 +165,7 @@ func openPartialFile(maxPieceSize abi.PaddedPieceSize, path string) (*partialFil
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return &partialFile{
|
return &PartialFile{
|
||||||
maxPiece: maxPieceSize,
|
maxPiece: maxPieceSize,
|
||||||
path: path,
|
path: path,
|
||||||
allocated: rle,
|
allocated: rle,
|
||||||
@ -173,11 +173,11 @@ func openPartialFile(maxPieceSize abi.PaddedPieceSize, path string) (*partialFil
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (pf *partialFile) Close() error {
|
func (pf *PartialFile) Close() error {
|
||||||
return pf.file.Close()
|
return pf.file.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (pf *partialFile) Writer(offset storiface.PaddedByteIndex, size abi.PaddedPieceSize) (io.Writer, error) {
|
func (pf *PartialFile) Writer(offset storiface.PaddedByteIndex, size abi.PaddedPieceSize) (io.Writer, error) {
|
||||||
if _, err := pf.file.Seek(int64(offset), io.SeekStart); err != nil {
|
if _, err := pf.file.Seek(int64(offset), io.SeekStart); err != nil {
|
||||||
return nil, xerrors.Errorf("seek piece start: %w", err)
|
return nil, xerrors.Errorf("seek piece start: %w", err)
|
||||||
}
|
}
|
||||||
@ -206,7 +206,7 @@ func (pf *partialFile) Writer(offset storiface.PaddedByteIndex, size abi.PaddedP
|
|||||||
return pf.file, nil
|
return pf.file, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (pf *partialFile) MarkAllocated(offset storiface.PaddedByteIndex, size abi.PaddedPieceSize) error {
|
func (pf *PartialFile) MarkAllocated(offset storiface.PaddedByteIndex, size abi.PaddedPieceSize) error {
|
||||||
have, err := pf.allocated.RunIterator()
|
have, err := pf.allocated.RunIterator()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -224,7 +224,7 @@ func (pf *partialFile) MarkAllocated(offset storiface.PaddedByteIndex, size abi.
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (pf *partialFile) Free(offset storiface.PaddedByteIndex, size abi.PaddedPieceSize) error {
|
func (pf *PartialFile) Free(offset storiface.PaddedByteIndex, size abi.PaddedPieceSize) error {
|
||||||
have, err := pf.allocated.RunIterator()
|
have, err := pf.allocated.RunIterator()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -246,7 +246,7 @@ func (pf *partialFile) Free(offset storiface.PaddedByteIndex, size abi.PaddedPie
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (pf *partialFile) Reader(offset storiface.PaddedByteIndex, size abi.PaddedPieceSize) (*os.File, error) {
|
func (pf *PartialFile) Reader(offset storiface.PaddedByteIndex, size abi.PaddedPieceSize) (*os.File, error) {
|
||||||
if _, err := pf.file.Seek(int64(offset), io.SeekStart); err != nil {
|
if _, err := pf.file.Seek(int64(offset), io.SeekStart); err != nil {
|
||||||
return nil, xerrors.Errorf("seek piece start: %w", err)
|
return nil, xerrors.Errorf("seek piece start: %w", err)
|
||||||
}
|
}
|
||||||
@ -275,11 +275,11 @@ func (pf *partialFile) Reader(offset storiface.PaddedByteIndex, size abi.PaddedP
|
|||||||
return pf.file, nil
|
return pf.file, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (pf *partialFile) Allocated() (rlepluslazy.RunIterator, error) {
|
func (pf *PartialFile) Allocated() (rlepluslazy.RunIterator, error) {
|
||||||
return pf.allocated.RunIterator()
|
return pf.allocated.RunIterator()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (pf *partialFile) HasAllocated(offset storiface.UnpaddedByteIndex, size abi.UnpaddedPieceSize) (bool, error) {
|
func (pf *PartialFile) HasAllocated(offset storiface.UnpaddedByteIndex, size abi.UnpaddedPieceSize) (bool, error) {
|
||||||
have, err := pf.Allocated()
|
have, err := pf.Allocated()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
|
12
extern/sector-storage/ffiwrapper/sealer_cgo.go
vendored
12
extern/sector-storage/ffiwrapper/sealer_cgo.go
vendored
@ -66,7 +66,7 @@ func (sb *Sealer) AddPiece(ctx context.Context, sector storage.SectorRef, existi
|
|||||||
}
|
}
|
||||||
|
|
||||||
var done func()
|
var done func()
|
||||||
var stagedFile *partialFile
|
var stagedFile *PartialFile
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
if done != nil {
|
if done != nil {
|
||||||
@ -97,7 +97,7 @@ func (sb *Sealer) AddPiece(ctx context.Context, sector storage.SectorRef, existi
|
|||||||
return abi.PieceInfo{}, xerrors.Errorf("acquire unsealed sector: %w", err)
|
return abi.PieceInfo{}, xerrors.Errorf("acquire unsealed sector: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
stagedFile, err = openPartialFile(maxPieceSize, stagedPath.Unsealed)
|
stagedFile, err = OpenPartialFile(maxPieceSize, stagedPath.Unsealed)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return abi.PieceInfo{}, xerrors.Errorf("opening unsealed sector file: %w", err)
|
return abi.PieceInfo{}, xerrors.Errorf("opening unsealed sector file: %w", err)
|
||||||
}
|
}
|
||||||
@ -257,7 +257,7 @@ func (sb *Sealer) UnsealPiece(ctx context.Context, sector storage.SectorRef, off
|
|||||||
|
|
||||||
// try finding existing
|
// try finding existing
|
||||||
unsealedPath, done, err := sb.sectors.AcquireSector(ctx, sector, storiface.FTUnsealed, storiface.FTNone, storiface.PathStorage)
|
unsealedPath, done, err := sb.sectors.AcquireSector(ctx, sector, storiface.FTUnsealed, storiface.FTNone, storiface.PathStorage)
|
||||||
var pf *partialFile
|
var pf *PartialFile
|
||||||
|
|
||||||
switch {
|
switch {
|
||||||
case xerrors.Is(err, storiface.ErrSectorNotFound):
|
case xerrors.Is(err, storiface.ErrSectorNotFound):
|
||||||
@ -275,7 +275,7 @@ func (sb *Sealer) UnsealPiece(ctx context.Context, sector storage.SectorRef, off
|
|||||||
case err == nil:
|
case err == nil:
|
||||||
defer done()
|
defer done()
|
||||||
|
|
||||||
pf, err = openPartialFile(maxPieceSize, unsealedPath.Unsealed)
|
pf, err = OpenPartialFile(maxPieceSize, unsealedPath.Unsealed)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return xerrors.Errorf("opening partial file: %w", err)
|
return xerrors.Errorf("opening partial file: %w", err)
|
||||||
}
|
}
|
||||||
@ -427,7 +427,7 @@ func (sb *Sealer) ReadPiece(ctx context.Context, writer io.Writer, sector storag
|
|||||||
}
|
}
|
||||||
maxPieceSize := abi.PaddedPieceSize(ssize)
|
maxPieceSize := abi.PaddedPieceSize(ssize)
|
||||||
|
|
||||||
pf, err := openPartialFile(maxPieceSize, path.Unsealed)
|
pf, err := OpenPartialFile(maxPieceSize, path.Unsealed)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if xerrors.Is(err, os.ErrNotExist) {
|
if xerrors.Is(err, os.ErrNotExist) {
|
||||||
return false, nil
|
return false, nil
|
||||||
@ -611,7 +611,7 @@ func (sb *Sealer) FinalizeSector(ctx context.Context, sector storage.SectorRef,
|
|||||||
}
|
}
|
||||||
defer done()
|
defer done()
|
||||||
|
|
||||||
pf, err := openPartialFile(maxPieceSize, paths.Unsealed)
|
pf, err := OpenPartialFile(maxPieceSize, paths.Unsealed)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
var at uint64
|
var at uint64
|
||||||
for sr.HasNext() {
|
for sr.HasNext() {
|
||||||
|
Loading…
Reference in New Issue
Block a user