organize a bit better for temp file directory

This commit is contained in:
Chris Lu 2021-05-21 13:02:18 -07:00
parent e8b7d4ad64
commit 2f136a04a1
2 changed files with 22 additions and 15 deletions

View file

@ -6,7 +6,6 @@ import (
"github.com/chrislusf/seaweedfs/weed/pb/filer_pb" "github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
"io" "io"
"os" "os"
"path/filepath"
"sync" "sync"
"time" "time"
) )
@ -24,14 +23,6 @@ type TempFileDirtyPages struct {
replication string replication string
} }
var (
tmpDir = filepath.Join(os.TempDir(), "sw")
)
func init() {
os.Mkdir(tmpDir, 0755)
}
func newTempFileDirtyPages(file *File, writeOnly bool) *TempFileDirtyPages { func newTempFileDirtyPages(file *File, writeOnly bool) *TempFileDirtyPages {
tempFile := &TempFileDirtyPages{ tempFile := &TempFileDirtyPages{
@ -49,7 +40,7 @@ func (pages *TempFileDirtyPages) AddPage(offset int64, data []byte) {
defer pages.pageAddLock.Unlock() defer pages.pageAddLock.Unlock()
if pages.tf == nil { if pages.tf == nil {
tf, err := os.CreateTemp(tmpDir, "") tf, err := os.CreateTemp(pages.f.wfs.option.getTempFilePageDir(), "")
if err != nil { if err != nil {
glog.Errorf("create temp file: %v", err) glog.Errorf("create temp file: %v", err)
pages.lastErr = err pages.lastErr = err

View file

@ -10,6 +10,7 @@ import (
"math/rand" "math/rand"
"os" "os"
"path" "path"
"path/filepath"
"sync" "sync"
"time" "time"
@ -54,6 +55,9 @@ type Option struct {
VolumeServerAccess string // how to access volume servers VolumeServerAccess string // how to access volume servers
Cipher bool // whether encrypt data on volume server Cipher bool // whether encrypt data on volume server
UidGidMapper *meta_cache.UidGidMapper UidGidMapper *meta_cache.UidGidMapper
uniqueCacheDir string
uniqueCacheTempPageDir string
} }
var _ = fs.FS(&WFS{}) var _ = fs.FS(&WFS{})
@ -98,14 +102,12 @@ func NewSeaweedFileSystem(option *Option) *WFS {
signature: util.RandomInt32(), signature: util.RandomInt32(),
} }
wfs.option.filerIndex = rand.Intn(len(option.FilerAddresses)) wfs.option.filerIndex = rand.Intn(len(option.FilerAddresses))
cacheUniqueId := util.Md5String([]byte(option.MountDirectory + option.FilerGrpcAddresses[0] + option.FilerMountRootPath + util.Version()))[0:8] wfs.option.setupUniqueCacheDirectory()
cacheDir := path.Join(option.CacheDir, cacheUniqueId)
if option.CacheSizeMB > 0 { if option.CacheSizeMB > 0 {
os.MkdirAll(cacheDir, os.FileMode(0777)&^option.Umask) wfs.chunkCache = chunk_cache.NewTieredChunkCache(256, option.getUniqueCacheDir(), option.CacheSizeMB, 1024*1024)
wfs.chunkCache = chunk_cache.NewTieredChunkCache(256, cacheDir, option.CacheSizeMB, 1024*1024)
} }
wfs.metaCache = meta_cache.NewMetaCache(path.Join(cacheDir, "meta"), util.FullPath(option.FilerMountRootPath), option.UidGidMapper, func(filePath util.FullPath) { wfs.metaCache = meta_cache.NewMetaCache(path.Join(option.getUniqueCacheDir(), "meta"), util.FullPath(option.FilerMountRootPath), option.UidGidMapper, func(filePath util.FullPath) {
fsNode := NodeWithId(filePath.AsInode()) fsNode := NodeWithId(filePath.AsInode())
if err := wfs.Server.InvalidateNodeData(fsNode); err != nil { if err := wfs.Server.InvalidateNodeData(fsNode); err != nil {
@ -271,6 +273,20 @@ func (wfs *WFS) getCurrentFiler() string {
return wfs.option.FilerAddresses[wfs.option.filerIndex] return wfs.option.FilerAddresses[wfs.option.filerIndex]
} }
func (option *Option) setupUniqueCacheDirectory() {
cacheUniqueId := util.Md5String([]byte(option.MountDirectory + option.FilerGrpcAddresses[0] + option.FilerMountRootPath + util.Version()))[0:8]
option.uniqueCacheDir = path.Join(option.CacheDir, cacheUniqueId)
option.uniqueCacheTempPageDir = filepath.Join(option.uniqueCacheDir, "sw")
os.MkdirAll(option.uniqueCacheTempPageDir, os.FileMode(0777)&^option.Umask)
}
func (option *Option) getTempFilePageDir() string {
return option.uniqueCacheTempPageDir
}
func (option *Option) getUniqueCacheDir() string {
return option.uniqueCacheDir
}
type NodeWithId uint64 type NodeWithId uint64
func (n NodeWithId) Id() uint64 { func (n NodeWithId) Id() uint64 {