fuse

package
v0.5.11 Latest Latest
Warning

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

Go to latest
Published: Jan 24, 2024 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
const LagFilename = ".lag"
View Source
const PosFileSize = 34

PosFileSize is the size, in bytes, of the "-pos" file.

View Source
const PrimaryFilename = ".primary"

PrimaryFilename is the name of the file that holds the current primary.

View Source
const RootInode = 1

Variables

This section is empty.

Functions

func FileTypeFilename

func FileTypeFilename(t litefs.FileType) string

FileTypeFilename returns the base name for the internal data file.

func ParseFilename

func ParseFilename(name string) (dbName string, fileType litefs.FileType)

ParseFilename parses a base name into database name & file type parts.

func ToError added in v0.1.1

func ToError(err error) error

ToError converts an error to a wrapped error with a FUSE status code.

Types

type DatabaseHandle added in v0.1.1

type DatabaseHandle struct {
	// contains filtered or unexported fields
}

DatabaseHandle represents a file handle to a SQLite database file.

func (*DatabaseHandle) Flush added in v0.1.1

func (h *DatabaseHandle) Flush(ctx context.Context, req *fuse.FlushRequest) error

func (*DatabaseHandle) Lock added in v0.1.1

func (h *DatabaseHandle) Lock(ctx context.Context, req *fuse.LockRequest) error

func (*DatabaseHandle) LockWait added in v0.1.1

func (h *DatabaseHandle) LockWait(ctx context.Context, req *fuse.LockWaitRequest) (err error)

func (*DatabaseHandle) QueryLock added in v0.1.1

func (*DatabaseHandle) Read added in v0.1.1

func (*DatabaseHandle) Release added in v0.1.1

func (h *DatabaseHandle) Release(ctx context.Context, req *fuse.ReleaseRequest) error

func (*DatabaseHandle) Unlock added in v0.1.1

func (h *DatabaseHandle) Unlock(ctx context.Context, req *fuse.UnlockRequest) error

func (*DatabaseHandle) Write added in v0.1.1

type DatabaseNode added in v0.1.1

type DatabaseNode struct {
	// contains filtered or unexported fields
}

DatabaseNode represents a SQLite database file.

func (*DatabaseNode) Attr added in v0.1.1

func (n *DatabaseNode) Attr(ctx context.Context, attr *fuse.Attr) error

func (*DatabaseNode) Forget added in v0.1.1

func (n *DatabaseNode) Forget()

func (*DatabaseNode) Fsync added in v0.1.1

func (n *DatabaseNode) Fsync(ctx context.Context, req *fuse.FsyncRequest) error

func (*DatabaseNode) Getxattr added in v0.2.0

func (*DatabaseNode) Listxattr added in v0.2.0

func (*DatabaseNode) Open added in v0.1.1

func (n *DatabaseNode) Open(ctx context.Context, req *fuse.OpenRequest, resp *fuse.OpenResponse) (fs.Handle, error)

func (*DatabaseNode) Poll added in v0.2.0

func (n *DatabaseNode) Poll(ctx context.Context, req *fuse.PollRequest, resp *fuse.PollResponse) error

func (*DatabaseNode) Removexattr added in v0.2.0

func (n *DatabaseNode) Removexattr(ctx context.Context, req *fuse.RemovexattrRequest) error

func (*DatabaseNode) Setattr added in v0.3.0

func (*DatabaseNode) Setxattr added in v0.2.0

func (n *DatabaseNode) Setxattr(ctx context.Context, req *fuse.SetxattrRequest) error

type Error added in v0.1.1

type Error struct {
	// contains filtered or unexported fields
}

Error wraps an error to return a "No Entry" FUSE error.

func (*Error) Errno added in v0.1.1

func (e *Error) Errno() fuse.Errno

func (*Error) Error added in v0.1.1

func (e *Error) Error() string

type FileSystem

type FileSystem struct {

	// If true, allows other users to access the FUSE mount.
	// Must set "user_allow_other" option in /etc/fuse.conf as well.
	AllowOther bool

	// User & Group ID for all files in the filesystem.
	Uid int
	Gid int

	// If true, enables debug logging.
	Debug bool
	// contains filtered or unexported fields
}

