fixed quota delete

This commit is contained in:
ston1th 2022-10-08 14:03:12 +02:00
commit 3f1752e961
2 changed files with 10 additions and 8 deletions

View file

@ -131,13 +131,13 @@ func NewMetadataHandler(ctx context.Context, fs *FS, file, dst string, log logr.
return
}
func (mh *MetadataHandler) DeleteOldest() (s int64) {
func (mh *MetadataHandler) DeleteOldest() (free int64) {
mh.mu.Lock()
defer mh.mu.Unlock()
atime := int64(math.MaxInt64)
var m *Metadata
for _, v := range mh.md {
if v.Atime != 0 && v.f != nil && v.Atime < atime {
if v.Atime != 0 && v.Atime < atime {
atime = v.Atime
m = v
}
@ -145,16 +145,16 @@ func (mh *MetadataHandler) DeleteOldest() (s int64) {
if m != nil {
log := mh.log.WithValues("file", m.name)
log.Info("deleting oldest file")
cs := m.Size
s := m.Size
if !m.FullyCached() {
cs = m.ChunkSize()
s = m.ChunkSize()
}
err := m.Delete()
if err != nil {
log.Error(err, "error deleting oldest file")
return
}
s = cs
free = s
}
return
}
@ -236,13 +236,15 @@ func (mh *MetadataHandler) init() {
}
func (mh *MetadataHandler) flusher(ctx context.Context) {
t := time.NewTicker(time.Minute * 5)
for {
select {
case <-ctx.Done():
t.Stop()
mh.close()
close(mh.done)
return
case <-time.After(time.Minute * 5):
case <-t.C:
}
mh.cleanupEmptyDirs()
mh.flush()

View file

@ -42,8 +42,8 @@ func (q *Quota) cleanup() {
}
q.log.Info("quota usage", "current", atomic.LoadInt64(&q.cur), "max", q.max)
defer q.mu.Unlock()
size := q.fs.mh.DeleteOldest()
atomic.AddInt64(&q.cur, -size)
free := q.fs.mh.DeleteOldest()
atomic.AddInt64(&q.cur, -free)
}
func (q *Quota) Add(n int) {