Skip to content

Commit 12861d2

Browse files
committed
Improve formula for checking free disk space
... during physical restore
1 parent a0f6724 commit 12861d2

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

pbm/restore/physical.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2657,13 +2657,15 @@ func (r *PhysRestore) checkDiskSpace(bcpSize int64) error {
26572657
return errors.Wrap(err, "get statfs")
26582658
}
26592659

2660-
free := int64(stat.Bavail) * int64(stat.Bsize)
2661-
tenGiB := 10 * (1 << 30)
2662-
totalReqSize := bcpSize + int64(tenGiB)
2663-
r.log.Debug("free space on disk: %s; backup size: %s; total requested free size: %s",
2664-
storage.PrettySize(free), storage.PrettySize(bcpSize), storage.PrettySize(totalReqSize))
2665-
2666-
if totalReqSize >= free {
2660+
total := stat.Blocks * uint64(stat.Bsize)
2661+
free := stat.Bavail * uint64(stat.Bsize)
2662+
used := total - free
2663+
availDiskWatermark := uint64(0.85 * float64(total))
2664+
avail := max(availDiskWatermark-used, 0)
2665+
r.log.Debug("free space on disk: %s; available for pbm usage: %s; backup size: %s;",
2666+
storage.PrettySize(int64(free)), storage.PrettySize(int64(avail)), storage.PrettySize(bcpSize))
2667+
2668+
if uint64(bcpSize) >= avail {
26672669
return errors.New("not enough disk space for fallback strategy, " +
26682670
"consider using --fallback-enabled=false")
26692671
}

0 commit comments

Comments
 (0)