@@ -10,18 +10,18 @@ import (
1010 "github.com/hanwen/go-fuse/v2/fs"
1111)
1212
13- type dmanagerRoot struct {
13+ type rootNode struct {
1414 fs.Inode
1515}
1616
1717// implement the interfaces
18- var _ = (fs .NodeOnAdder )((* dmanagerRoot )(nil ))
19- var _ = (fs .NodeRenamer )((* dmanagerRoot )(nil ))
20- var _ = (fs .NodeRmdirer )((* dmanagerRoot )(nil ))
18+ var _ = (fs .NodeOnAdder )((* rootNode )(nil ))
19+ var _ = (fs .NodeRenamer )((* rootNode )(nil ))
20+ var _ = (fs .NodeRmdirer )((* rootNode )(nil ))
2121
2222// OnAdd is called on mounting the file system. Use it to populate
2323// the file system tree.
24- func (root * dmanagerRoot ) OnAdd (ctx context.Context ) {
24+ func (root * rootNode ) OnAdd (ctx context.Context ) {
2525 root .debug ("Init files" )
2626
2727 err := data .loadUserAttributes ()
@@ -39,40 +39,22 @@ func (root *dmanagerRoot) OnAdd(ctx context.Context) {
3939
4040 // Create namespace folder
4141 if nsp == nil {
42- nsp = root .Inode .NewInode (ctx , & fs.Inode {}, fs.StableAttr {
42+ nsp = root .Inode .NewInode (ctx , & namespaceNode {
43+ namespace : nsName ,
44+ groups : namespace .Groups ,
45+ }, fs.StableAttr {
4346 Mode : syscall .S_IFDIR ,
4447 })
45- root .AddChild (nsName , nsp , true )
46- }
47-
48- // Use a no_group folder for files
49- // not associated to a groud
50- if len (namespace .Groups ) == 0 {
51- namespace .Groups = []string {"no_group" }
52- }
5348
54- // Add groups to namespace
55- for _ , group := range namespace .Groups {
56- gp := nsp .GetChild (group )
57- if gp == nil {
58- gp = nsp .NewInode (ctx , & groupInode {
59- group : group ,
60- namespace : namespace .Name ,
61- }, fs.StableAttr {
62- Mode : syscall .S_IFDIR ,
63- })
64-
65- nsp .AddChild (group , gp , true )
66- }
49+ root .AddChild (nsName , nsp , true )
6750 }
6851 }
6952
7053 root .debug ("Init files success" )
71-
7254}
7355
74- // Unlink if virtual file was unlinked
75- func (root * dmanagerRoot ) Rmdir (ctx context.Context , name string ) syscall.Errno {
56+ // Delete Namespace if virtual file was unlinked
57+ func (root * rootNode ) Rmdir (ctx context.Context , name string ) syscall.Errno {
7658 namespace := addNSName (name , data .libdm .Config )
7759
7860 // wait 2 seconds to ensure, user didn't cancel
@@ -91,12 +73,12 @@ func (root *dmanagerRoot) Rmdir(ctx context.Context, name string) syscall.Errno
9173 return 0
9274}
9375
94- // Rename if virtual file was renamed
95- func (root * dmanagerRoot ) Rename (ctx context.Context , name string , newParent fs.InodeEmbedder , newName string , flags uint32 ) syscall.Errno {
76+ // Rename namespace if virtual file was renamed
77+ func (root * rootNode ) Rename (ctx context.Context , name string , newParent fs.InodeEmbedder , newName string , flags uint32 ) syscall.Errno {
9678 // Don't rename default ns
9779 if name == "default" {
9880 fmt .Println ("Can't rename default namespace!" )
99- return syscall .EACCES
81+ return syscall .EPERM
10082 }
10183
10284 // Get real namespace names
@@ -115,7 +97,7 @@ func (root *dmanagerRoot) Rename(ctx context.Context, name string, newParent fs.
11597 return 0
11698}
11799
118- func (root * dmanagerRoot ) debug (arg ... interface {}) {
100+ func (root * rootNode ) debug (arg ... interface {}) {
119101 if data .mounter .Debug {
120102 fmt .Println (arg ... )
121103 }
0 commit comments