Skip to content

Commit

Permalink
resolve fission.go truncate error
Browse files Browse the repository at this point in the history
  • Loading branch information
brandon-m-wang committed Feb 24, 2022
1 parent 52be7ac commit 746c944
Showing 1 changed file with 22 additions and 14 deletions.
36 changes: 22 additions & 14 deletions iclient/iclientpkg/fission.go
Original file line number Diff line number Diff line change
Expand Up @@ -335,47 +335,55 @@ Retry:
}
}

inode.dirty = true

inode.inodeHeadV1.StatusChangeTime = startTime

if (setAttrIn.Valid & fission.SetAttrInValidMode) != 0 {
inode.dirty = true
inode.inodeHeadV1.Mode = uint16(setAttrIn.Mode & uint32(syscall.S_IRWXU|syscall.S_IRWXG|syscall.S_IRWXO))
}

if (setAttrIn.Valid & fission.SetAttrInValidUID) != 0 {
inode.dirty = true
inode.inodeHeadV1.UserID = uint64(setAttrIn.UID)
}

if (setAttrIn.Valid & fission.SetAttrInValidGID) != 0 {
inode.dirty = true
inode.inodeHeadV1.GroupID = uint64(setAttrIn.GID)
}

if (setAttrIn.Valid & fission.SetAttrInValidSize) != 0 {
if setAttrIn.Size < inode.inodeHeadV1.Size {
if inode.payload == nil {
err = inode.oldPayload()
if nil != err {
logFatalf("inode.oldPayload() failed: %v", err)
if setAttrIn.Size != inode.inodeHeadV1.Size {
inode.dirty = true
inode.inodeHeadV1.ModificationTime = startTime

if setAttrIn.Size < inode.inodeHeadV1.Size {
if inode.payload == nil {
err = inode.oldPayload()
if nil != err {
logFatalf("inode.oldPayload() failed: %v", err)
}
}
}

inode.unmapExtent(setAttrIn.Size, 0)
inode.unmapExtent(setAttrIn.Size, 0)
}
inode.inodeHeadV1.Size = setAttrIn.Size
}
inode.inodeHeadV1.Size = setAttrIn.Size
}

if (setAttrIn.Valid & fission.SetAttrInValidMTime) != 0 {
inode.dirty = true
if (setAttrIn.Valid & fission.SetAttrInValidMTimeNow) != 0 {
inode.inodeHeadV1.ModificationTime = startTime
} else {
inode.inodeHeadV1.ModificationTime = time.Unix(int64(setAttrIn.MTimeSec), int64(setAttrIn.MTimeNSec))
}
}

inodeNumber = inode.inodeNumber
if inode.dirty {
inode.inodeHeadV1.StatusChangeTime = startTime
flushInodesInSlice([]*inodeStruct{inode})
}

flushInodesInSlice([]*inodeStruct{inode})
inodeNumber = inode.inodeNumber

inodeLockRequest.unlockAll()

Expand Down

0 comments on commit 746c944

Please sign in to comment.