FileSystem represents a raw interface to the FUSE file system.

func NewFileSystem

func NewFileSystem(path string, store *litefs.Store) *FileSystem

NewFileSystem returns a new instance of FileSystem.

func (*FileSystem) InvalidateDB added in v0.1.1

func (fsys *FileSystem) InvalidateDB(db *litefs.DB) error

InvalidateDB invalidates the entire database from the kernel page cache.

func (*FileSystem) InvalidateDBRange added in v0.3.0

func (fsys *FileSystem) InvalidateDBRange(db *litefs.DB, offset, size int64) error

InvalidateDBRange invalidates a database in the kernel page cache.

func (*FileSystem) InvalidateEntry added in v0.3.0

func (fsys *FileSystem) InvalidateEntry(name string) error

InvalidateEntry removes the file from the cache.

func (*FileSystem) InvalidateLag added in v0.5.0

func (fsys *FileSystem) InvalidateLag() error

func (*FileSystem) InvalidatePos added in v0.2.0

func (fsys *FileSystem) InvalidatePos(db *litefs.DB) error

InvalidatePos invalidates the position file in the kernel page cache.

func (*FileSystem) InvalidateSHM added in v0.3.0

func (fsys *FileSystem) InvalidateSHM(db *litefs.DB) error

InvalidateSHM invalidates the SHM file in the kernel page cache.

func (*FileSystem) Mount

func (fsys *FileSystem) Mount() (err error)

Mount mounts the file system to the mount point.

func (*FileSystem) Path

func (fsys *FileSystem) Path() string

Path returns the path to the mount point.

func (*FileSystem) Root added in v0.1.1

func (fsys *FileSystem) Root() (fs.Node, error)

Root returns the root directory in the file system.

func (*FileSystem) Statfs added in v0.2.0

func (fsys *FileSystem) Statfs(ctx context.Context, req *fuse.StatfsRequest, resp *fuse.StatfsResponse) error

Statfs is a passthrough to the underlying file system.

func (*FileSystem) Store

func (fsys *FileSystem) Store() *litefs.Store

Store returns the underlying store.

func (*FileSystem) Unmount

func (fsys *FileSystem) Unmount() (err error)

Unmount unmounts the file system.

type JournalHandle added in v0.1.1

type JournalHandle struct {
	// contains filtered or unexported fields
}

JournalHandle represents a file handle to a SQLite journal file.

func (*JournalHandle) Read added in v0.1.1

func (h *JournalHandle) Read(ctx context.Context, req *fuse.ReadRequest, resp *fuse.ReadResponse) error

func (*JournalHandle) Release added in v0.1.1

func (h *JournalHandle) Release(ctx context.Context, req *fuse.ReleaseRequest) error

func (*JournalHandle) Write added in v0.1.1

type JournalNode added in v0.1.1

type JournalNode struct {
	// contains filtered or unexported fields
}

JournalNode represents a SQLite rollback journal file.

func (*JournalNode) Attr added in v0.1.1

func (n *JournalNode) Attr(ctx context.Context, attr *fuse.Attr) error

func (*JournalNode) Forget added in v0.1.1

func (n *JournalNode) Forget()

func (*JournalNode) Fsync added in v0.1.1

func (n *JournalNode) Fsync(ctx context.Context, req *fuse.FsyncRequest) error

Fsync performs an fsync() on the underlying file.

func (*JournalNode) Getxattr added in v0.2.0

func (n *JournalNode) Getxattr(ctx context.Context, req *fuse.GetxattrRequest, resp *fuse.GetxattrResponse) error

func (*JournalNode) Listxattr added in v0.2.0

func (*JournalNode) Open added in v0.1.1

func (n *JournalNode) Open(ctx context.Context, req *fuse.OpenRequest, resp *fuse.OpenResponse) (fs.Handle, error)

func (*JournalNode) Poll added in v0.2.0

func (n *JournalNode) Poll(ctx context.Context, req *fuse.PollRequest, resp *fuse.PollResponse) error

func (*JournalNode) Removexattr added in v0.2.0

func (n *JournalNode) Removexattr(ctx context.Context, req *fuse.RemovexattrRequest) error

