From d5e2d7ce99e896cfa1049bb048300fa5a9c859de Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Fri, 12 Jan 2018 10:45:19 +1100 Subject: [PATCH] storage: Don't check completion state on every write --- storage/wrappers.go | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/storage/wrappers.go b/storage/wrappers.go index 044a1f5a..4fc0e10d 100644 --- a/storage/wrappers.go +++ b/storage/wrappers.go @@ -1,7 +1,6 @@ package storage import ( - "errors" "io" "os" @@ -37,11 +36,15 @@ type Piece struct { } func (p Piece) WriteAt(b []byte, off int64) (n int, err error) { - c := p.Completion() - if c.Ok && c.Complete { - err = errors.New("piece already completed") - return - } + // Callers should not be writing to completed pieces, but it's too + // expensive to be checking this on every single write using uncached + // completions. + + // c := p.Completion() + // if c.Ok && c.Complete { + // err = errors.New("piece already completed") + // return + // } if off+int64(len(b)) > p.mip.Length() { panic("write overflows piece") } -- 2.48.1