From: Matt Joiner Date: Thu, 11 Jan 2018 23:45:19 +0000 (+1100) Subject: storage: Don't check completion state on every write X-Git-Tag: v1.0.0~280 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=d5e2d7ce99e896cfa1049bb048300fa5a9c859de;p=btrtrc.git storage: Don't check completion state on every write --- 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") }