Documentation ¶
Index ¶
- Constants
- Variables
- func NewDir(s *Super, i *Inode) fs.Node
- func NewFile(s *Super, i *Inode) fs.Node
- func ParseError(err error) fuse.Errno
- func ParseType(t uint32) fuse.DirentType
- type DentryCache
- type Dir
- func (d *Dir) Attr(ctx context.Context, a *fuse.Attr) error
- func (d *Dir) Create(ctx context.Context, req *fuse.CreateRequest, resp *fuse.CreateResponse) (fs.Node, fs.Handle, error)
- func (d *Dir) Forget()
- func (d *Dir) Fsync(ctx context.Context, req *fuse.FsyncRequest) error
- func (d *Dir) Getxattr(ctx context.Context, req *fuse.GetxattrRequest, resp *fuse.GetxattrResponse) error
- func (d *Dir) Link(ctx context.Context, req *fuse.LinkRequest, old fs.Node) (fs.Node, error)
- func (d *Dir) Listxattr(ctx context.Context, req *fuse.ListxattrRequest, resp *fuse.ListxattrResponse) error
- func (d *Dir) Lookup(ctx context.Context, req *fuse.LookupRequest, resp *fuse.LookupResponse) (fs.Node, error)
- func (d *Dir) Mkdir(ctx context.Context, req *fuse.MkdirRequest) (fs.Node, error)
- func (d *Dir) Mknod(ctx context.Context, req *fuse.MknodRequest) (fs.Node, error)
- func (d *Dir) ReadDirAll(ctx context.Context) ([]fuse.Dirent, error)
- func (d *Dir) Remove(ctx context.Context, req *fuse.RemoveRequest) error
- func (d *Dir) Removexattr(ctx context.Context, req *fuse.RemovexattrRequest) error
- func (d *Dir) Rename(ctx context.Context, req *fuse.RenameRequest, newDir fs.Node) error
- func (d *Dir) Setattr(ctx context.Context, req *fuse.SetattrRequest, resp *fuse.SetattrResponse) error
- func (d *Dir) Setxattr(ctx context.Context, req *fuse.SetxattrRequest) error
- func (d *Dir) Symlink(ctx context.Context, req *fuse.SymlinkRequest) (fs.Node, error)
- type File
- func (f *File) Attr(ctx context.Context, a *fuse.Attr) error
- func (f *File) Flush(ctx context.Context, req *fuse.FlushRequest) (err error)
- func (f *File) Forget()
- func (f *File) Fsync(ctx context.Context, req *fuse.FsyncRequest) (err error)
- func (f *File) Getxattr(ctx context.Context, req *fuse.GetxattrRequest, resp *fuse.GetxattrResponse) error
- func (f *File) Listxattr(ctx context.Context, req *fuse.ListxattrRequest, resp *fuse.ListxattrResponse) error
- func (f *File) Open(ctx context.Context, req *fuse.OpenRequest, resp *fuse.OpenResponse) (handle fs.Handle, err error)
- func (f *File) Read(ctx context.Context, req *fuse.ReadRequest, resp *fuse.ReadResponse) (err error)
- func (f *File) Readlink(ctx context.Context, req *fuse.ReadlinkRequest) (string, error)
- func (f *File) Release(ctx context.Context, req *fuse.ReleaseRequest) (err error)
- func (f *File) Removexattr(ctx context.Context, req *fuse.RemovexattrRequest) error
- func (f *File) Setattr(ctx context.Context, req *fuse.SetattrRequest, resp *fuse.SetattrResponse) error
- func (f *File) Setxattr(ctx context.Context, req *fuse.SetxattrRequest) error
- func (f *File) Write(ctx context.Context, req *fuse.WriteRequest, resp *fuse.WriteResponse) (err error)
- type Inode
- type InodeCache
- type MountOption
- type OrphanInodeList
- type Super
- func (s *Super) ClusterName() string
- func (s *Super) GetRate(w http.ResponseWriter, r *http.Request)
- func (s *Super) InodeGet(ino uint64) (*Inode, error)
- func (s *Super) Root() (fs.Node, error)
- func (s *Super) SetRate(w http.ResponseWriter, r *http.Request)
- func (s *Super) Statfs(ctx context.Context, req *fuse.StatfsRequest, resp *fuse.StatfsResponse) error
Constants ¶
const ( DefaultBlksize = uint32(1) << 12 DefaultMaxNameLen = uint32(256) )
const ( DefaultInodeExpiration = 120 * time.Second MaxInodeCache = 10000000 // in terms of the number of items )
const ( // MinInodeCacheEvictNum is used in the foreground eviction. // When clearing the inodes from the cache, it stops as soon as 10 inodes have been evicted. MinInodeCacheEvictNum = 10 // MaxInodeCacheEvictNum is used in the back ground. We can evict 200000 inodes at max. MaxInodeCacheEvictNum = 200000 BgEvictionInterval = 2 * time.Minute )
const (
DeleteExtentsTimeout = 600 * time.Second
)
const ( // the expiration duration of the dentry in the cache (used internally) DentryValidDuration = 5 * time.Second )
const (
LogTimeFormat = "20060102150405000"
)
const (
RootInode = proto.RootIno
)
Variables ¶
var ( // The following two are used in the FUSE cache // every time the lookup will be performed on the fly, and the result will not be cached LookupValidDuration = 5 * time.Second // the expiration duration of the attributes in the FUSE cache AttrValidDuration = 30 * time.Second )
Functions ¶
Types ¶
type DentryCache ¶
DentryCache defines the dentry cache.
func (*DentryCache) Delete ¶
func (dc *DentryCache) Delete(name string)
Delete deletes the item based on the given key.
func (*DentryCache) Get ¶
func (dc *DentryCache) Get(name string) (uint64, bool)
Get gets the item from the cache based on the given key.
func (*DentryCache) Put ¶
func (dc *DentryCache) Put(name string, ino uint64)
Put puts an item into the cache.
type Dir ¶
type Dir struct {
// contains filtered or unexported fields
}
Dir defines the structure of a directory
func (*Dir) Create ¶
func (d *Dir) Create(ctx context.Context, req *fuse.CreateRequest, resp *fuse.CreateResponse) (fs.Node, fs.Handle, error)
Create handles the create request.
func (*Dir) Forget ¶
func (d *Dir) Forget()
Forget is called when the evict is invoked from the kernel.
func (*Dir) Getxattr ¶
func (d *Dir) Getxattr(ctx context.Context, req *fuse.GetxattrRequest, resp *fuse.GetxattrResponse) error
Getxattr has not been implemented yet.
func (*Dir) Listxattr ¶
func (d *Dir) Listxattr(ctx context.Context, req *fuse.ListxattrRequest, resp *fuse.ListxattrResponse) error
Listxattr has not been implemented yet.
func (*Dir) Lookup ¶
func (d *Dir) Lookup(ctx context.Context, req *fuse.LookupRequest, resp *fuse.LookupResponse) (fs.Node, error)
Lookup handles the lookup request.
func (*Dir) ReadDirAll ¶
ReadDirAll gets all the dentries in a directory and puts them into the cache.
func (*Dir) Removexattr ¶
Removexattr has not been implemented yet.
func (*Dir) Setattr ¶
func (d *Dir) Setattr(ctx context.Context, req *fuse.SetattrRequest, resp *fuse.SetattrResponse) error
Setattr handles the setattr request.
type File ¶
File defines the structure of a file.
func (*File) Forget ¶
func (f *File) Forget()
Forget evicts the inode of the current file. This can only happen when the inode is on the orphan list.
func (*File) Getxattr ¶
func (f *File) Getxattr(ctx context.Context, req *fuse.GetxattrRequest, resp *fuse.GetxattrResponse) error
Getxattr has not been implemented yet.
func (*File) Listxattr ¶
func (f *File) Listxattr(ctx context.Context, req *fuse.ListxattrRequest, resp *fuse.ListxattrResponse) error
Listxattr has not been implemented yet.
func (*File) Open ¶
func (f *File) Open(ctx context.Context, req *fuse.OpenRequest, resp *fuse.OpenResponse) (handle fs.Handle, err error)
Open handles the open request.
func (*File) Read ¶
func (f *File) Read(ctx context.Context, req *fuse.ReadRequest, resp *fuse.ReadResponse) (err error)
Read handles the read request.
func (*File) Removexattr ¶
Removexattr has not been implemented yet.
func (*File) Setattr ¶
func (f *File) Setattr(ctx context.Context, req *fuse.SetattrRequest, resp *fuse.SetattrResponse) error
Setattr handles the setattr request.
func (*File) Write ¶
func (f *File) Write(ctx context.Context, req *fuse.WriteRequest, resp *fuse.WriteResponse) (err error)
Write handles the write request.
type Inode ¶
type Inode struct {
// contains filtered or unexported fields
}
Inode defines the structure of an inode.
type InodeCache ¶
InodeCache defines the structure of the inode cache.
func NewInodeCache ¶
func NewInodeCache(exp time.Duration, maxElements int) *InodeCache
NewInodeCache returns a new inode cache.
func (*InodeCache) Delete ¶
func (ic *InodeCache) Delete(ino uint64)
Delete deletes the inode based on the given inode ID.
func (*InodeCache) Get ¶
func (ic *InodeCache) Get(ino uint64) *Inode
Get returns the inode based on the given inode ID.
func (*InodeCache) Put ¶
func (ic *InodeCache) Put(inode *Inode)
Put puts the given inode into the inode cache.
type MountOption ¶ added in v1.4.0
type MountOption struct { MountPoint string Volname string Owner string Master string Logpath string Loglvl string Profport string IcacheTimeout int64 LookupValid int64 AttrValid int64 ReadRate int64 WriteRate int64 EnSyncWrite int64 AutoInvalData int64 UmpDatadir string Rdonly bool WriteCache bool KeepCache bool }
type OrphanInodeList ¶
OrphanInodeList defines the orphan inode list, which is a list of orphan inodes. An orphan inode is the inode whose nlink value is 0.
func NewOrphanInodeList ¶
func NewOrphanInodeList() *OrphanInodeList
NewOrphanInodeList returns a new orphan inode list.
func (*OrphanInodeList) Evict ¶
func (l *OrphanInodeList) Evict(ino uint64) bool
Evict remove the given inode from the orphan inode list, and evicts it.
func (*OrphanInodeList) Put ¶
func (l *OrphanInodeList) Put(ino uint64)
Put puts an inode into the orphan inode list.
type Super ¶
type Super struct {
// contains filtered or unexported fields
}
Super defines the struct of a super block.
func (*Super) ClusterName ¶
ClusterName returns the cluster name.
func (*Super) GetRate ¶ added in v1.4.0
func (s *Super) GetRate(w http.ResponseWriter, r *http.Request)
func (*Super) SetRate ¶ added in v1.4.0
func (s *Super) SetRate(w http.ResponseWriter, r *http.Request)
func (*Super) Statfs ¶
func (s *Super) Statfs(ctx context.Context, req *fuse.StatfsRequest, resp *fuse.StatfsResponse) error
Statfs handles the Statfs request and returns a set of statistics.