mirror of
https://github.com/rclone/rclone.git
synced 2025-12-06 00:03:32 +00:00
vfs: add vfs/stats remote control to show statistics - fixes #5816
This commit is contained in:
27
vfs/vfs.go
27
vfs/vfs.go
@@ -36,6 +36,7 @@ import (
|
||||
"github.com/rclone/rclone/fs"
|
||||
"github.com/rclone/rclone/fs/cache"
|
||||
"github.com/rclone/rclone/fs/log"
|
||||
"github.com/rclone/rclone/fs/rc"
|
||||
"github.com/rclone/rclone/fs/walk"
|
||||
"github.com/rclone/rclone/vfs/vfscache"
|
||||
"github.com/rclone/rclone/vfs/vfscommon"
|
||||
@@ -241,6 +242,32 @@ func New(f fs.Fs, opt *vfscommon.Options) *VFS {
|
||||
return vfs
|
||||
}
|
||||
|
||||
// Stats returns info about the VFS
|
||||
func (vfs *VFS) Stats() (out rc.Params) {
|
||||
out = make(rc.Params)
|
||||
out["fs"] = fs.ConfigString(vfs.f)
|
||||
out["opt"] = vfs.Opt
|
||||
out["inUse"] = atomic.LoadInt32(&vfs.inUse)
|
||||
|
||||
var (
|
||||
dirs int
|
||||
files int
|
||||
)
|
||||
vfs.root.walk(func(d *Dir) {
|
||||
dirs++
|
||||
files += len(d.items)
|
||||
})
|
||||
inf := make(rc.Params)
|
||||
out["metadataCache"] = inf
|
||||
inf["dirs"] = dirs
|
||||
inf["files"] = files
|
||||
|
||||
if vfs.cache != nil {
|
||||
out["diskCache"] = vfs.cache.Stats()
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
// Return the number of active cache entries and a VFS if any are in
|
||||
// the cache.
|
||||
func activeCacheEntries() (vfs *VFS, count int) {
|
||||
|
||||
Reference in New Issue
Block a user