diff --git a/core/commands/repo.go b/core/commands/repo.go index 1e928cb13..5ca8d35e0 100644 --- a/core/commands/repo.go +++ b/core/commands/repo.go @@ -191,11 +191,13 @@ Version string The repo version. } else { fmt.Fprintf(wtr, "RepoSize:\t%d\n", stat.RepoSize) } - maxSizeInMiB := stat.StorageMax / (1024 * 1024) - if human && maxSizeInMiB > 0 { - fmt.Fprintf(wtr, "StorageMax (MiB):\t%d\n", maxSizeInMiB) - } else { - fmt.Fprintf(wtr, "StorageMax:\t%d\n", stat.StorageMax) + if stat.StorageMax != corerepo.NoLimit { + maxSizeInMiB := stat.StorageMax / (1024 * 1024) + if human && maxSizeInMiB > 0 { + fmt.Fprintf(wtr, "StorageMax (MiB):\t%d\n", maxSizeInMiB) + } else { + fmt.Fprintf(wtr, "StorageMax:\t%d\n", stat.StorageMax) + } } fmt.Fprintf(wtr, "RepoPath:\t%s\n", stat.RepoPath) fmt.Fprintf(wtr, "Version:\t%s\n", stat.Version) diff --git a/core/corerepo/stat.go b/core/corerepo/stat.go index c8826ef9f..9f756209a 100644 --- a/core/corerepo/stat.go +++ b/core/corerepo/stat.go @@ -2,6 +2,7 @@ package corerepo import ( "fmt" + "math" context "context" "github.com/ipfs/go-ipfs/core" @@ -18,6 +19,9 @@ type Stat struct { StorageMax uint64 // size in bytes } +// NoLimit represents the value for unlimited storage +const NoLimit uint64 = math.MaxUint64 + func RepoStat(n *core.IpfsNode, ctx context.Context) (*Stat, error) { r := n.Repo @@ -46,9 +50,12 @@ func RepoStat(n *core.IpfsNode, ctx context.Context) (*Stat, error) { return nil, err } - storageMax, err := humanize.ParseBytes(cfg.Datastore.StorageMax) - if err != nil { - return nil, err + storageMax := NoLimit + if cfg.Datastore.StorageMax != "" { + storageMax, err = humanize.ParseBytes(cfg.Datastore.StorageMax) + if err != nil { + return nil, err + } } return &Stat{ diff --git a/test/sharness/t0080-repo.sh b/test/sharness/t0080-repo.sh index e1bf97c3a..e99cf834b 100755 --- a/test/sharness/t0080-repo.sh +++ b/test/sharness/t0080-repo.sh @@ -263,4 +263,11 @@ test_expect_success "repo version came out correct" ' test_kill_ipfs_daemon +test_expect_success "remove Datastore.StorageMax from config" ' + ipfs config Datastore.StorageMax "" +' +test_expect_success "'ipfs repo stat' still succeeds" ' + ipfs repo stat > repo-stats +' + test_done