aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchrislu <chris.lu@gmail.com>2022-02-28 12:16:53 -0800
committerchrislu <chris.lu@gmail.com>2022-02-28 12:16:53 -0800
commitfcf371444356b98d7f1c169068ee2a890889c122 (patch)
tree20ebab68fb9cc96de6249b184fb685c538c7e089
parentca0cd81a75b1bdce429ab3b32724bf6a40097a03 (diff)
downloadseaweedfs-fcf371444356b98d7f1c169068ee2a890889c122.tar.xz
seaweedfs-fcf371444356b98d7f1c169068ee2a890889c122.zip
mount: add back support for filer.path
-rw-r--r--weed/mount/inode_to_path.go6
-rw-r--r--weed/mount/meta_cache/meta_cache.go5
-rw-r--r--weed/mount/meta_cache/meta_cache_init.go2
-rw-r--r--weed/mount/weedfs.go16
4 files changed, 17 insertions, 12 deletions
diff --git a/weed/mount/inode_to_path.go b/weed/mount/inode_to_path.go
index 1e2126b74..cae0144bc 100644
--- a/weed/mount/inode_to_path.go
+++ b/weed/mount/inode_to_path.go
@@ -21,13 +21,13 @@ type InodeEntry struct {
isChildrenCached bool
}
-func NewInodeToPath() *InodeToPath {
+func NewInodeToPath(root util.FullPath) *InodeToPath {
t := &InodeToPath{
inode2path: make(map[uint64]*InodeEntry),
path2inode: make(map[util.FullPath]uint64),
}
- t.inode2path[1] = &InodeEntry{"/", 1, true, false}
- t.path2inode["/"] = 1
+ t.inode2path[1] = &InodeEntry{root, 1, true, false}
+ t.path2inode[root] = 1
return t
}
diff --git a/weed/mount/meta_cache/meta_cache.go b/weed/mount/meta_cache/meta_cache.go
index 994f00463..8c434787a 100644
--- a/weed/mount/meta_cache/meta_cache.go
+++ b/weed/mount/meta_cache/meta_cache.go
@@ -14,6 +14,7 @@ import (
// e.g. fill fileId field for chunks
type MetaCache struct {
+ root util.FullPath
localStore filer.VirtualFilerStore
// sync.RWMutex
uidGidMapper *UidGidMapper
@@ -22,8 +23,10 @@ type MetaCache struct {
invalidateFunc func(fullpath util.FullPath, entry *filer_pb.Entry)
}
-func NewMetaCache(dbFolder string, uidGidMapper *UidGidMapper, markCachedFn func(path util.FullPath), isCachedFn func(path util.FullPath) bool, invalidateFunc func(util.FullPath, *filer_pb.Entry)) *MetaCache {
+func NewMetaCache(dbFolder string, uidGidMapper *UidGidMapper, root util.FullPath,
+ markCachedFn func(path util.FullPath), isCachedFn func(path util.FullPath) bool, invalidateFunc func(util.FullPath, *filer_pb.Entry)) *MetaCache {
return &MetaCache{
+ root: root,
localStore: openMetaStore(dbFolder),
markCachedFn: markCachedFn,
isCachedFn: isCachedFn,
diff --git a/weed/mount/meta_cache/meta_cache_init.go b/weed/mount/meta_cache/meta_cache_init.go
index ef14fbb3f..679cb953d 100644
--- a/weed/mount/meta_cache/meta_cache_init.go
+++ b/weed/mount/meta_cache/meta_cache_init.go
@@ -33,7 +33,7 @@ func EnsureVisited(mc *MetaCache, client filer_pb.FilerClient, dirPath util.Full
}
// continue to parent directory
- if currentPath != "/" {
+ if currentPath != mc.root {
parent, _ := currentPath.DirAndName()
currentPath = util.FullPath(parent)
} else {
diff --git a/weed/mount/weedfs.go b/weed/mount/weedfs.go
index 157d385c7..0e5489198 100644
--- a/weed/mount/weedfs.go
+++ b/weed/mount/weedfs.go
@@ -73,7 +73,7 @@ func NewSeaweedFileSystem(option *Option) *WFS {
RawFileSystem: fuse.NewDefaultRawFileSystem(),
option: option,
signature: util.RandomInt32(),
- inodeToPath: NewInodeToPath(),
+ inodeToPath: NewInodeToPath(util.FullPath(option.FilerMountRootPath)),
fhmap: NewFileHandleToInode(),
dhmap: NewDirectoryHandleToInode(),
}
@@ -84,12 +84,14 @@ func NewSeaweedFileSystem(option *Option) *WFS {
wfs.chunkCache = chunk_cache.NewTieredChunkCache(256, option.getUniqueCacheDir(), option.CacheSizeMB, 1024*1024)
}
- wfs.metaCache = meta_cache.NewMetaCache(path.Join(option.getUniqueCacheDir(), "meta"), option.UidGidMapper, func(path util.FullPath) {
- wfs.inodeToPath.MarkChildrenCached(path)
- }, func(path util.FullPath) bool {
- return wfs.inodeToPath.IsChildrenCached(path)
- }, func(filePath util.FullPath, entry *filer_pb.Entry) {
- })
+ wfs.metaCache = meta_cache.NewMetaCache(path.Join(option.getUniqueCacheDir(), "meta"), option.UidGidMapper,
+ util.FullPath(option.FilerMountRootPath),
+ func(path util.FullPath) {
+ wfs.inodeToPath.MarkChildrenCached(path)
+ }, func(path util.FullPath) bool {
+ return wfs.inodeToPath.IsChildrenCached(path)
+ }, func(filePath util.FullPath, entry *filer_pb.Entry) {
+ })
grace.OnInterrupt(func() {
wfs.metaCache.Shutdown()
os.RemoveAll(option.getUniqueCacheDir())