From db26d3c9e2bea140c04ae73613e9817c5cabf937 Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Fri, 13 Jul 2018 23:41:48 -0700 Subject: [PATCH] Fix handling files at leaf attempting disk.ListDir() (#6155) Return an ignorable error upon readDir() failure on a file. --- cmd/posix-list-dir-nix.go | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/cmd/posix-list-dir-nix.go b/cmd/posix-list-dir-nix.go index d896decbd..4591c0c1e 100644 --- a/cmd/posix-list-dir-nix.go +++ b/cmd/posix-list-dir-nix.go @@ -22,7 +22,6 @@ import ( "os" "path" "runtime" - "strings" "sync" "syscall" "unsafe" @@ -124,18 +123,12 @@ func readDirN(dirPath string, count int) (entries []string, err error) { d, err := os.Open(dirPath) if err != nil { - // File is really not found. - if os.IsNotExist(err) { + if os.IsNotExist(err) || isSysErrNotDir(err) { return nil, errFileNotFound } if os.IsPermission(err) { return nil, errFileAccessDenied } - - // File path cannot be verified since one of the parents is a file. - if strings.Contains(err.Error(), "not a directory") { - return nil, errFileNotFound - } return nil, err } defer d.Close() @@ -148,6 +141,9 @@ func readDirN(dirPath string, count int) (entries []string, err error) { for !done { nbuf, err := syscall.ReadDirent(fd, buf) if err != nil { + if isSysErrNotDir(err) { + return nil, errFileNotFound + } return nil, err } if nbuf <= 0 {