mirror of
https://github.com/minio/minio.git
synced 2025-11-07 21:02:58 -05:00
use O_DIRECT for all ReadFileStream (#13324)
This PR also removes #13312 to ensure that we can use a better mechanism to handle page-cache, using O_DIRECT even for Range GETs.
This commit is contained in:
@@ -19,7 +19,6 @@ package ioutil
|
||||
|
||||
import (
|
||||
"io"
|
||||
"os"
|
||||
|
||||
"github.com/minio/minio/internal/disk"
|
||||
)
|
||||
@@ -31,20 +30,21 @@ import (
|
||||
//
|
||||
// passes NOATIME flag for reads on Unix systems to avoid atime updates.
|
||||
func ReadFile(name string) ([]byte, error) {
|
||||
f, err := os.OpenFile(name, readMode, 0)
|
||||
f, err := disk.OpenFileDirectIO(name, readMode, 0666)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := disk.Fadvise(f, disk.FadvSequential); err != nil {
|
||||
return nil, err
|
||||
r := &ODirectReader{
|
||||
File: f,
|
||||
SmallFile: true,
|
||||
}
|
||||
defer disk.Fadvise(f, disk.FadvNoReuse)
|
||||
defer f.Close()
|
||||
defer r.Close()
|
||||
|
||||
st, err := f.Stat()
|
||||
if err != nil {
|
||||
return io.ReadAll(f)
|
||||
return io.ReadAll(r)
|
||||
}
|
||||
dst := make([]byte, st.Size())
|
||||
_, err = io.ReadFull(f, dst)
|
||||
_, err = io.ReadFull(r, dst)
|
||||
return dst, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user