From bb76523d574450c3ecdb697ccac6a936e9f13269 Mon Sep 17 00:00:00 2001 From: YouROK <8yourok8@mail.ru> Date: Fri, 18 Dec 2020 17:03:33 +0300 Subject: [PATCH] fix reader clean priority --- src/server/torr/storage/torrstor/cache.go | 37 ++++++++++++---------- src/server/torr/storage/torrstor/reader.go | 1 + 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/server/torr/storage/torrstor/cache.go b/src/server/torr/storage/torrstor/cache.go index 96b9031..7cb66c0 100644 --- a/src/server/torr/storage/torrstor/cache.go +++ b/src/server/torr/storage/torrstor/cache.go @@ -213,11 +213,6 @@ func (c *Cache) cleanPieces() { c.muRemove.Unlock() remPieces := c.getRemPieces() - for _, p := range remPieces { - if c.torrent.Piece(p.Id).State().Priority == torrent.PiecePriorityNone { - c.torrent.Piece(p.Id).SetPriority(torrent.PiecePriorityNormal) - } - } if c.filled > c.capacity { rems := (c.filled - c.capacity) / c.pieceLength for _, p := range remPieces { @@ -234,23 +229,31 @@ func (c *Cache) getRemPieces() []*Piece { piecesRemove := make([]*Piece, 0) fill := int64(0) + ranges := make([]Range, 0) + c.muReaders.Lock() + for r, _ := range c.readers { + ranges = append(ranges, r.getPiecesRange()) + } + c.muReaders.Unlock() + ranges = mergeRange(ranges) + for id, p := range c.pieces { - if p.Size > 0 { - fill += p.Size - - ranges := make([]Range, 0) - c.muReaders.Lock() - for r, _ := range c.readers { - ranges = append(ranges, r.getPiecesRange()) - } - c.muReaders.Unlock() - ranges = mergeRange(ranges) - + if len(ranges) > 0 { for _, rr := range ranges { if id < rr.Start || id > rr.End { - piecesRemove = append(piecesRemove, p) + if c.torrent.Piece(id).State().Priority != torrent.PiecePriorityNone { + c.torrent.Piece(id).SetPriority(torrent.PiecePriorityNone) + } + if p.Size > 0 { + fill += p.Size + piecesRemove = append(piecesRemove, p) + } } } + } else { + if c.torrent.Piece(id).State().Priority != torrent.PiecePriorityNone { + c.torrent.Piece(id).SetPriority(torrent.PiecePriorityNone) + } } } diff --git a/src/server/torr/storage/torrstor/reader.go b/src/server/torr/storage/torrstor/reader.go index d6b379f..c4d604a 100644 --- a/src/server/torr/storage/torrstor/reader.go +++ b/src/server/torr/storage/torrstor/reader.go @@ -94,6 +94,7 @@ func (r *Reader) Close() { r.mu.Lock() r.isClosed = true r.mu.Unlock() + go r.cache.getRemPieces() } func (c *Cache) NewReader(file *torrent.File) *Reader {