diff --git a/pkg/meta/redis.go b/pkg/meta/redis.go index db373818d38e..59faa7f44189 100644 --- a/pkg/meta/redis.go +++ b/pkg/meta/redis.go @@ -2268,7 +2268,7 @@ func (m *redisMeta) Write(ctx Context, inode Ino, indx uint32, off uint32, slice return nil }) if err == nil { - needCompact = rpush.Val()%100 == 99 + needCompact = rpush.Val()%100 == 99 || rpush.Val() > 350 } return err }, m.inodeKey(inode)) diff --git a/pkg/meta/sql.go b/pkg/meta/sql.go index 3ce0491c5fb8..c358fe1ee81a 100644 --- a/pkg/meta/sql.go +++ b/pkg/meta/sql.go @@ -2276,7 +2276,8 @@ func (m *dbMeta) Write(ctx Context, inode Ino, indx uint32, off uint32, slice Sl } _, err = s.Cols("length", "mtime", "ctime", "mtimensec", "ctimensec").Update(&nodeAttr, &node{Inode: inode}) if err == nil { - needCompact = (len(ck.Slices)/sliceBytes)%100 == 99 + ns := len(ck.Slices) / sliceBytes // number of slices + needCompact = ns%100 == 99 || ns > 350 } return err }, inode) diff --git a/pkg/meta/tkv.go b/pkg/meta/tkv.go index 1f9c2ae755c8..14c910ab0304 100644 --- a/pkg/meta/tkv.go +++ b/pkg/meta/tkv.go @@ -1957,7 +1957,8 @@ func (m *kvMeta) Write(ctx Context, inode Ino, indx uint32, off uint32, slice Sl val = append(rs[1], val...) tx.set(m.inodeKey(inode), m.marshal(&attr)) tx.set(m.chunkKey(inode, indx), val) - needCompact = (len(val)/sliceBytes)%100 == 99 + ns := len(val) / sliceBytes // number of slices + needCompact = ns%100 == 99 || ns > 350 return nil }, inode) if err == nil {