func (*JournalNode) Setattr added in v0.1.1

func (n *JournalNode) Setattr(ctx context.Context, req *fuse.SetattrRequest, resp *fuse.SetattrResponse) error

func (*JournalNode) Setxattr added in v0.2.0

func (n *JournalNode) Setxattr(ctx context.Context, req *fuse.SetxattrRequest) error

type LagNode added in v0.5.0

type LagNode struct {
	// contains filtered or unexported fields
}

func (*LagNode) Attr added in v0.5.0

func (n *LagNode) Attr(ctx context.Context, attr *fuse.Attr) error

func (*LagNode) Forget added in v0.5.0

func (n *LagNode) Forget()

func (*LagNode) Getxattr added in v0.5.0

func (n *LagNode) Getxattr(ctx context.Context, req *fuse.GetxattrRequest, resp *fuse.GetxattrResponse) error

func (*LagNode) Listxattr added in v0.5.0

func (n *LagNode) Listxattr(ctx context.Context, req *fuse.ListxattrRequest, resp *fuse.ListxattrResponse) error

func (*LagNode) Poll added in v0.5.0

func (n *LagNode) Poll(ctx context.Context, req *fuse.PollRequest, resp *fuse.PollResponse) error

func (*LagNode) ReadAll added in v0.5.0

func (n *LagNode) ReadAll(ctx context.Context) ([]byte, error)

func (*LagNode) Removexattr added in v0.5.0

func (n *LagNode) Removexattr(ctx context.Context, req *fuse.RemovexattrRequest) error

func (*LagNode) Setxattr added in v0.5.0

func (n *LagNode) Setxattr(ctx context.Context, req *fuse.SetxattrRequest) error

type LockHandle added in v0.4.0

type LockHandle struct {
	// contains filtered or unexported fields
}

LockHandle represents a file handle to a SQLite database file.

func (*LockHandle) Flush added in v0.4.0

func (h *LockHandle) Flush(ctx context.Context, req *fuse.FlushRequest) error

func (*LockHandle) Lock added in v0.4.0

func (h *LockHandle) Lock(ctx context.Context, req *fuse.LockRequest) error

func (*LockHandle) LockWait added in v0.4.0

func (h *LockHandle) LockWait(ctx context.Context, req *fuse.LockWaitRequest) (err error)

func (*LockHandle) QueryLock added in v0.4.0

func (h *LockHandle) QueryLock(ctx context.Context, req *fuse.QueryLockRequest, resp *fuse.QueryLockResponse) error

func (*LockHandle) Read added in v0.4.0

func (h *LockHandle) Read(ctx context.Context, req *fuse.ReadRequest, resp *fuse.ReadResponse) error

func (*LockHandle) Release added in v0.4.0

func (h *LockHandle) Release(ctx context.Context, req *fuse.ReleaseRequest) error

func (*LockHandle) Unlock added in v0.4.0

func (h *LockHandle) Unlock(ctx context.Context, req *fuse.UnlockRequest) error

func (*LockHandle) Write added in v0.4.0

func (h *LockHandle) Write(ctx context.Context, req *fuse.WriteRequest, resp *fuse.WriteResponse) error

type LockNode added in v0.4.0

type LockNode struct {
	// contains filtered or unexported fields
}

LockNode represents a file used for non-standard SQLite locks. A separate file is needed because SQLite does not use OFD locks so cloing a handle will also release all locks.

func (*LockNode) Attr added in v0.4.0

func (n *LockNode) Attr(ctx context.Context, attr *fuse.Attr) error

func (*LockNode) Forget added in v0.4.0

func (n *LockNode) Forget()

func (*LockNode) Getxattr added in v0.4.0

func (n *LockNode) Getxattr(ctx context.Context, req *fuse.GetxattrRequest, resp *fuse.GetxattrResponse) error

func (*LockNode) Listxattr added in v0.4.0

func (n *LockNode) Listxattr(ctx context.Context, req *fuse.ListxattrRequest, resp *fuse.ListxattrResponse) error

func (*LockNode) Open added in v0.4.0

func (n *LockNode) Open(ctx context.Context, req *fuse.OpenRequest, resp *fuse.OpenResponse) (fs.Handle, error)

