@ -1808,16 +1808,18 @@ func (s *xlStorage) CheckFile(ctx context.Context, volume string, path string) e
st , _ := os . Lstat ( filePath )
st , _ := os . Lstat ( filePath )
if st == nil {
if st == nil {
if s . formatLegacy {
if ! s . formatLegacy {
filePathOld := pathJoin ( volumeDir , p , xlStorageFormatFileV1 )
return errPathNotFound
if err := checkPathLength ( filePathOld ) ; err != nil {
}
return err
}
st , _ = os . Lstat ( filePathOld )
filePathOld := pathJoin ( volumeDir , p , xlStorageFormatFileV1 )
if st == nil {
if err := checkPathLength ( filePathOld ) ; err != nil {
return errPathNotFound
return err
}
}
st , _ = os . Lstat ( filePathOld )
if st == nil {
return errPathNotFound
}
}
}
}
@ -2110,18 +2112,24 @@ func (s *xlStorage) RenameData(ctx context.Context, srcVolume, srcPath, dataDir,
// It is possible that some drives may not have `xl.meta` file
// It is possible that some drives may not have `xl.meta` file
// in such scenarios verify if atleast `part.1` files exist
// in such scenarios verify if atleast `part.1` files exist
// to verify for legacy version.
// to verify for legacy version.
currentDataPath := pathJoin ( dstVolumeDir , dstPath )
if s . formatLegacy {
entries , err := readDirN ( currentDataPath , 1 )
// We only need this code if we are moving
if err != nil && err != errFileNotFound {
// from `xl.json` to `xl.meta`, we can avoid
return osErrToFileErr ( err )
// one extra readdir operation here for all
}
// new deployments.
for _ , entry := range entries {
currentDataPath := pathJoin ( dstVolumeDir , dstPath )
if entry == xlStorageFormatFile || strings . HasSuffix ( entry , slashSeparator ) {
entries , err := readDirN ( currentDataPath , 1 )
continue
if err != nil && err != errFileNotFound {
return osErrToFileErr ( err )
}
}
if strings . HasPrefix ( entry , "part." ) {
for _ , entry := range entries {
legacyPreserved = true
if entry == xlStorageFormatFile || strings . HasSuffix ( entry , slashSeparator ) {
break
continue
}
if strings . HasPrefix ( entry , "part." ) {
legacyPreserved = true
break
}
}
}
}
}
}
}