lpseal: Wire up TreeD to TreesTask

This commit is contained in:
Łukasz Magiera 2023-12-23 18:49:11 +01:00
parent a2c906fe4f
commit 56240f5077
4 changed files with 32 additions and 3 deletions

View File

@ -7,14 +7,17 @@ import (
ffi "github.com/filecoin-project/filecoin-ffi" ffi "github.com/filecoin-project/filecoin-ffi"
commcid "github.com/filecoin-project/go-fil-commcid" commcid "github.com/filecoin-project/go-fil-commcid"
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
"github.com/filecoin-project/lotus/provider/lpproof"
"github.com/filecoin-project/lotus/storage/paths" "github.com/filecoin-project/lotus/storage/paths"
"github.com/filecoin-project/lotus/storage/pipeline/lib/nullreader" "github.com/filecoin-project/lotus/storage/pipeline/lib/nullreader"
"github.com/filecoin-project/lotus/storage/sealer/proofpaths"
"github.com/filecoin-project/lotus/storage/sealer/storiface" "github.com/filecoin-project/lotus/storage/sealer/storiface"
"github.com/ipfs/go-cid" "github.com/ipfs/go-cid"
logging "github.com/ipfs/go-log/v2" logging "github.com/ipfs/go-log/v2"
"golang.org/x/xerrors" "golang.org/x/xerrors"
"io" "io"
"os" "os"
"path/filepath"
) )
var log = logging.Logger("lpffi") var log = logging.Logger("lpffi")
@ -109,6 +112,21 @@ func (sb *SealCalls) GenerateSDR(ctx context.Context, sector storiface.SectorRef
return nil return nil
} }
func (sb *SealCalls) TreeD(ctx context.Context, sector storiface.SectorRef, size abi.PaddedPieceSize, data io.Reader) (cid.Cid, error) {
maybeUns := storiface.FTNone
// todo sectors with data
paths, releaseSector, err := sb.sectors.AcquireSector(ctx, sector, maybeUns, storiface.FTCache, storiface.PathSealing)
if err != nil {
return cid.Undef, xerrors.Errorf("acquiring sector paths: %w", err)
}
defer releaseSector()
log.Errorw("oest.idos.hbisor.bpisro.pisro.bpisro.bxsrobpyxsrbpoyxsrgbopyx treed", "paths", paths.Cache)
return lpproof.BuildTreeD(data, filepath.Join(paths.Cache, proofpaths.TreeDName), size)
}
func (sb *SealCalls) TreeRC(ctx context.Context, sector storiface.SectorRef, unsealed cid.Cid) (cid.Cid, cid.Cid, error) { func (sb *SealCalls) TreeRC(ctx context.Context, sector storiface.SectorRef, unsealed cid.Cid) (cid.Cid, cid.Cid, error) {
p1o, err := sb.makePhase1Out(unsealed, sector.ProofType) p1o, err := sb.makePhase1Out(unsealed, sector.ProofType)
if err != nil { if err != nil {

View File

@ -123,7 +123,7 @@ func (s *SDRTask) Do(taskID harmonytask.TaskID, stillOwned func() bool) (done bo
n, err := s.db.Exec(ctx, `UPDATE sectors_sdr_pipeline n, err := s.db.Exec(ctx, `UPDATE sectors_sdr_pipeline
SET after_sdr = true, ticket_epoch = $3, ticket_value = $4 SET after_sdr = true, ticket_epoch = $3, ticket_value = $4
WHERE sp_id = $1 AND sector_number = $2`, WHERE sp_id = $1 AND sector_number = $2`,
sectorParams.SpID, sectorParams.SectorNumber, ticketEpoch, ticket) sectorParams.SpID, sectorParams.SectorNumber, ticketEpoch, []byte(ticket))
if err != nil { if err != nil {
return false, xerrors.Errorf("store sdr success: updating pipeline: %w", err) return false, xerrors.Errorf("store sdr success: updating pipeline: %w", err)
} }

View File

@ -8,6 +8,7 @@ import (
"github.com/filecoin-project/lotus/lib/harmony/harmonytask" "github.com/filecoin-project/lotus/lib/harmony/harmonytask"
"github.com/filecoin-project/lotus/lib/harmony/resources" "github.com/filecoin-project/lotus/lib/harmony/resources"
"github.com/filecoin-project/lotus/provider/lpffi" "github.com/filecoin-project/lotus/provider/lpffi"
"github.com/filecoin-project/lotus/storage/pipeline/lib/nullreader"
"github.com/filecoin-project/lotus/storage/sealer/storiface" "github.com/filecoin-project/lotus/storage/sealer/storiface"
"golang.org/x/xerrors" "golang.org/x/xerrors"
) )
@ -86,12 +87,21 @@ func (t *TreesTask) Do(taskID harmonytask.TaskID, stillOwned func() bool) (done
ProofType: sectorParams.RegSealProof, ProofType: sectorParams.RegSealProof,
} }
// D
treeUnsealed, err := t.sc.TreeD(ctx, sref, abi.PaddedPieceSize(ssize), nullreader.NewNullReader(abi.PaddedPieceSize(ssize).Unpadded()))
if err != nil {
return false, xerrors.Errorf("computing tree d: %w", err)
}
// R / C
sealed, unsealed, err := t.sc.TreeRC(ctx, sref, commd) sealed, unsealed, err := t.sc.TreeRC(ctx, sref, commd)
if err != nil { if err != nil {
return false, xerrors.Errorf("computing tree r and c: %w", err) return false, xerrors.Errorf("computing tree r and c: %w", err)
} }
// todo tree d!! (?) if unsealed != treeUnsealed {
return false, xerrors.Errorf("tree-d and tree-r/c unsealed CIDs disagree")
}
n, err := t.db.Exec(ctx, `UPDATE sectors_sdr_pipeline n, err := t.db.Exec(ctx, `UPDATE sectors_sdr_pipeline
SET after_tree_r = true, after_tree_c = true, after_tree_d = true, tree_r_cid = $1, tree_d_cid = $3 SET after_tree_r = true, after_tree_c = true, after_tree_d = true, tree_r_cid = $1, tree_d_cid = $3

View File

@ -6,7 +6,8 @@ import (
"github.com/filecoin-project/go-state-types/abi" "github.com/filecoin-project/go-state-types/abi"
) )
var dataFilePrefix = "sc-02-data-" const dataFilePrefix = "sc-02-data-"
const TreeDName = dataFilePrefix + "tree-d.dat"
func LayerFileName(layer int) string { func LayerFileName(layer int) string {
return fmt.Sprintf("%slayer-%d.dat", dataFilePrefix, layer) return fmt.Sprintf("%slayer-%d.dat", dataFilePrefix, layer)