From f7f5e87632380ee3a09dadd8d24f4c7fa0bb7ff8 Mon Sep 17 00:00:00 2001 From: Anagh Kumar Baranwal <6824881+darthShadow@users.noreply.github.com> Date: Wed, 26 Apr 2023 15:40:04 +0530 Subject: [PATCH] mount2: fixed statfs Signed-off-by: Anagh Kumar Baranwal <6824881+darthShadow@users.noreply.github.com> --- cmd/mount2/mount.go | 18 +++++++++--------- cmd/mount2/node.go | 19 +++++++++---------- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/cmd/mount2/mount.go b/cmd/mount2/mount.go index e9b82dd04..811cab235 100644 --- a/cmd/mount2/mount.go +++ b/cmd/mount2/mount.go @@ -26,13 +26,13 @@ func init() { // man mount.fuse for more info and note the -o flag for other options func mountOptions(fsys *FS, f fs.Fs, opt *mountlib.Options) (mountOpts *fuse.MountOptions) { mountOpts = &fuse.MountOptions{ - AllowOther: fsys.opt.AllowOther, - FsName: opt.DeviceName, - Name: "rclone", - DisableXAttrs: true, - Debug: fsys.opt.DebugFUSE, - MaxReadAhead: int(fsys.opt.MaxReadAhead), - MaxWrite: 1024 * 1024, // Linux v4.20+ caps requests at 1 MiB + AllowOther: fsys.opt.AllowOther, + FsName: opt.DeviceName, + Name: "rclone", + DisableXAttrs: true, + Debug: fsys.opt.DebugFUSE, + MaxReadAhead: int(fsys.opt.MaxReadAhead), + MaxWrite: 1024 * 1024, // Linux v4.20+ caps requests at 1 MiB DisableReadDirPlus: true, // RememberInodes: true, @@ -218,8 +218,8 @@ func mount(VFS *vfs.VFS, mountpoint string, opt *mountlib.Options) (<-chan error MountOptions: *mountOpts, EntryTimeout: &opt.AttrTimeout, AttrTimeout: &opt.AttrTimeout, - // UID - // GID + GID: VFS.Opt.GID, + UID: VFS.Opt.UID, } root, err := fsys.Root() diff --git a/cmd/mount2/node.go b/cmd/mount2/node.go index fae416d64..20d57e950 100644 --- a/cmd/mount2/node.go +++ b/cmd/mount2/node.go @@ -85,17 +85,16 @@ func (n *Node) lookupVfsNodeInDir(leaf string) (vfsNode vfs.Node, errno syscall. // will not work. func (n *Node) Statfs(ctx context.Context, out *fuse.StatfsOut) syscall.Errno { defer log.Trace(n, "")("out=%+v", &out) - out = new(fuse.StatfsOut) const blockSize = 4096 - const fsBlocks = (1 << 50) / blockSize - out.Blocks = fsBlocks // Total data blocks in file system. - out.Bfree = fsBlocks // Free blocks in file system. - out.Bavail = fsBlocks // Free blocks in file system if you're not root. - out.Files = 1e9 // Total files in file system. - out.Ffree = 1e9 // Free files in file system. - out.Bsize = blockSize // Block size - out.NameLen = 255 // Maximum file name length? - out.Frsize = blockSize // Fragment size, smallest addressable data size in the file system. + total, _, free := n.fsys.VFS.Statfs() + out.Blocks = uint64(total) / blockSize // Total data blocks in file system. + out.Bfree = uint64(free) / blockSize // Free blocks in file system. + out.Bavail = out.Bfree // Free blocks in file system if you're not root. + out.Files = 1e9 // Total files in file system. + out.Ffree = 1e9 // Free files in file system. + out.Bsize = blockSize // Block size + out.NameLen = 255 // Maximum file name length? + out.Frsize = blockSize // Fragment size, smallest addressable data size in the file system. mountlib.ClipBlocks(&out.Blocks) mountlib.ClipBlocks(&out.Bfree) mountlib.ClipBlocks(&out.Bavail)