mountlib

package
v0.0.0-...-b4aeae5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 7, 2024 License: MIT Imports: 29 Imported by: 0

Documentation

Overview

Package mountlib provides the mount command.

Index

Constants

View Source
const (
	MaxLeafSize = 1024 // don't pass file names longer than this
)

Global constants

Variables

View Source
var CanCheckMountReady = true

CanCheckMountReady is set if CheckMountReady is functional

View Source
var DefaultOpt = Options{
	MaxReadAhead:  128 * 1024,
	AttrTimeout:   1 * time.Second,
	NoAppleDouble: true,
	NoAppleXattr:  false,
	AsyncRead:     true,
}

DefaultOpt is the default values for creating the mount

Functions

func AddFlags

func AddFlags(flagSet *pflag.FlagSet)

AddFlags adds the non filing system specific flags to the command

func AddRc

func AddRc(mountUtilName string, mountFunction MountFn)

AddRc adds mount and unmount functionality to rc

func CheckAllowNonEmpty

func CheckAllowNonEmpty(mountpoint string, opt *Options) error

CheckAllowNonEmpty checks --allow-non-empty flag, and if not used verifies that mountpoint is empty.

func CheckMountEmpty

func CheckMountEmpty(mountpoint string) error

CheckMountEmpty checks if folder is not already a mountpoint. On Linux we use the OS-specific /proc/self/mountinfo API so the check won't access the path. Directories marked as "mounted" by autofs are considered not mounted.

func CheckMountReady

func CheckMountReady(mountpoint string) error

CheckMountReady checks whether mountpoint is mounted by rclone. Only mounts with type "rclone" or "fuse.rclone" count.

func CheckOverlap

func CheckOverlap(f fs.Fs, mountpoint string) error

CheckOverlap checks that root doesn't overlap with a mountpoint

func ClipBlocks

func ClipBlocks(b *uint64)

ClipBlocks clips the blocks pointed to the OS max

func NewMountCommand

func NewMountCommand(commandName string, hidden bool, mount MountFn) *cobra.Command

NewMountCommand makes a mount command with the given name and Mount function

func NotifyOnSigHup

func NotifyOnSigHup(sighupChan chan os.Signal)

NotifyOnSigHup makes SIGHUP notify given channel on supported systems

func WaitMountReady

func WaitMountReady(mountpoint string, timeout time.Duration, daemon *os.Process) (err error)

WaitMountReady waits until mountpoint is mounted by rclone.

If the mount daemon dies prematurely it will notice too.

Types

type MountFn

type MountFn func(VFS *vfs.VFS, mountpoint string, opt *Options) (<-chan error, func() error, error)

MountFn is called to mount the file system

func ResolveMountMethod

func ResolveMountMethod(mountType string) (string, MountFn)

ResolveMountMethod returns mount function by name

type MountInfo

type MountInfo struct {
	Fs         string    `json:"Fs"`
	MountPoint string    `json:"MountPoint"`
	MountedOn  time.Time `json:"MountedOn"`
}

MountInfo is a transitional structure for json marshaling

type MountPoint

type MountPoint struct {
	MountPoint string
	MountedOn  time.Time
	MountOpt   Options
	VFSOpt     vfscommon.Options
	Fs         fs.Fs
	VFS        *vfs.VFS
	MountFn    MountFn
	UnmountFn  UnmountFn
	ErrChan    <-chan error
}

MountPoint represents a mount with options and runtime state

func NewMountPoint

func NewMountPoint(mount MountFn, mountPoint string, f fs.Fs, mountOpt *Options, vfsOpt *vfscommon.Options) *MountPoint

NewMountPoint makes a new mounting structure

func (*MountPoint) Mount

func (m *MountPoint) Mount() (mountDaemon *os.Process, err error)

Mount the remote at mountpoint

func (*MountPoint) SetDeviceName

func (m *MountPoint) SetDeviceName(dev string)

SetDeviceName with sensible default

func (*MountPoint) SetVolumeName

func (m *MountPoint) SetVolumeName(vol string)

SetVolumeName with sensible default

func (*MountPoint) Unmount

func (m *MountPoint) Unmount() (err error)

Unmount the specified mountpoint

func (*MountPoint) Wait

func (m *MountPoint) Wait() error

Wait for mount end

type Options

type Options struct {
	DebugFUSE          bool
	AllowNonEmpty      bool
	AllowRoot          bool
	AllowOther         bool
	DefaultPermissions bool
	WritebackCache     bool
	Daemon             bool
	DaemonWait         time.Duration // time to wait for ready mount from daemon, maximum on Linux or constant on macOS/BSD
	MaxReadAhead       fs.SizeSuffix
	ExtraOptions       []string
	ExtraFlags         []string
	AttrTimeout        time.Duration // how long the kernel caches attribute for
	DeviceName         string
	VolumeName         string
	NoAppleDouble      bool
	NoAppleXattr       bool
	DaemonTimeout      time.Duration // OSXFUSE only
	AsyncRead          bool
	NetworkMode        bool // Windows only
	CaseInsensitive    fs.Tristate
}

Options for creating the mount

var Opt Options

Opt contains options set by command line flags

func (*Options) SetVolumeName

func (o *Options) SetVolumeName(vol string)

SetVolumeName removes special characters from volume name if necessary

type UnmountFn

type UnmountFn func() error

UnmountFn is called to unmount the file system

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL