Documentation
¶
Index ¶
- Constants
- Variables
- func IsSuccessOrBenignError(err error) bool
- func NewKerberosClientWithKeyTab(kerberosConf *KerberosConf) (*krb.Client, error)
- func RegisterUFS(_type string, creator Creator)
- type Attr
- type Creator
- type DirEntry
- type FileHandle
- type Ino
- type KerberosConf
- type LocalFileSystem
- func (fs *LocalFileSystem) Access(name string, mode, callerUid, callerGid uint32) error
- func (fs *LocalFileSystem) Chmod(name string, mode uint32) error
- func (fs *LocalFileSystem) Chown(name string, uid uint32, gid uint32) error
- func (fs *LocalFileSystem) Create(name string, flags uint32, mode uint32) (fd FileHandle, err error)
- func (fs *LocalFileSystem) Get(name string, flags uint32, off, limit int64) (io.ReadCloser, error)
- func (fs *LocalFileSystem) GetAttr(name string) (*base.FileInfo, error)
- func (fs *LocalFileSystem) GetPath(relPath string) string
- func (fs *LocalFileSystem) GetXAttr(name string, attribute string) (data []byte, err error)
- func (fs *LocalFileSystem) Link(oldName string, newName string) error
- func (fs *LocalFileSystem) ListXAttr(name string) (attributes []string, err error)
- func (fs *LocalFileSystem) Mkdir(name string, mode uint32) error
- func (fs *LocalFileSystem) Mknod(name string, mode uint32, dev uint32) error
- func (fs *LocalFileSystem) Open(name string, flags uint32, size uint64) (FileHandle, error)
- func (fs *LocalFileSystem) Put(name string, reader io.Reader) error
- func (fs *LocalFileSystem) ReadDir(name string) (stream []DirEntry, err error)
- func (fs *LocalFileSystem) Readlink(name string) (string, error)
- func (fs *LocalFileSystem) RemoveXAttr(name string, attr string) error
- func (fs *LocalFileSystem) Rename(oldName string, newName string) error
- func (fs *LocalFileSystem) Rmdir(name string) error
- func (fs *LocalFileSystem) SetXAttr(name string, attr string, data []byte, flags int) error
- func (fs *LocalFileSystem) StatFs(name string) *base.StatfsOut
- func (fs *LocalFileSystem) String() string
- func (fs *LocalFileSystem) Symlink(value string, linkName string) error
- func (fs *LocalFileSystem) Truncate(name string, size uint64) error
- func (fs *LocalFileSystem) Unlink(name string) error
- func (fs *LocalFileSystem) Utimens(name string, Atime *time.Time, Mtime *time.Time) error
- type UnderFileStorage
- func NewHdfsFileSystem(properties map[string]interface{}) (UnderFileStorage, error)
- func NewHdfsWithKerberosFileSystem(properties map[string]interface{}) (UnderFileStorage, error)
- func NewLocalFileSystem(properties map[string]interface{}) (UnderFileStorage, error)
- func NewLocalMountFileSystem(properties map[string]interface{}) (UnderFileStorage, error)
- func NewObjectFileSystem(properties map[string]interface{}) (UnderFileStorage, error)
- func NewS3FileSystem(properties map[string]interface{}) (UnderFileStorage, error)
- func NewSftpFileSystem(properties map[string]interface{}) (UnderFileStorage, error)
- func NewUFS(_type string, properties map[string]interface{}) (UnderFileStorage, error)
Constants ¶
const ( DefaultBlockSize = int64(64 * 1024 * 1024) DefaultReplication = 3 )
const ( TypeFile = 1 // type for regular file TypeDirectory = 2 // type for directory )
const ( Delimiter = "/" MaxKeys = 1000 AwsDefaultRegion = "us-east-1" TmpPath = "./tmp/pfs/" MaxFileSize = 5 * 1024 * 1024 * 1024 * 1024 // s3: support upto 5 TiB file size // mpu MPURetryTimes = 2 MPUThreshold = 200 * 1024 * 1024 // customized for performance MPUChunkSize = 1 * 1024 * 1024 * 1024 // chunk size 1 GiB MPUMinPartSize = 5 * 1024 * 1024 // s3: Each part must be at least 5 MB ~ 5 GB in size (except for the last part) MPUMaxPartSize = 5 * 1024 * 1024 * 1024 // s3: Each part must be at least 5 MB ~ 5 GB in size (except for the last part) MPUMaxPartNum = 10000 // s3: between 1~10,000 DefaultDirMode = 0755 DefaultFileMode = 0644 )
const GiB int64 = 1024 * 1024 * 1024
const (
Krb5ConfTemplate = `` /* 238-byte string literal not displayed */
)
const MiB int64 = 1024 * 1024
Variables ¶
var Group string
var Owner string
Functions ¶
func IsSuccessOrBenignError ¶
Returns true if err==nil or err is expected (benign) error which should be propagated directoy to the caller
func NewKerberosClientWithKeyTab ¶
func NewKerberosClientWithKeyTab(kerberosConf *KerberosConf) (*krb.Client, error)
func RegisterUFS ¶
Types ¶
type Attr ¶ added in v0.14.3
type Attr struct {
Type uint8 // type of a node
Mode uint32 // permission mode
Uid uint32 // owner id
Gid uint32 // group id of owner
Rdev uint64 // device number
Atime int64 // last access time
Mtime int64 // last modified time
Ctime int64 // last change time for meta
Atimensec uint32 // nanosecond part of atime
Mtimensec uint32 // nanosecond part of mtime
Ctimensec uint32 // nanosecond part of ctime
Nlink uint64 // number of links (sub-directories or hardlinks)
Size uint64 // size of regular file
Blksize int64 // 目录默认4096 文件为0
Block int64 // 文件size的大小/512
}
Attr represents attributes of a node.
type Creator ¶
type Creator func(properties map[string]interface{}) (UnderFileStorage, error)
type FileHandle ¶
type FileHandle interface {
Read(dest []byte, off uint64) (int, error)
Write(data []byte, off uint64) (written uint32, code error)
// Flush is called for close() call on a file descriptor. In
// case of duplicated descriptor, it may be called more than
// once for a file.
Flush() error
// This is called to before the file handle is forgotten. This
// method has no return value, so nothing can synchronizes on
// the call. Any cleanup that requires specific synchronization or
// could fail with I/O errors should happen in Flush instead.
Release()
Fsync(flags int) error
// The methods below may be called on closed files, due to
// concurrency. In that case, you should return EBADF.
Truncate(size uint64) error
Allocate(off uint64, size uint64, mode uint32) error
}
type KerberosConf ¶
type LocalFileSystem ¶ added in v0.14.6
type LocalFileSystem struct {
// contains filtered or unexported fields
}
func (*LocalFileSystem) Access ¶ added in v0.14.6
func (fs *LocalFileSystem) Access(name string, mode, callerUid, callerGid uint32) error
func (*LocalFileSystem) Chmod ¶ added in v0.14.6
func (fs *LocalFileSystem) Chmod(name string, mode uint32) error
These should update the file's ctime too.
func (*LocalFileSystem) Chown ¶ added in v0.14.6
func (fs *LocalFileSystem) Chown(name string, uid uint32, gid uint32) error
func (*LocalFileSystem) Create ¶ added in v0.14.6
func (fs *LocalFileSystem) Create(name string, flags uint32, mode uint32) (fd FileHandle, err error)
func (*LocalFileSystem) Get ¶ added in v0.14.6
func (fs *LocalFileSystem) Get(name string, flags uint32, off, limit int64) (io.ReadCloser, error)
func (*LocalFileSystem) GetAttr ¶ added in v0.14.6
func (fs *LocalFileSystem) GetAttr(name string) (*base.FileInfo, error)
Attributes. This function is the main entry point, through which FUSE discovers which files and directories exist.
If the filesystem wants to implement hard-links, it should return consistent non-zero FileInfo.Ino data. Using hardlinks incurs a performance hit.
func (*LocalFileSystem) GetPath ¶ added in v0.14.6
func (fs *LocalFileSystem) GetPath(relPath string) string
func (*LocalFileSystem) GetXAttr ¶ added in v0.14.6
func (fs *LocalFileSystem) GetXAttr(name string, attribute string) (data []byte, err error)
Extended attributes.
func (*LocalFileSystem) Link ¶ added in v0.14.6
func (fs *LocalFileSystem) Link(oldName string, newName string) error
Tree structure
func (*LocalFileSystem) ListXAttr ¶ added in v0.14.6
func (fs *LocalFileSystem) ListXAttr(name string) (attributes []string, err error)
func (*LocalFileSystem) Mkdir ¶ added in v0.14.6
func (fs *LocalFileSystem) Mkdir(name string, mode uint32) error
func (*LocalFileSystem) Mknod ¶ added in v0.14.6
func (fs *LocalFileSystem) Mknod(name string, mode uint32, dev uint32) error
func (*LocalFileSystem) Open ¶ added in v0.14.6
func (fs *LocalFileSystem) Open(name string, flags uint32, size uint64) (FileHandle, error)
File handling. If opening for writing, the file's mtime should be updated too.
func (*LocalFileSystem) Put ¶ added in v0.14.6
func (fs *LocalFileSystem) Put(name string, reader io.Reader) error
func (*LocalFileSystem) ReadDir ¶ added in v0.14.6
func (fs *LocalFileSystem) ReadDir(name string) (stream []DirEntry, err error)
Directory handling
func (*LocalFileSystem) Readlink ¶ added in v0.14.6
func (fs *LocalFileSystem) Readlink(name string) (string, error)
func (*LocalFileSystem) RemoveXAttr ¶ added in v0.14.6
func (fs *LocalFileSystem) RemoveXAttr(name string, attr string) error
func (*LocalFileSystem) Rename ¶ added in v0.14.6
func (fs *LocalFileSystem) Rename(oldName string, newName string) error
func (*LocalFileSystem) Rmdir ¶ added in v0.14.6
func (fs *LocalFileSystem) Rmdir(name string) error
func (*LocalFileSystem) StatFs ¶ added in v0.14.6
func (fs *LocalFileSystem) StatFs(name string) *base.StatfsOut
func (*LocalFileSystem) String ¶ added in v0.14.6
func (fs *LocalFileSystem) String() string
Used for pretty printing.
func (*LocalFileSystem) Symlink ¶ added in v0.14.6
func (fs *LocalFileSystem) Symlink(value string, linkName string) error
Symlinks.
func (*LocalFileSystem) Truncate ¶ added in v0.14.6
func (fs *LocalFileSystem) Truncate(name string, size uint64) error
func (*LocalFileSystem) Unlink ¶ added in v0.14.6
func (fs *LocalFileSystem) Unlink(name string) error
type UnderFileStorage ¶
type UnderFileStorage interface {
// Used for pretty printing.
String() string
// Attributes. This function is the main entry point, through
// which FUSE discovers which files and directories exist.
//
// If the filesystem wants to implement hard-links, it should
// return consistent non-zero FileInfo.Ino data. Using
// hardlinks incurs a performance hit.
GetAttr(name string) (*base.FileInfo, error)
// These should update the file's ctime too.
// Note: raw FUSE setattr is translated into Chmod/Chown/Utimens in the higher level APIs.
Chmod(name string, mode uint32) error
Chown(name string, uid uint32, gid uint32) error
Utimens(name string, Atime *time.Time, Mtime *time.Time) error
Truncate(name string, size uint64) error
Access(name string, mode, callerUid, callerGid uint32) error
// Tree structure
Link(oldName string, newName string) error
Mkdir(name string, mode uint32) error
Mknod(name string, mode uint32, dev uint32) error
Rename(oldName string, newName string) error
Rmdir(name string) error
Unlink(name string) error
// Extended attributes.
GetXAttr(name string, attribute string) (data []byte, err error)
ListXAttr(name string) (attributes []string, err error)
RemoveXAttr(name string, attr string) error
SetXAttr(name string, attr string, data []byte, flags int) error
// File handling. If opening for writing, the file's mtime
// should be updated too.
Open(name string, flags uint32, size uint64) (FileHandle, error)
Create(name string, flags uint32, mode uint32) (FileHandle, error)
// Directory handling
ReadDir(name string) (stream []DirEntry, err error)
// Symlinks.
Symlink(value string, linkName string) error
Readlink(name string) (string, error)
StatFs(name string) *base.StatfsOut
Get(name string, flags uint32, off, limit int64) (io.ReadCloser, error)
Put(name string, reader io.Reader) error
}
under file storage interface, copy from pathfs.FileSystem, and remove api OnMount and OnUnmount
func NewHdfsFileSystem ¶
func NewHdfsFileSystem(properties map[string]interface{}) (UnderFileStorage, error)
func NewHdfsWithKerberosFileSystem ¶
func NewHdfsWithKerberosFileSystem(properties map[string]interface{}) (UnderFileStorage, error)
func NewLocalFileSystem ¶
func NewLocalFileSystem(properties map[string]interface{}) (UnderFileStorage, error)
A FUSE filesystem that shunts all request to an underlying file system. Its main purpose is to provide test coverage without having to build a synthetic filesystem.
func NewLocalMountFileSystem ¶ added in v0.14.3
func NewLocalMountFileSystem(properties map[string]interface{}) (UnderFileStorage, error)
func NewObjectFileSystem ¶ added in v0.14.6
func NewObjectFileSystem(properties map[string]interface{}) (UnderFileStorage, error)
func NewS3FileSystem ¶
func NewS3FileSystem(properties map[string]interface{}) (UnderFileStorage, error)
func NewSftpFileSystem ¶
func NewSftpFileSystem(properties map[string]interface{}) (UnderFileStorage, error)