diff --git a/core/corerepo/gc.go b/core/corerepo/gc.go index 5175a0410..a954ce5cc 100644 --- a/core/corerepo/gc.go +++ b/core/corerepo/gc.go @@ -174,15 +174,13 @@ func (gc *GC) maybeGC(ctx context.Context, offset uint64) error { return err } - if storage+offset > gc.StorageMax { - err := ErrMaxStorageExceeded - log.Error(err) - return err - } - if storage+offset > gc.StorageGC { + if storage+offset > gc.StorageMax { + log.Warningf("pre-GC: %s", ErrMaxStorageExceeded) + } + // Do GC here - log.Info("Starting repo GC...") + log.Info("Watermark exceeded. Starting repo GC...") defer log.EventBegin(ctx, "repoGC").Done() // 1 minute is sufficient for ~1GB unlink() blocks each of 100kb in SSD _ctx, cancel := context.WithTimeout(ctx, time.Duration(gc.SlackGB)*time.Minute) @@ -196,7 +194,14 @@ func (gc *GC) maybeGC(ctx context.Context, offset uint64) error { return err } log.Infof("Repo GC done. Released %s\n", humanize.Bytes(uint64(storage-newStorage))) - return nil + if newStorage > gc.StorageGC { + log.Warningf("post-GC: Watermark still exceeded") + if newStorage > gc.StorageMax { + err := ErrMaxStorageExceeded + log.Error(err) + return err + } + } } return nil }