added experimental async cache write
This commit is contained in:
parent
b69c78b380
commit
120464c0a5
1 changed files with 10 additions and 5 deletions
|
|
@ -127,16 +127,21 @@ func (f *File) readToCache(p []byte) (n int, err error) {
|
|||
log := f.log
|
||||
n, err = f.readSource(p)
|
||||
if n > 0 {
|
||||
if n, err = f.md.WriteAt(p[:n], f.offset); err != nil {
|
||||
// async cache write
|
||||
buf := make([]byte, n)
|
||||
copy(buf, p[:n])
|
||||
go func(p []byte, offset int64, n int) {
|
||||
if n, err = f.md.WriteAt(p, offset); err != nil {
|
||||
log.Error(err, "error writing cache file")
|
||||
return
|
||||
}
|
||||
f.md.AddChunk(offset, n)
|
||||
}(buf, f.offset, n)
|
||||
}
|
||||
if err != nil && err != io.EOF {
|
||||
log.Error(err, "error reading source file")
|
||||
return
|
||||
}
|
||||
f.md.AddChunk(f.offset, n)
|
||||
f.offset += int64(n)
|
||||
if n > 0 && n < len(p) {
|
||||
_, err = f.Seek(f.offset, io.SeekStart)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue