Files
zurg/internal/zfs/mount.go
2023-11-05 00:02:22 +01:00

46 lines
732 B
Go

package zfs
import (
"os"
"bazil.org/fuse"
"bazil.org/fuse/fs"
"golang.org/x/sys/unix"
)
func Mount(mountpoint string) error {
options := []fuse.MountOption{
fuse.AllowOther(),
fuse.AllowNonEmptyMount(),
fuse.MaxReadahead(uint32(128 << 10)),
fuse.DefaultPermissions(),
fuse.FSName("zurgfs"),
}
c, err := fuse.Mount(mountpoint, options...)
if err != nil {
return err
}
defer c.Close()
srv := fs.New(c, nil)
filesys := &FS{
uid: uint32(unix.Geteuid()),
gid: uint32(unix.Getegid()),
umask: os.FileMode(0),
}
// Serve our tree via FUSE.
if err := srv.Serve(filesys); err != nil {
return err
}
return nil
}
func Unmount(mountpoint string) error {
fuse.Unmount(mountpoint)
return nil
}