]> Sergey Matveev's repositories - btrtrc.git/commitdiff
storage: Don't check completion state on every write
authorMatt Joiner <anacrolix@gmail.com>
Thu, 11 Jan 2018 23:45:19 +0000 (10:45 +1100)
committerMatt Joiner <anacrolix@gmail.com>
Thu, 11 Jan 2018 23:45:19 +0000 (10:45 +1100)
storage/wrappers.go

index 044a1f5aa53fd62de03e4cdeed76e14d1f4189f6..4fc0e10d6208445ac2be8332964e9ee57381ca1b 100644 (file)
@@ -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")
        }