func (*LockNode) Poll added in v0.4.0

func (n *LockNode) Poll(ctx context.Context, req *fuse.PollRequest, resp *fuse.PollResponse) error

func (*LockNode) Removexattr added in v0.4.0

func (n *LockNode) Removexattr(ctx context.Context, req *fuse.RemovexattrRequest) error

func (*LockNode) Setxattr added in v0.4.0

func (n *LockNode) Setxattr(ctx context.Context, req *fuse.SetxattrRequest) error

type PosNode added in v0.2.0

type PosNode struct {
	// contains filtered or unexported fields
}

PosNode represents a file that returns the current position of the database.

func (*PosNode) Attr added in v0.2.0

func (n *PosNode) Attr(ctx context.Context, attr *fuse.Attr) error

func (*PosNode) Forget added in v0.2.0

func (n *PosNode) Forget()

func (*PosNode) Getxattr added in v0.2.0

func (n *PosNode) Getxattr(ctx context.Context, req *fuse.GetxattrRequest, resp *fuse.GetxattrResponse) error

func (*PosNode) Listxattr added in v0.2.0

func (n *PosNode) Listxattr(ctx context.Context, req *fuse.ListxattrRequest, resp *fuse.ListxattrResponse) error

func (*PosNode) Open added in v0.2.0

func (n *PosNode) Open(ctx context.Context, req *fuse.OpenRequest, resp *fuse.OpenResponse) (fs.Handle, error)

func (*PosNode) Poll added in v0.2.0

func (n *PosNode) Poll(ctx context.Context, req *fuse.PollRequest, resp *fuse.PollResponse) error

func (*PosNode) Read added in v0.2.0

func (n *PosNode) Read(ctx context.Context, req *fuse.ReadRequest, resp *fuse.ReadResponse) error

func (*PosNode) Removexattr added in v0.2.0

func (n *PosNode) Removexattr(ctx context.Context, req *fuse.RemovexattrRequest) error

func (*PosNode) Setxattr added in v0.2.0

func (n *PosNode) Setxattr(ctx context.Context, req *fuse.SetxattrRequest) error

type PrimaryNode added in v0.1.1

type PrimaryNode struct {
	// contains filtered or unexported fields
}

PrimaryNode represents a file for returning the current primary node.

func (*PrimaryNode) Attr added in v0.1.1

func (n *PrimaryNode) Attr(ctx context.Context, attr *fuse.Attr) error

func (*PrimaryNode) Forget added in v0.1.1

func (n *PrimaryNode) Forget()

func (*PrimaryNode) Getxattr added in v0.2.0

func (n *PrimaryNode) Getxattr(ctx context.Context, req *fuse.GetxattrRequest, resp *fuse.GetxattrResponse) error

func (*PrimaryNode) Listxattr added in v0.2.0

func (*PrimaryNode) Poll added in v0.2.0

func (n *PrimaryNode) Poll(ctx context.Context, req *fuse.PollRequest, resp *fuse.PollResponse) error

func (*PrimaryNode) ReadAll added in v0.1.1

func (n *PrimaryNode) ReadAll(ctx context.Context) ([]byte, error)

func (*PrimaryNode) Removexattr added in v0.2.0

func (n *PrimaryNode) Removexattr(ctx context.Context, req *fuse.RemovexattrRequest) error

func (*PrimaryNode) Setxattr added in v0.2.0

func (n *PrimaryNode) Setxattr(ctx context.Context, req *fuse.SetxattrRequest) error

type RootHandle added in v0.1.1

type RootHandle struct {
	// contains filtered or unexported fields
}

RootHandle represents a directory handle for the root directory.

func NewRootHandle added in v0.1.1

func NewRootHandle(node *RootNode) *RootHandle

NewRootHandle returns a new instance of RootHandle.

func (*RootHandle) ReadDirAll added in v0.1.1

func (h *RootHandle) ReadDirAll(ctx context.Context) ([]fuse.Dirent, error)

type RootNode added in v0.1.1

type RootNode struct {
	// contains filtered or unexported fields
}

RootNode represents the root directory of the FUSE mount.

func (*RootNode) Attr added in v0.1.1

