From 6e126ed79db0e484dfe9db5724fc21df1e7627b2 Mon Sep 17 00:00:00 2001 From: Tommi Virtanen Date: Tue, 1 Sep 2015 15:34:12 -0700 Subject: [PATCH] fuse/ipns: Only change file size in Setattr if asked to This used to cause files e.g. being edited with `vi` to become 0-size. License: MIT Signed-off-by: Tommi Virtanen --- fuse/ipns/ipns_unix.go | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/fuse/ipns/ipns_unix.go b/fuse/ipns/ipns_unix.go index 91c3db55d..c6759531d 100644 --- a/fuse/ipns/ipns_unix.go +++ b/fuse/ipns/ipns_unix.go @@ -335,15 +335,17 @@ func (fi *File) Flush(ctx context.Context, req *fuse.FlushRequest) error { } func (fi *File) Setattr(ctx context.Context, req *fuse.SetattrRequest, resp *fuse.SetattrResponse) error { - cursize, err := fi.fi.Size() - if err != nil { - return err - } - if cursize != int64(req.Size) { - err := fi.fi.Truncate(int64(req.Size)) + if req.Valid.Size() { + cursize, err := fi.fi.Size() if err != nil { return err } + if cursize != int64(req.Size) { + err := fi.fi.Truncate(int64(req.Size)) + if err != nil { + return err + } + } } return nil }