func fillAttrOut(out *fuse.AttrOut, i *maggiefs.Inode) { // fuse.Attr out.Ino = i.Inodeid out.Size = i.Length out.Blocks = numBlocks(i.Length, maggiefs.PAGESIZE) out.Atime = uint64(0) out.Mtime = uint64(i.Mtime) // Mtime is user modifiable and is the last time data changed out.Ctime = uint64(i.Ctime) // Ctime is tracked by the FS and changes when attrs or data change out.Atimensec = uint32(0) out.Mtimensec = uint32(0) out.Ctimensec = uint32(0) out.Mode = i.FullMode() out.Nlink = i.Nlink out.Uid = i.Uid out.Gid = i.Gid out.Rdev = uint32(0) // regular file, not block dvice out.Blksize = maggiefs.PAGESIZE // fuse.AttrOut out.AttrValid = uint64(0) out.AttrValidNsec = uint32(100) }