From 80592a87cfdca87eaa0df2228c6e836010090ae6 Mon Sep 17 00:00:00 2001 From: Jakub Sztandera Date: Fri, 6 Dec 2019 18:53:33 +0100 Subject: [PATCH] Pre-sealing holes License: MIT Signed-off-by: Jakub Sztandera --- chain/gen/gen.go | 4 ++-- cmd/lotus-seed/main.go | 7 ++++++- cmd/lotus-seed/seed/seed.go | 17 +++++++++-------- lib/sectorbuilder/sectorbuilder.go | 26 ++++++++++++++++---------- 4 files changed, 33 insertions(+), 21 deletions(-) diff --git a/chain/gen/gen.go b/chain/gen/gen.go index 9c8bfadfb..34cfb6dfd 100644 --- a/chain/gen/gen.go +++ b/chain/gen/gen.go @@ -132,7 +132,7 @@ func NewGenerator() (*ChainGen, error) { return nil, err } - genm1, err := seed.PreSeal(maddr1, 1024, 1, m1temp, []byte("some randomness")) + genm1, err := seed.PreSeal(maddr1, 1024, 0, 1, m1temp, []byte("some randomness")) if err != nil { return nil, err } @@ -147,7 +147,7 @@ func NewGenerator() (*ChainGen, error) { return nil, err } - genm2, err := seed.PreSeal(maddr2, 1024, 1, m2temp, []byte("some randomness")) + genm2, err := seed.PreSeal(maddr2, 1024, 0, 1, m2temp, []byte("some randomness")) if err != nil { return nil, err } diff --git a/cmd/lotus-seed/main.go b/cmd/lotus-seed/main.go index d3e9eb4e5..39f092265 100644 --- a/cmd/lotus-seed/main.go +++ b/cmd/lotus-seed/main.go @@ -66,6 +66,11 @@ var preSealCmd = &cli.Command{ Value: 1, Usage: "select number of sectors to pre-seal", }, + &cli.IntFlag{ + Name: "sector-offset", + Value: 0, + Usage: "select number of sectors to pre-seal", + }, }, Action: func(c *cli.Context) error { sdir := c.String("sectorbuilder-dir") @@ -79,7 +84,7 @@ var preSealCmd = &cli.Command{ return err } - gm, err := seed.PreSeal(maddr, c.Uint64("sector-size"), c.Int("num-sectors"), sbroot, []byte(c.String("ticket-preimage"))) + gm, err := seed.PreSeal(maddr, c.Uint64("sector-size"), c.Uint64("sector-offset"), c.Int("num-sectors"), sbroot, []byte(c.String("ticket-preimage"))) if err != nil { return err } diff --git a/cmd/lotus-seed/seed/seed.go b/cmd/lotus-seed/seed/seed.go index 88b79ec3d..6ba4581e5 100644 --- a/cmd/lotus-seed/seed/seed.go +++ b/cmd/lotus-seed/seed/seed.go @@ -26,15 +26,16 @@ import ( var log = logging.Logger("preseal") -func PreSeal(maddr address.Address, ssize uint64, sectors int, sbroot string, preimage []byte) (*genesis.GenesisMiner, error) { +func PreSeal(maddr address.Address, ssize uint64, offset uint64, sectors int, sbroot string, preimage []byte) (*genesis.GenesisMiner, error) { cfg := §orbuilder.Config{ - Miner: maddr, - SectorSize: ssize, - CacheDir: filepath.Join(sbroot, "cache"), - SealedDir: filepath.Join(sbroot, "sealed"), - StagedDir: filepath.Join(sbroot, "staging"), - UnsealedDir: filepath.Join(sbroot, "unsealed"), - WorkerThreads: 2, + Miner: maddr, + SectorSize: ssize, + OverrideLastID: offset, + CacheDir: filepath.Join(sbroot, "cache"), + SealedDir: filepath.Join(sbroot, "sealed"), + StagedDir: filepath.Join(sbroot, "staging"), + UnsealedDir: filepath.Join(sbroot, "unsealed"), + WorkerThreads: 2, } for _, d := range []string{cfg.CacheDir, cfg.SealedDir, cfg.StagedDir, cfg.UnsealedDir} { diff --git a/lib/sectorbuilder/sectorbuilder.go b/lib/sectorbuilder/sectorbuilder.go index 870aec2ed..3c97e57e1 100644 --- a/lib/sectorbuilder/sectorbuilder.go +++ b/lib/sectorbuilder/sectorbuilder.go @@ -119,12 +119,14 @@ type Config struct { SectorSize uint64 Miner address.Address - WorkerThreads uint8 + WorkerThreads uint8 + OverrideLastID uint64 CacheDir string SealedDir string StagedDir string UnsealedDir string + _ struct{} // guard against nameless init } func New(cfg *Config, ds dtypes.MetadataDS) (*SectorBuilder, error) { @@ -142,17 +144,21 @@ func New(cfg *Config, ds dtypes.MetadataDS) (*SectorBuilder, error) { } var lastUsedID uint64 - b, err := ds.Get(lastSectorIdKey) - switch err { - case nil: - i, err := strconv.ParseInt(string(b), 10, 64) - if err != nil { + if cfg.OverrideLastID != 0 { + lastUsedID = cfg.OverrideLastID + } else { + b, err := ds.Get(lastSectorIdKey) + switch err { + case nil: + i, err := strconv.ParseInt(string(b), 10, 64) + if err != nil { + return nil, err + } + lastUsedID = uint64(i) + case datastore.ErrNotFound: + default: return nil, err } - lastUsedID = uint64(i) - case datastore.ErrNotFound: - default: - return nil, err } rlimit := cfg.WorkerThreads - PoStReservedWorkers