Fixed permission errors.

geesefs-0-30-9
Aaron Jacobs 2015-02-27 14:42:22 +11:00
parent 070528d9e4
commit 985bd0ac2b
3 changed files with 18 additions and 4 deletions

View File

@ -96,11 +96,17 @@ const RootInodeID InodeID = InodeID(bazilfuse.RootID)
// Attributes for a file or directory inode. Corresponds to struct inode (cf.
// http://goo.gl/tvYyQt).
type InodeAttributes struct {
Size uint64
Mode os.FileMode
Size uint64
Mode os.FileMode
// Time information
Atime time.Time
Mtime time.Time
Crtime time.Time
// Owner information
Uid uint32
Gid uint32
}
// A generation number for an inode. Irrelevant for file systems that won't be

View File

@ -22,6 +22,10 @@ import (
type HelloFS struct {
fuseutil.NotImplementedFileSystem
Clock timeutil.Clock
// Set by Init.
Uid uint32
Gid uint32
}
var _ fuse.FileSystem = &HelloFS{}
@ -48,8 +52,6 @@ var gInodeInfo = map[fuse.InodeID]inodeInfo{
// root
rootInode: inodeInfo{
attributes: fuse.InodeAttributes{
// TODO(jacobsa): Why do we get premission denied errors when this is
// 0500?
Mode: 0500 | os.ModeDir,
},
dir: true,
@ -119,6 +121,8 @@ func findChildInode(
func (fs *HelloFS) patchAttributes(
attr *fuse.InodeAttributes) {
now := fs.Clock.Now()
attr.Uid = fs.Uid
attr.Gid = fs.Gid
attr.Atime = now
attr.Mtime = now
attr.Crtime = now
@ -129,6 +133,8 @@ func (fs *HelloFS) Init(
req *fuse.InitRequest) (
resp *fuse.InitResponse, err error) {
resp = &fuse.InitResponse{}
fs.Uid = req.Uid
fs.Gid = req.Gid
return
}

View File

@ -224,5 +224,7 @@ func convertAttributes(inode InodeID, attr InodeAttributes) bazilfuse.Attr {
Atime: attr.Atime,
Mtime: attr.Mtime,
Crtime: attr.Crtime,
Uid: attr.Uid,
Gid: attr.Gid,
}
}