add mountOptions.chunkSizeLimitMB, remove cmdMount.IsDebug

This commit is contained in:
Chris Lu 2018-05-28 13:42:25 -07:00
parent 8ab7dd9d08
commit 5c4480ec6c
4 changed files with 17 additions and 8 deletions

View file

@ -1,10 +1,11 @@
package command
type MountOptions struct {
filer *string
dir *string
collection *string
replication *string
filer *string
dir *string
collection *string
replication *string
chunkSizeLimitMB *int
}
var (
@ -13,11 +14,11 @@ var (
func init() {
cmdMount.Run = runMount // break init cycle
cmdMount.IsDebug = cmdMount.Flag.Bool("debug", false, "verbose debug information")
mountOptions.filer = cmdMount.Flag.String("filer", "localhost:8888", "weed filer location")
mountOptions.dir = cmdMount.Flag.String("dir", ".", "mount weed filer to this directory")
mountOptions.collection = cmdMount.Flag.String("collection", "", "collection to create the files")
mountOptions.replication = cmdMount.Flag.String("replication", "000", "replication to create to files")
mountOptions.chunkSizeLimitMB = cmdMount.Flag.Int("chunkSizeLimitMB", 0, "if set, limit the chunk size in MB")
}
var cmdMount = &Command{

View file

@ -48,7 +48,7 @@ func runMount(cmd *Command, args []string) bool {
})
err = fs.Serve(c, filesys.NewSeaweedFileSystem(
*mountOptions.filer, *mountOptions.collection, *mountOptions.replication))
*mountOptions.filer, *mountOptions.collection, *mountOptions.replication, *mountOptions.chunkSizeLimitMB))
if err != nil {
fuse.Unmount(*mountOptions.dir)
}

View file

@ -59,7 +59,13 @@ func (pages *ContinuousDirtyPages) AddPage(ctx context.Context, offset int64, da
Offset: offset,
Data: data,
})
return nil, nil
if pages.totalSize() >= pages.f.wfs.chunkSizeLimit {
chunk, err = pages.saveToStorage(ctx)
pages.pages = nil
glog.V(3).Infof("%s/%s add split [%d,%d)", pages.f.dir.Path, pages.f.Name, chunk.Offset, chunk.Offset+int64(chunk.Size))
}
return
}
chunk, err = pages.saveToStorage(ctx)

View file

@ -13,14 +13,16 @@ type WFS struct {
listDirectoryEntriesCache *ccache.Cache
collection string
replication string
chunkSizeLimit int64
}
func NewSeaweedFileSystem(filer string, collection string, replication string) *WFS {
func NewSeaweedFileSystem(filer string, collection string, replication string, chunkSizeLimitMB int) *WFS {
return &WFS{
filer: filer,
listDirectoryEntriesCache: ccache.New(ccache.Configure().MaxSize(6000).ItemsToPrune(100)),
collection: collection,
replication: replication,
chunkSizeLimit: int64(chunkSizeLimitMB) * 1024 * 1024,
}
}