aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--weed/filesys/dir.go11
-rw-r--r--weed/filesys/dir_link.go13
-rw-r--r--weed/filesys/file.go2
-rw-r--r--weed/filesys/filehandle.go1
-rw-r--r--weed/filesys/wfs.go3
5 files changed, 14 insertions, 16 deletions
diff --git a/weed/filesys/dir.go b/weed/filesys/dir.go
index 087f31588..f64b4ea80 100644
--- a/weed/filesys/dir.go
+++ b/weed/filesys/dir.go
@@ -104,13 +104,12 @@ func (dir *Dir) Fsync(ctx context.Context, req *fuse.FsyncRequest) error {
return nil
}
-func (dir *Dir) newFile(name string, entry *filer_pb.Entry) fs.Node {
+func (dir *Dir) newFile(name string) fs.Node {
f := dir.wfs.fsNodeCache.EnsureFsNode(util.NewFullPath(dir.FullPath(), name), func() fs.Node {
return &File{
Name: name,
dir: dir,
wfs: dir.wfs,
- entry: entry,
}
})
f.(*File).dir = dir // in case dir node was created later
@@ -144,7 +143,7 @@ func (dir *Dir) Create(ctx context.Context, req *fuse.CreateRequest,
return node, nil, nil
}
- node = dir.newFile(req.Name, request.Entry)
+ node = dir.newFile(req.Name)
file := node.(*File)
fh := dir.wfs.AcquireHandle(file, req.Uid, req.Gid)
return file, fh, nil
@@ -157,13 +156,13 @@ func (dir *Dir) Mknod(ctx context.Context, req *fuse.MknodRequest) (fs.Node, err
return nil, fuse.EPERM
}
- request, err := dir.doCreateEntry(req.Name, req.Mode, req.Uid, req.Gid, false)
+ _, err := dir.doCreateEntry(req.Name, req.Mode, req.Uid, req.Gid, false)
if err != nil {
return nil, err
}
var node fs.Node
- node = dir.newFile(req.Name, request.Entry)
+ node = dir.newFile(req.Name)
return node, nil
}
@@ -294,7 +293,7 @@ func (dir *Dir) Lookup(ctx context.Context, req *fuse.LookupRequest, resp *fuse.
if entry.IsDirectory {
node = dir.newDirectory(fullFilePath)
} else {
- node = dir.newFile(req.Name, entry)
+ node = dir.newFile(req.Name)
}
// resp.EntryValid = time.Second
diff --git a/weed/filesys/dir_link.go b/weed/filesys/dir_link.go
index 6266e492d..de330e7a4 100644
--- a/weed/filesys/dir_link.go
+++ b/weed/filesys/dir_link.go
@@ -35,11 +35,11 @@ func (dir *Dir) Link(ctx context.Context, req *fuse.LinkRequest, old fs.Node) (f
glog.V(4).Infof("Link: %v/%v -> %v/%v", oldFile.dir.FullPath(), oldFile.Name, dir.FullPath(), req.NewName)
- if _, err := oldFile.maybeLoadEntry(ctx); err != nil {
+ oldEntry, err := oldFile.maybeLoadEntry(ctx)
+ if err != nil {
return nil, err
}
- oldEntry := oldFile.getEntry()
if oldEntry == nil {
return nil, fuse.EIO
}
@@ -72,7 +72,7 @@ func (dir *Dir) Link(ctx context.Context, req *fuse.LinkRequest, old fs.Node) (f
}
// apply changes to the filer, and also apply to local metaCache
- err := dir.wfs.WithFilerClient(func(client filer_pb.SeaweedFilerClient) error {
+ err = dir.wfs.WithFilerClient(func(client filer_pb.SeaweedFilerClient) error {
dir.wfs.mapPbIdFromLocalToFiler(request.Entry)
defer dir.wfs.mapPbIdFromFilerToLocal(request.Entry)
@@ -97,11 +97,8 @@ func (dir *Dir) Link(ctx context.Context, req *fuse.LinkRequest, old fs.Node) (f
}
// create new file node
- newNode := dir.newFile(req.NewName, request.Entry)
+ newNode := dir.newFile(req.NewName)
newFile := newNode.(*File)
- if _, err := newFile.maybeLoadEntry(ctx); err != nil {
- return nil, err
- }
return newFile, err
@@ -147,7 +144,7 @@ func (dir *Dir) Symlink(ctx context.Context, req *fuse.SymlinkRequest) (fs.Node,
return nil
})
- symlink := dir.newFile(req.NewName, request.Entry)
+ symlink := dir.newFile(req.NewName)
return symlink, err
diff --git a/weed/filesys/file.go b/weed/filesys/file.go
index 2d1c9a86e..a6bc734f3 100644
--- a/weed/filesys/file.go
+++ b/weed/filesys/file.go
@@ -286,7 +286,7 @@ func (file *File) maybeLoadEntry(ctx context.Context) (entry *filer_pb.Entry, er
return entry, err
}
if entry != nil {
- file.entry = entry
+ // file.entry = entry
} else {
glog.Warningf("maybeLoadEntry not found entry %s/%s: %v", file.dir.FullPath(), file.Name, err)
}
diff --git a/weed/filesys/filehandle.go b/weed/filesys/filehandle.go
index 0236fd1cd..240d25a3d 100644
--- a/weed/filesys/filehandle.go
+++ b/weed/filesys/filehandle.go
@@ -211,6 +211,7 @@ func (fh *FileHandle) Release(ctx context.Context, req *fuse.ReleaseRequest) err
if fh.f.isOpen == 1 {
fh.f.isOpen--
+ fh.f.entry = nil
fh.entryViewCache = nil
fh.reader = nil
diff --git a/weed/filesys/wfs.go b/weed/filesys/wfs.go
index c2937f914..4b73aaa05 100644
--- a/weed/filesys/wfs.go
+++ b/weed/filesys/wfs.go
@@ -162,8 +162,9 @@ func (wfs *WFS) AcquireHandle(file *File, uid, gid uint32) (fileHandle *FileHand
}
}
+ entry, _ := file.maybeLoadEntry(context.Background())
+ file.entry = entry
fileHandle = newFileHandle(file, uid, gid)
- file.maybeLoadEntry(context.Background())
file.isOpen++
wfs.handles[inodeId] = fileHandle