Skip to content
This repository was archived by the owner on Feb 26, 2020. It is now read-only.

Commit 14f17ab

Browse files
author
Xavier Lucas
committed
Bugfix: lookup fail after mount when no container is specified fixes #18
Signed-off-by: Xavier Lucas <xavier.lucas@corp.ovh.com>
1 parent 2c8e231 commit 14f17ab

4 files changed

Lines changed: 23 additions & 5 deletions

File tree

svfs/directory.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ var (
1717
)
1818

1919
type Directory struct {
20+
apex bool
2021
name string
2122
path string
2223
s *swift.Connection
@@ -148,7 +149,7 @@ func (d *Directory) ReadDirAll(ctx context.Context) (entries []fuse.Dirent, err
148149

149150
func (d *Directory) Lookup(ctx context.Context, req *fuse.LookupRequest, resp *fuse.LookupResponse) (fs.Node, error) {
150151
// Get children if this node was evicted from the kernel cache
151-
if len(d.children) == 0 && d.c != nil {
152+
if len(d.children) == 0 {
152153
d.ReadDirAll(ctx)
153154
}
154155

svfs/fs.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,17 @@ func (s *SVFS) Root() (fs.Node, error) {
4141

4242
return &Container{
4343
Directory: &Directory{
44-
s: s.s,
45-
c: &baseC,
44+
apex: true,
45+
s: s.s,
46+
c: &baseC,
4647
},
4748
cs: &segC,
4849
}, nil
4950
}
5051
return &Root{
5152
Directory: &Directory{
52-
s: s.s,
53+
apex: true,
54+
s: s.s,
5355
},
5456
}, nil
5557
}

svfs/object.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ func (o *Object) open(mode fuse.OpenFlags) (oh *ObjectHandle, err error) {
5757
}
5858

5959
func (o *Object) Open(ctx context.Context, req *fuse.OpenRequest, resp *fuse.OpenResponse) (fs.Handle, error) {
60-
resp.Flags = fuse.OpenDirectIO
6160
return o.open(req.Flags)
6261
}
6362

svfs/root.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,22 @@ func (r *Root) ReadDirAll(ctx context.Context) (entries []fuse.Dirent, err error
9191
return entries, nil
9292
}
9393

94+
func (r *Root) Lookup(ctx context.Context, req *fuse.LookupRequest, resp *fuse.LookupResponse) (fs.Node, error) {
95+
if len(r.children) == 0 {
96+
r.ReadDirAll(ctx)
97+
}
98+
99+
for _, item := range r.children {
100+
if item.Name() == req.Name {
101+
if n, ok := item.(*Container); ok {
102+
return n, nil
103+
}
104+
}
105+
}
106+
107+
return nil, fuse.ENOENT
108+
}
109+
94110
var (
95111
_ Node = (*Root)(nil)
96112
_ fs.Node = (*Root)(nil)

0 commit comments

Comments
 (0)