From 2a810c7da208d77b10375c0d1d7cb6fb24d36f67 Mon Sep 17 00:00:00 2001 From: Nitish Tiwari Date: Mon, 26 Nov 2018 10:35:14 +0530 Subject: [PATCH] Improve du thread performance (#6849) --- cmd/fs-v1.go | 18 ++++-------------- cmd/posix.go | 8 ++++++-- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/cmd/fs-v1.go b/cmd/fs-v1.go index dc522c507..7950afcdf 100644 --- a/cmd/fs-v1.go +++ b/cmd/fs-v1.go @@ -187,14 +187,9 @@ func (fs *FSObjects) diskUsage(doneCh chan struct{}) { case <-doneCh: return errWalkAbort default: - var fi os.FileInfo - var err error - if hasSuffix(entry, slashSeparator) { - fi, err = fsStatDir(ctx, entry) - } else { - fi, err = fsStatFile(ctx, entry) - } + fi, err := os.Stat(entry) if err != nil { + err = osErrToFSFileErr(err) return err } atomic.AddUint64(&fs.totalUsed, uint64(fi.Size())) @@ -226,14 +221,9 @@ func (fs *FSObjects) diskUsage(doneCh chan struct{}) { } } - var fi os.FileInfo - var err error - if hasSuffix(entry, slashSeparator) { - fi, err = fsStatDir(ctx, entry) - } else { - fi, err = fsStatFile(ctx, entry) - } + fi, err := os.Stat(entry) if err != nil { + err = osErrToFSFileErr(err) return err } usage = usage + uint64(fi.Size()) diff --git a/cmd/posix.go b/cmd/posix.go index 7c68ad8c8..6eb6ac267 100644 --- a/cmd/posix.go +++ b/cmd/posix.go @@ -83,8 +83,10 @@ func checkPathLength(pathName string) error { return errFileNameTooLong } - // Convert any '\' to '/'. - pathName = filepath.ToSlash(pathName) + if runtime.GOOS == "windows" { + // Convert any '\' to '/'. + pathName = filepath.ToSlash(pathName) + } // Check each path segment length is > 255 for len(pathName) > 0 && pathName != "." && pathName != "/" { @@ -374,6 +376,7 @@ func (s *posix) diskUsage(doneCh chan struct{}) { default: fi, err := os.Stat(entry) if err != nil { + err = osErrToFSFileErr(err) return err } atomic.AddUint64(&s.totalUsed, uint64(fi.Size())) @@ -413,6 +416,7 @@ func (s *posix) diskUsage(doneCh chan struct{}) { default: fi, err := os.Stat(entry) if err != nil { + err = osErrToFSFileErr(err) return err } usage = usage + uint64(fi.Size())