From 630f72f8c577fba9ca11fee7694e0748af03fadf Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Mon, 20 Jan 2020 00:00:08 -0800 Subject: [PATCH] mount: able to trim a file --- weed/filesys/file.go | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/weed/filesys/file.go b/weed/filesys/file.go index 7e562eabc..622ba6f57 100644 --- a/weed/filesys/file.go +++ b/weed/filesys/file.go @@ -102,9 +102,18 @@ func (file *File) Setattr(ctx context.Context, req *fuse.SetattrRequest, resp *f if req.Valid.Size() { glog.V(3).Infof("%v file setattr set size=%v", file.fullpath(), req.Size) - if req.Size == 0 { + if req.Size < filer2.TotalSize(file.entry.Chunks) { // fmt.Printf("truncate %v \n", fullPath) - file.entry.Chunks = nil + var chunks []*filer_pb.FileChunk + for _, chunk := range file.entry.Chunks { + if uint64(chunk.Offset)+chunk.Size > req.Size { + chunk.Size = req.Size - uint64(chunk.Offset) + } + if chunk.Size > 0 { + chunks = append(chunks, chunk) + } + } + file.entry.Chunks = chunks file.entryViewCache = nil } file.entry.Attributes.FileSize = req.Size