func (n *RootNode) Attr(ctx context.Context, attr *fuse.Attr) error

Attr returns the attributes for the root directory.

func (*RootNode) Create added in v0.1.1

func (n *RootNode) Create(ctx context.Context, req *fuse.CreateRequest, resp *fuse.CreateResponse) (node fs.Node, h fs.Handle, err error)

func (*RootNode) ForgetNode added in v0.1.1

func (n *RootNode) ForgetNode(node fs.Node)

ForgetNode removes the node from the node map.

func (*RootNode) ForgetNodeByName added in v0.4.0

func (n *RootNode) ForgetNodeByName(name string)

ForgetNodeByName removes the node from the node map by name.

func (*RootNode) Fsync added in v0.1.1

func (n *RootNode) Fsync(ctx context.Context, req *fuse.FsyncRequest) error

Fsync is a no-op as directory sync is handled by the file. This is required as the database files are grouped by database internally.

func (*RootNode) Getxattr added in v0.2.0

func (n *RootNode) Getxattr(ctx context.Context, req *fuse.GetxattrRequest, resp *fuse.GetxattrResponse) error

func (*RootNode) Listxattr added in v0.2.0

func (n *RootNode) Listxattr(ctx context.Context, req *fuse.ListxattrRequest, resp *fuse.ListxattrResponse) error

func (*RootNode) Lookup added in v0.1.1

func (n *RootNode) Lookup(ctx context.Context, name string) (node fs.Node, err error)

Lookup returns a node for a file in the root directory.

func (*RootNode) Node added in v0.1.1

func (n *RootNode) Node(name string) fs.Node

Node returns a child node by filename. Returns nil if it does not exist.

func (*RootNode) Open added in v0.1.1

func (n *RootNode) Open(ctx context.Context, req *fuse.OpenRequest, resp *fuse.OpenResponse) (fs.Handle, error)

func (*RootNode) Poll added in v0.2.0

func (n *RootNode) Poll(ctx context.Context, req *fuse.PollRequest, resp *fuse.PollResponse) error

func (*RootNode) Remove added in v0.1.1

func (n *RootNode) Remove(ctx context.Context, req *fuse.RemoveRequest) (err error)

Remove deletes the file from disk. This is only supported on the journal file currently.

func (*RootNode) Removexattr added in v0.2.0

func (n *RootNode) Removexattr(ctx context.Context, req *fuse.RemovexattrRequest) error

func (*RootNode) Setxattr added in v0.2.0

func (n *RootNode) Setxattr(ctx context.Context, req *fuse.SetxattrRequest) error

type SHMHandle added in v0.3.0

type SHMHandle struct {
	// contains filtered or unexported fields
}

SHMHandle represents a file handle to a SQLite database file.

func (*SHMHandle) Flush added in v0.3.0

func (h *SHMHandle) Flush(ctx context.Context, req *fuse.FlushRequest) error

func (*SHMHandle) Lock added in v0.3.0

func (h *SHMHandle) Lock(ctx context.Context, req *fuse.LockRequest) error

func (*SHMHandle) LockWait added in v0.3.0

func (h *SHMHandle) LockWait(ctx context.Context, req *fuse.LockWaitRequest) error

func (*SHMHandle) QueryLock added in v0.3.0

func (h *SHMHandle) QueryLock(ctx context.Context, req *fuse.QueryLockRequest, resp *fuse.QueryLockResponse) error

func (*SHMHandle) Read added in v0.3.0

func (h *SHMHandle) Read(ctx context.Context, req *fuse.ReadRequest, resp *fuse.ReadResponse) error

func (*SHMHandle) Release added in v0.3.0

func (h *SHMHandle) Release(ctx context.Context, req *fuse.ReleaseRequest) error

func (*SHMHandle) Unlock added in v0.3.0

func (h *SHMHandle) Unlock(ctx context.Context, req *fuse.UnlockRequest) (err error)

func (*SHMHandle) Write added in v0.3.0

func (h *SHMHandle) Write(ctx context.Context, req *fuse.WriteRequest, resp *fuse.WriteResponse) error

type SHMNode added in v0.3.0

type SHMNode struct {
	// contains filtered or unexported fields
}

