diff --git a/lib/scanner/blockqueue.go b/lib/scanner/blockqueue.go index a7763403..1ab720ce 100644 --- a/lib/scanner/blockqueue.go +++ b/lib/scanner/blockqueue.go @@ -19,7 +19,7 @@ import ( // workers are used in parallel. The outbox will become closed when the inbox // is closed and all items handled. -func newParallelHasher(dir string, blockSize, workers int, outbox, inbox chan protocol.FileInfo, counter *uint64, done chan struct{}) { +func newParallelHasher(dir string, blockSize, workers int, outbox, inbox chan protocol.FileInfo, counter *int64, done chan struct{}) { wg := sync.NewWaitGroup() wg.Add(workers) @@ -39,7 +39,7 @@ func newParallelHasher(dir string, blockSize, workers int, outbox, inbox chan pr }() } -func HashFile(path string, blockSize int, sizeHint int64, counter *uint64) ([]protocol.BlockInfo, error) { +func HashFile(path string, blockSize int, sizeHint int64, counter *int64) ([]protocol.BlockInfo, error) { fd, err := os.Open(path) if err != nil { if debug { @@ -63,7 +63,7 @@ func HashFile(path string, blockSize int, sizeHint int64, counter *uint64) ([]pr return Blocks(fd, blockSize, sizeHint, counter) } -func hashFiles(dir string, blockSize int, outbox, inbox chan protocol.FileInfo, counter *uint64) { +func hashFiles(dir string, blockSize int, outbox, inbox chan protocol.FileInfo, counter *int64) { for f := range inbox { if f.IsDirectory() || f.IsDeleted() { panic("Bug. Asked to hash a directory or a deleted file.") diff --git a/lib/scanner/blocks.go b/lib/scanner/blocks.go index b853b2aa..06178b11 100644 --- a/lib/scanner/blocks.go +++ b/lib/scanner/blocks.go @@ -19,7 +19,7 @@ import ( var SHA256OfNothing = []uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55} // Blocks returns the blockwise hash of the reader. -func Blocks(r io.Reader, blocksize int, sizehint int64, counter *uint64) ([]protocol.BlockInfo, error) { +func Blocks(r io.Reader, blocksize int, sizehint int64, counter *int64) ([]protocol.BlockInfo, error) { var blocks []protocol.BlockInfo if sizehint > 0 { blocks = make([]protocol.BlockInfo, 0, int(sizehint/int64(blocksize))) @@ -38,7 +38,7 @@ func Blocks(r io.Reader, blocksize int, sizehint int64, counter *uint64) ([]prot } if counter != nil { - atomic.AddUint64(counter, uint64(n)) + atomic.AddInt64(counter, int64(n)) } b := protocol.BlockInfo{ diff --git a/lib/scanner/walk.go b/lib/scanner/walk.go index a4079b5f..869c944d 100644 --- a/lib/scanner/walk.go +++ b/lib/scanner/walk.go @@ -139,10 +139,10 @@ func (w *Walker) Walk() (chan protocol.FileInfo, error) { // which it receives the files we ask it to hash. go func() { var filesToHash []protocol.FileInfo - var total, progress uint64 + var total, progress int64 for file := range toHashChan { filesToHash = append(filesToHash, file) - total += uint64(file.CachedSize) + total += int64(file.CachedSize) } realToHashChan := make(chan protocol.FileInfo) @@ -161,7 +161,7 @@ func (w *Walker) Walk() (chan protocol.FileInfo, error) { ticker.Stop() return case <-ticker.C: - current := atomic.LoadUint64(&progress) + current := atomic.LoadInt64(&progress) if debug { l.Debugf("Walk %s %s current progress %d/%d (%d%%)", w.Dir, w.Subs, current, total, current*100/total) }