mirror of
https://github.com/minio/minio.git
synced 2024-12-24 06:05:55 -05:00
fix: Optimize listing calls for NFS mounts (#13159)
--no-compat should allow for some optimized behavior for NFS mounts by removing Stat() operations.
This commit is contained in:
parent
9c5fd6a776
commit
951b1e6a7a
@ -854,6 +854,15 @@ func (fs *FSObjects) getObjectInfoNoFSLock(ctx context.Context, bucket, object s
|
|||||||
return fsMeta.ToObjectInfo(bucket, object, fi), nil
|
return fsMeta.ToObjectInfo(bucket, object, fi), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !globalCLIContext.StrictS3Compat {
|
||||||
|
// Stat the file to get file size.
|
||||||
|
fi, err := fsStatFile(ctx, pathJoin(fs.fsPath, bucket, object))
|
||||||
|
if err != nil {
|
||||||
|
return oi, err
|
||||||
|
}
|
||||||
|
return fsMeta.ToObjectInfo(bucket, object, fi), nil
|
||||||
|
}
|
||||||
|
|
||||||
fsMetaPath := pathJoin(fs.fsPath, minioMetaBucket, bucketMetaPrefix, bucket, object, fs.metaJSONFile)
|
fsMetaPath := pathJoin(fs.fsPath, minioMetaBucket, bucketMetaPrefix, bucket, object, fs.metaJSONFile)
|
||||||
// Read `fs.json` to perhaps contend with
|
// Read `fs.json` to perhaps contend with
|
||||||
// parallel Put() operations.
|
// parallel Put() operations.
|
||||||
|
@ -276,8 +276,13 @@ func listObjects(ctx context.Context, obj ObjectLayer, bucket, prefix, marker, d
|
|||||||
var eof bool
|
var eof bool
|
||||||
var nextMarker string
|
var nextMarker string
|
||||||
|
|
||||||
|
maxConcurrent := maxKeys / 10
|
||||||
|
if maxConcurrent == 0 {
|
||||||
|
maxConcurrent = maxKeys
|
||||||
|
}
|
||||||
|
|
||||||
// List until maxKeys requested.
|
// List until maxKeys requested.
|
||||||
g := errgroup.WithNErrs(maxKeys).WithConcurrency(10)
|
g := errgroup.WithNErrs(maxKeys).WithConcurrency(maxConcurrent)
|
||||||
ctx, cancel := g.WithCancelOnError(ctx)
|
ctx, cancel := g.WithCancelOnError(ctx)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
|
@ -679,11 +679,6 @@ func testListObjects(obj ObjectLayer, instanceType string, t1 TestErrHandler) {
|
|||||||
if testCase.result.Objects[j].Name != result.Objects[j].Name {
|
if testCase.result.Objects[j].Name != result.Objects[j].Name {
|
||||||
t.Errorf("Test %d: %s: Expected object name to be \"%s\", but found \"%s\" instead", i+1, instanceType, testCase.result.Objects[j].Name, result.Objects[j].Name)
|
t.Errorf("Test %d: %s: Expected object name to be \"%s\", but found \"%s\" instead", i+1, instanceType, testCase.result.Objects[j].Name, result.Objects[j].Name)
|
||||||
}
|
}
|
||||||
// FIXME: we should always check for ETag
|
|
||||||
if result.Objects[j].ETag == "" && !strings.HasSuffix(result.Objects[j].Name, SlashSeparator) {
|
|
||||||
t.Errorf("Test %d: %s: Expected ETag to be not empty, but found empty instead (%v)", i+1, instanceType, result.Objects[j].Name)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(testCase.result.Prefixes) != len(result.Prefixes) {
|
if len(testCase.result.Prefixes) != len(result.Prefixes) {
|
||||||
@ -1350,11 +1345,6 @@ func testListObjectVersions(obj ObjectLayer, instanceType string, t1 TestErrHand
|
|||||||
if testCase.result.Objects[j].Name != result.Objects[j].Name {
|
if testCase.result.Objects[j].Name != result.Objects[j].Name {
|
||||||
t.Errorf("%s: Expected object name to be \"%s\", but found \"%s\" instead", instanceType, testCase.result.Objects[j].Name, result.Objects[j].Name)
|
t.Errorf("%s: Expected object name to be \"%s\", but found \"%s\" instead", instanceType, testCase.result.Objects[j].Name, result.Objects[j].Name)
|
||||||
}
|
}
|
||||||
// FIXME: we should always check for ETag
|
|
||||||
if result.Objects[j].ETag == "" && !strings.HasSuffix(result.Objects[j].Name, SlashSeparator) {
|
|
||||||
t.Errorf("%s: Expected ETag to be not empty, but found empty instead (%v)", instanceType, result.Objects[j].Name)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(testCase.result.Prefixes) != len(result.Prefixes) {
|
if len(testCase.result.Prefixes) != len(result.Prefixes) {
|
||||||
|
Loading…
Reference in New Issue
Block a user