SHMNode represents a SQLite database file.

func (*SHMNode) Attr added in v0.3.0

func (n *SHMNode) Attr(ctx context.Context, attr *fuse.Attr) error

func (*SHMNode) Forget added in v0.3.0

func (n *SHMNode) Forget()

func (*SHMNode) Fsync added in v0.3.0

func (n *SHMNode) Fsync(ctx context.Context, req *fuse.FsyncRequest) error

func (*SHMNode) Getxattr added in v0.3.0

func (n *SHMNode) Getxattr(ctx context.Context, req *fuse.GetxattrRequest, resp *fuse.GetxattrResponse) error

func (*SHMNode) Listxattr added in v0.3.0

func (n *SHMNode) Listxattr(ctx context.Context, req *fuse.ListxattrRequest, resp *fuse.ListxattrResponse) error

func (*SHMNode) Open added in v0.3.0

func (n *SHMNode) Open(ctx context.Context, req *fuse.OpenRequest, resp *fuse.OpenResponse) (fs.Handle, error)

func (*SHMNode) Poll added in v0.3.0

func (n *SHMNode) Poll(ctx context.Context, req *fuse.PollRequest, resp *fuse.PollResponse) error

func (*SHMNode) Removexattr added in v0.3.0

func (n *SHMNode) Removexattr(ctx context.Context, req *fuse.RemovexattrRequest) error

func (*SHMNode) Setattr added in v0.3.0

func (n *SHMNode) Setattr(ctx context.Context, req *fuse.SetattrRequest, resp *fuse.SetattrResponse) error

func (*SHMNode) Setxattr added in v0.3.0

func (n *SHMNode) Setxattr(ctx context.Context, req *fuse.SetxattrRequest) error

type WALHandle added in v0.3.0

type WALHandle struct {
	// contains filtered or unexported fields
}

WALHandle represents a file handle to a SQLite WAL file.

func (*WALHandle) Read added in v0.3.0

func (h *WALHandle) Read(ctx context.Context, req *fuse.ReadRequest, resp *fuse.ReadResponse) error

func (*WALHandle) Release added in v0.3.0

func (h *WALHandle) Release(ctx context.Context, req *fuse.ReleaseRequest) error

func (*WALHandle) Write added in v0.3.0

func (h *WALHandle) Write(ctx context.Context, req *fuse.WriteRequest, resp *fuse.WriteResponse) error

type WALNode added in v0.3.0

type WALNode struct {
	// contains filtered or unexported fields
}

WALNode represents a SQLite WAL file.

func (*WALNode) Attr added in v0.3.0

func (n *WALNode) Attr(ctx context.Context, attr *fuse.Attr) error

func (*WALNode) Forget added in v0.3.0

func (n *WALNode) Forget()

func (*WALNode) Fsync added in v0.3.0

func (n *WALNode) Fsync(ctx context.Context, req *fuse.FsyncRequest) error

func (*WALNode) Getxattr added in v0.3.0

func (n *WALNode) Getxattr(ctx context.Context, req *fuse.GetxattrRequest, resp *fuse.GetxattrResponse) error

func (*WALNode) Listxattr added in v0.3.0

func (n *WALNode) Listxattr(ctx context.Context, req *fuse.ListxattrRequest, resp *fuse.ListxattrResponse) error

func (*WALNode) Open added in v0.3.0

func (n *WALNode) Open(ctx context.Context, req *fuse.OpenRequest, resp *fuse.OpenResponse) (fs.Handle, error)

func (*WALNode) Poll added in v0.3.0

func (n *WALNode) Poll(ctx context.Context, req *fuse.PollRequest, resp *fuse.PollResponse) error

func (*WALNode) Removexattr added in v0.3.0

func (n *WALNode) Removexattr(ctx context.Context, req *fuse.RemovexattrRequest) error

func (*WALNode) Setattr added in v0.3.0

func (n *WALNode) Setattr(ctx context.Context, req *fuse.SetattrRequest, resp *fuse.SetattrResponse) error

func (*WALNode) Setxattr added in v0.3.0

func (n *WALNode) Setxattr(ctx context.Context, req *fuse.SetxattrRequest) error

Jump to

Keyboard shortcuts

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