diff --git a/cmd/fs-v1-rwpool.go b/cmd/fs-v1-rwpool.go index 6c5eb1be1..3d1e3dff1 100644 --- a/cmd/fs-v1-rwpool.go +++ b/cmd/fs-v1-rwpool.go @@ -157,6 +157,9 @@ func (fsi *fsIOPool) Write(path string) (wlk *lock.LockedFile, err error) { case isSysErrIsDir(err): return nil, errIsNotRegular default: + if isSysErrPathNotFound(err) { + return nil, errFileNotFound + } return nil, err } } diff --git a/cmd/fs-v1.go b/cmd/fs-v1.go index 394772d68..d03ce9dca 100644 --- a/cmd/fs-v1.go +++ b/cmd/fs-v1.go @@ -19,7 +19,6 @@ package cmd import ( "bytes" "context" - "errors" "fmt" "io" "io/ioutil" @@ -623,10 +622,6 @@ func (fs *FSObjects) CopyObject(ctx context.Context, srcBucket, srcObject, dstBu fsMetaPath := pathJoin(fs.fsPath, minioMetaBucket, bucketMetaPrefix, srcBucket, srcObject, fs.metaJSONFile) wlk, err := fs.rwPool.Write(fsMetaPath) if err != nil { - if !errors.Is(err, errFileNotFound) { - logger.LogIf(ctx, err) - return oi, toObjectErr(err, srcBucket, srcObject) - } wlk, err = fs.rwPool.Create(fsMetaPath) if err != nil { logger.LogIf(ctx, err) @@ -1177,10 +1172,6 @@ func (fs *FSObjects) putObject(ctx context.Context, bucket string, object string wlk, err = fs.rwPool.Write(fsMetaPath) var freshFile bool if err != nil { - if !errors.Is(err, errFileNotFound) { - logger.LogIf(ctx, err) - return ObjectInfo{}, toObjectErr(err, bucket, object) - } wlk, err = fs.rwPool.Create(fsMetaPath) if err != nil { logger.LogIf(ctx, err) @@ -1511,10 +1502,6 @@ func (fs *FSObjects) PutObjectTags(ctx context.Context, bucket, object string, t fsMeta := fsMetaV1{} wlk, err := fs.rwPool.Write(fsMetaPath) if err != nil { - if !errors.Is(err, errFileNotFound) { - logger.LogIf(ctx, err) - return toObjectErr(err, bucket, object) - } wlk, err = fs.rwPool.Create(fsMetaPath) if err != nil { logger.LogIf(ctx, err) diff --git a/cmd/xl-storage-errors.go b/cmd/xl-storage-errors.go index beb73ad66..9c2a612ad 100644 --- a/cmd/xl-storage-errors.go +++ b/cmd/xl-storage-errors.go @@ -94,6 +94,10 @@ func isSysErrNotEmpty(err error) bool { // Check if the given error corresponds to the specific ERROR_PATH_NOT_FOUND for windows func isSysErrPathNotFound(err error) bool { if runtime.GOOS != globalWindowsOSName { + var pathErr *os.PathError + if errors.As(err, &pathErr) { + return pathErr.Err == syscall.ENOENT + } return false } var pathErr *os.PathError