mirror of
https://github.com/cubefs/cubefs.git
synced 2026-08-02 02:00:56 +00:00
refactor(data): modify punch hole sync size to 128M for tiny extent. #1000212704
Signed-off-by: Victor1319 <zengxuewei@oppo.com>
This commit is contained in:
parent
640613aa7e
commit
ddde96c5f6
@ -745,7 +745,7 @@ func (dp *DataPartition) doStreamExtentFixRepair(wg *sync.WaitGroup, remoteExten
|
||||
RETRY:
|
||||
err := dp.streamRepairExtent(remoteExtentInfo, repl.NewTinyExtentRepairReadPacket, repl.NewExtentRepairReadPacket, repl.NewNormalExtentWithHoleRepairReadPacket, repl.NewPacketEx)
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), storage.NoDiskReadRepairExtentTokenError.Error()) || strings.Contains(err.Error(), tinyOffsetInvalid) {
|
||||
if strings.Contains(err.Error(), storage.NoDiskReadRepairExtentTokenError.Error()) || strings.Contains(err.Error(), tinyOffsetInvalid) || strings.Contains(err.Error(), "timeout") {
|
||||
log.LogWarnf("action[DoRepair] retry dp(%v) extent(%v). err %s ", dp.partitionID, remoteExtentInfo.FileID, err.Error())
|
||||
goto RETRY
|
||||
}
|
||||
|
||||
@ -874,8 +874,8 @@ func (e *Extent) getExtentWithHoleAvailableOffset(offset int64) (newOffset, newE
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if newOffset-offset > util.BlockSize {
|
||||
newOffset = offset + util.BlockSize
|
||||
if newOffset-offset > util.ExtentSize {
|
||||
newOffset = offset + util.ExtentSize
|
||||
}
|
||||
if newEnd-newOffset > util.BlockSize {
|
||||
newEnd = newOffset + util.BlockSize
|
||||
|
||||
@ -19,6 +19,7 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
"syscall"
|
||||
"testing"
|
||||
|
||||
@ -206,6 +207,15 @@ func tinyExtentRepairTest(t *testing.T, name string) {
|
||||
for _, v := range data {
|
||||
require.EqualValues(t, v, 0)
|
||||
}
|
||||
|
||||
size = e.Size()
|
||||
size1 := util.ExtentSize
|
||||
err = e.TinyExtentRecover(nil, size, int64(size1), 0, true)
|
||||
require.NoError(t, err)
|
||||
_, err = e.GetFile().Seek(size, storage.SEEK_DATA)
|
||||
require.True(t, strings.Contains(err.Error(), syscall.ENXIO.Error()))
|
||||
require.True(t, e.Size() == int64(size1)+size)
|
||||
|
||||
size = e.Size()
|
||||
data = []byte(dataStr)
|
||||
err = e.TinyExtentRecover(data, size, int64(len(data)), 0, false)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user