Files
cgofuse/fuse/package.go
T
Sirherobrine23 a1a726eb4d
Fuse test / go-test (push) Successful in 22s
Implement Lseek operation, and enhance error handling
- Update the FileSystemHost to remove functions SetCapCaseInsensitive, SetCapReaddirPlus, SetCapDeleteAccess, SetCapOpenTrunc, SetDirectIO, SetUseIno and expose CapCaseInsensitive, CapReaddirPlus, CapDeleteAccess, CapOpenTrunc, DirectIO, UseIno
- Added `FileSystemLseek` interface to support Lseek operation in FUSE.
- Implemented Lseek functionality in the host layer.
- Refactored error handling in `ErrorToStatus` to improve clarity and coverage.
- Enhanced `BasicStat` and `AppendDirEntry` functions to populate additional fields in the FUSE stat structure.
- Created utility functions for managing FUSE flags and permissions.
- fs:
  - Remove `Fd() uintptr` from base of File interface
  - Now fs use internal File Descriptor
  - Removed `FS() F` from `FileSystemMount[T, FileSystem[T]]`
- Unix fs:
  - Merge `_fuse` to `_FileSystemMount` and rename to FuseFs
  - Add new `FileSystemStatFst` to use direct fuse Statfs struct
  - Utimens don't return -ENOSYS if FileSystemUtimens not implemented
  - Add `Lseek` function

Signed-off-by: Matheus Sampaio Queiroga <srherobrine20@gmail.com>
2025-08-10 17:27:52 -03:00

31 lines
1.3 KiB
Go

// Package fuse allows the creation of user mode file systems in Go.
//
// This packages supports both FUSE2 and FUSE3 on Linux and FreeBSD FUSE2 MacOS, NetBSD and OpenBSD.
// By default, cgofuse will link with FUSE2. To link with FUSE3, simply add '-tags=fuse3'
// to your 'go build' flags.
//
// A user mode file system is a user mode process that receives file system operations
// from the OS FUSE layer and satisfies them in user mode. A user mode file system
// implements the interface FileSystemInterface either directly or by embedding a
// FileSystemBase struct which provides a default (empty) implementation of all methods
// in FileSystemInterface.
//
// In order to expose the user mode file system to the OS, the file system must be hosted
// (mounted) by a FileSystemHost. The FileSystemHost Mount() method is used for this
// purpose.
//
// A note on thread-safety: In general FUSE file systems are expected to protect their
// own data structures. Many FUSE implementations provide a -s command line option that
// when used, it instructs the FUSE implementation to serialize requests. This option
// can be passed to the FileSystemHost Mount() method, when the file system is mounted.
package fuse
type FuseDriver uint8 // Fuse driver used in build stage
const (
None FuseDriver = iota
Winfsp
Fuse2
Fuse3
)