mirror of
https://github.com/cubefs/cubefs.git
synced 2026-08-02 02:00:56 +00:00
feat(metanode): optimize memory usage of metanode, fields be allocted as needed in multi snapshot
close:#22785952 Signed-off-by: leonrayang <chl696@sina.com>
This commit is contained in:
parent
244eeee62b
commit
dd3fd9616c
@ -36,6 +36,12 @@ type ExtendMultiSnap struct {
|
||||
versionMu sync.RWMutex
|
||||
}
|
||||
|
||||
type ExtendMultiSnap struct {
|
||||
verSeq uint64
|
||||
multiVers []*Extend
|
||||
versionMu sync.RWMutex
|
||||
}
|
||||
|
||||
type Extend struct {
|
||||
inode uint64
|
||||
dataMap map[string][]byte
|
||||
@ -65,6 +71,27 @@ func (e *Extend) setVersion(seq uint64) {
|
||||
e.multiSnap.verSeq = seq
|
||||
}
|
||||
|
||||
func (e *Extend) getVersion() uint64 {
|
||||
if e.multiSnap == nil {
|
||||
return 0
|
||||
}
|
||||
return e.multiSnap.verSeq
|
||||
}
|
||||
|
||||
func (e *Extend) genSnap() {
|
||||
if e.multiSnap == nil {
|
||||
e.multiSnap = &ExtendMultiSnap{}
|
||||
}
|
||||
e.multiSnap.multiVers = append([]*Extend{e.Copy().(*Extend)}, e.multiSnap.multiVers...)
|
||||
}
|
||||
|
||||
func (e *Extend) setVersion(seq uint64) {
|
||||
if e.multiSnap == nil {
|
||||
e.multiSnap = &ExtendMultiSnap{}
|
||||
}
|
||||
e.multiSnap.verSeq = seq
|
||||
}
|
||||
|
||||
func (e *Extend) checkSequence() (err error) {
|
||||
if e.multiSnap == nil {
|
||||
return
|
||||
|
||||
@ -1435,7 +1435,7 @@ func TestExtendSerialization(t *testing.T) {
|
||||
}
|
||||
|
||||
checkFunc()
|
||||
mv.multiSnap = &ExtendMultiSnap{verSeq: 101}
|
||||
mv.multiSnap = &ExtendMultiSnap{}
|
||||
mv.multiSnap.multiVers = []*Extend{
|
||||
{
|
||||
inode: 789,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user