本文整理汇总了Golang中github.com/hanwen/go-fuse/fuse.NewDevNullFile函数的典型用法代码示例。如果您正苦于以下问题:Golang NewDevNullFile函数的具体用法?Golang NewDevNullFile怎么用?Golang NewDevNullFile使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewDevNullFile函数的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Open
func (me *UnionFs) Open(name string, flags uint32, context *fuse.Context) (fuseFile fuse.File, status fuse.Status) {
if name == _DROP_CACHE {
if flags&fuse.O_ANYWRITE != 0 {
log.Println("Forced cache drop on", me)
me.DropBranchCache(nil)
me.DropDeletionCache()
me.DropSubFsCaches()
me.nodeFs.ForgetClientInodes()
}
return fuse.NewDevNullFile(), fuse.OK
}
r := me.getBranch(name)
if r.branch < 0 {
// This should not happen, as a GetAttr() should have
// already verified existence.
log.Println("UnionFs: open of non-existent file:", name)
return nil, fuse.ENOENT
}
if flags&fuse.O_ANYWRITE != 0 && r.branch > 0 {
code := me.Promote(name, r, context)
if code != fuse.OK {
return nil, code
}
r.branch = 0
now := time.Now()
r.attr.SetTimes(nil, &now, nil)
me.branchCache.Set(name, r)
}
fuseFile, status = me.fileSystems[r.branch].Open(name, uint32(flags), context)
if fuseFile != nil {
fuseFile = me.newUnionFsFile(fuseFile, r.branch)
}
return fuseFile, status
}
示例2: Open
func (me *EntryFs) Open(name string, flags uint32, context *fuse.Context) (file fuse.File, code fuse.Status) {
if name == me.FileInfo.Name {
return fuse.NewDevNullFile(), fuse.OK
}
return nil, fuse.ENOENT
}
示例3: Open
func (me *UnionFs) Open(name string, flags uint32) (fuseFile fuse.File, status fuse.Status) {
if name == _DROP_CACHE {
if flags&fuse.O_ANYWRITE != 0 {
log.Println("Forced cache drop on", me.Name())
me.DropBranchCache(nil)
me.DropDeletionCache()
me.DropSubFsCaches()
}
return fuse.NewDevNullFile(), fuse.OK
}
r := me.getBranch(name)
if r.branch < 0 {
// This should not happen, as a GetAttr() should have
// already verified existence.
log.Println("UnionFs: open of non-existent file:", name)
return nil, fuse.ENOENT
}
if flags&fuse.O_ANYWRITE != 0 && r.branch > 0 {
code := me.Promote(name, r)
if code != fuse.OK {
return nil, code
}
r.branch = 0
r.attr.Mtime_ns = time.Nanoseconds()
me.branchCache.Set(name, r)
}
return me.fileSystems[r.branch].Open(name, uint32(flags))
}
示例4: Open
func (me *AutoUnionFs) Open(path string, flags uint32, context *fuse.Context) (fuse.File, fuse.Status) {
if path == filepath.Join(_STATUS, _VERSION) {
if flags&fuse.O_ANYWRITE != 0 {
return nil, fuse.EPERM
}
return fuse.NewDataFile([]byte(fuse.Version())), fuse.OK
}
if path == filepath.Join(_CONFIG, _SCAN_CONFIG) {
if flags&fuse.O_ANYWRITE != 0 {
me.updateKnownFses()
}
return fuse.NewDevNullFile(), fuse.OK
}
return nil, fuse.ENOENT
}
示例5: Open
func (me *UnionFs) Open(name string, flags uint32) (fuseFile fuse.File, status fuse.Status) {
if name == _DROP_CACHE {
if flags&fuse.O_ANYWRITE != 0 {
me.DropCaches()
}
return fuse.NewDevNullFile(), fuse.OK
}
r := me.getBranch(name)
if flags&fuse.O_ANYWRITE != 0 && r.branch > 0 {
code := me.Promote(name, r)
if code != fuse.OK {
return nil, code
}
r.branch = 0
r.attr.Mtime_ns = time.Nanoseconds()
me.branchCache.Set(name, r)
}
return me.fileSystems[r.branch].Open(name, uint32(flags))
}
示例6: Open
func (me *devNullNode) Open(flags uint32, context *fuse.Context) (file fuse.File, code fuse.Status) {
return fuse.NewDevNullFile(), fuse.OK
}