本文整理汇总了Golang中github.com/jacobsa/fuse/fuseutil.NewFileSystemServer函数的典型用法代码示例。如果您正苦于以下问题:Golang NewFileSystemServer函数的具体用法?Golang NewFileSystemServer怎么用?Golang NewFileSystemServer使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewFileSystemServer函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: mount
// Mount the file system based on the supplied arguments, returning a
// fuse.MountedFileSystem that can be joined to wait for unmounting.
func mount(
ctx context.Context,
bucketName string,
mountPoint string,
flags *FlagStorage) (mfs *fuse.MountedFileSystem, err error) {
// Choose UID and GID.
uid, gid, err := MyUserAndGroup()
if err != nil {
err = fmt.Errorf("MyUserAndGroup: %v", err)
return
}
if int32(flags.Uid) == -1 {
flags.Uid = uid
}
if int32(flags.Gid) == -1 {
flags.Gid = gid
}
awsConfig := &aws.Config{
Region: aws.String("us-west-2"),
//LogLevel: aws.LogLevel(aws.LogDebug),
}
if len(flags.Endpoint) > 0 {
awsConfig.Endpoint = &flags.Endpoint
}
if flags.UsePathRequest {
awsConfig.S3ForcePathStyle = aws.Bool(true)
}
goofys := NewGoofys(bucketName, awsConfig, flags)
if goofys == nil {
err = fmt.Errorf("Mount: initialization failed")
return
}
server := fuseutil.NewFileSystemServer(goofys)
// Mount the file system.
mountCfg := &fuse.MountConfig{
FSName: bucketName,
Options: flags.MountOptions,
ErrorLogger: log.New(os.Stderr, "fuse: ", log.Flags()),
DisableWritebackCaching: true,
}
if flags.DebugFuse {
mountCfg.DebugLogger = log.New(os.Stderr, "fuse_debug: ", 0)
}
mfs, err = fuse.Mount(mountPoint, server, mountCfg)
if err != nil {
err = fmt.Errorf("Mount: %v", err)
return
}
return
}
开发者ID:jango2015,项目名称:goofys,代码行数:61,代码来源:main.go
示例2: NewHelloFS
// Create a file system with a fixed structure that looks like this:
//
// hello
// dir/
// world
//
// Each file contains the string "Hello, world!".
func NewHelloFS(clock timeutil.Clock) (server fuse.Server, err error) {
fs := &helloFS{
Clock: clock,
}
server = fuseutil.NewFileSystemServer(fs)
return
}
开发者ID:andrewgaul,项目名称:fuse,代码行数:15,代码来源:hello_fs.go
示例3: mount
// Mount the file system based on the supplied arguments, returning a
// fuse.MountedFileSystem that can be joined to wait for unmounting.
func mount(
ctx context.Context,
bucketName string,
mountPoint string,
flags *FlagStorage) (mfs *fuse.MountedFileSystem, err error) {
awsConfig := &aws.Config{
Region: &flags.Region,
Logger: GetLogger("s3"),
//LogLevel: aws.LogLevel(aws.LogDebug),
}
if len(flags.Profile) > 0 {
awsConfig.Credentials = credentials.NewSharedCredentials("", flags.Profile)
}
if len(flags.Endpoint) > 0 {
awsConfig.Endpoint = &flags.Endpoint
}
// deprecate flags.UsePathRequest
if flags.UsePathRequest {
log.Infoln("--use-path-request is deprecated, it's always on")
}
awsConfig.S3ForcePathStyle = aws.Bool(true)
goofys := NewGoofys(bucketName, awsConfig, flags)
if goofys == nil {
err = fmt.Errorf("Mount: initialization failed")
return
}
server := fuseutil.NewFileSystemServer(goofys)
fuseLog := GetLogger("fuse")
// Mount the file system.
mountCfg := &fuse.MountConfig{
FSName: bucketName,
Options: flags.MountOptions,
ErrorLogger: GetStdLogger(NewLogger("fuse"), logrus.ErrorLevel),
DisableWritebackCaching: true,
}
if flags.DebugFuse {
fuseLog.Level = logrus.DebugLevel
log.Level = logrus.DebugLevel
mountCfg.DebugLogger = GetStdLogger(fuseLog, logrus.DebugLevel)
}
mfs, err = fuse.Mount(mountPoint, server, mountCfg)
if err != nil {
err = fmt.Errorf("Mount: %v", err)
return
}
return
}
开发者ID:kahing,项目名称:goofys,代码行数:59,代码来源:main.go
示例4: NewFileSystem
// Create a file system whose sole contents are a file named "foo" and a
// directory named "bar".
//
// The file may be opened for reading and/or writing. Its initial contents are
// empty. Whenever a flush or fsync is received, the supplied function will be
// called with the current contents of the file and its status returned.
//
// The directory cannot be modified.
func NewFileSystem(
reportFlush func(string) error,
reportFsync func(string) error) (server fuse.Server, err error) {
fs := &flushFS{
reportFlush: reportFlush,
reportFsync: reportFsync,
}
server = fuseutil.NewFileSystemServer(fs)
return
}
开发者ID:BanzaiMan,项目名称:gcsfuse,代码行数:19,代码来源:flush_fs.go
示例5: SetUp
func (t *InterruptFSTest) SetUp(ti *TestInfo) {
var err error
// Create the file system.
t.fs = interruptfs.New()
AssertEq(nil, err)
t.Server = fuseutil.NewFileSystemServer(t.fs)
// Mount it.
t.SampleTest.SetUp(ti)
}
开发者ID:andrewgaul,项目名称:fuse,代码行数:12,代码来源:interrupt_fs_test.go
示例6: mount
// Mount the file system based on the supplied arguments, returning a
// fuse.MountedFileSystem that can be joined to wait for unmounting.
func mount(
ctx context.Context,
bucketName string,
mountPoint string,
flags *flagStorage) (mfs *fuse.MountedFileSystem, err error) {
// Choose UID and GID.
uid, gid, err := MyUserAndGroup()
if err != nil {
err = fmt.Errorf("MyUserAndGroup: %v", err)
return
}
if flags.Uid >= 0 {
uid = uint32(flags.Uid)
}
if flags.Gid >= 0 {
gid = uint32(flags.Gid)
}
if err != nil {
err = fmt.Errorf("setUpBucket: %v", err)
return
}
awsConfig := &aws.Config{
Region: aws.String("us-west-2"),
//LogLevel: aws.LogLevel(aws.LogDebug),
}
server := fuseutil.NewFileSystemServer(NewGoofys(bucketName, awsConfig, uid, gid))
// Mount the file system.
mountCfg := &fuse.MountConfig{
FSName: bucketName,
Options: flags.MountOptions,
ErrorLogger: log.New(os.Stderr, "fuse: ", log.Flags()),
}
if flags.DebugFuse {
mountCfg.DebugLogger = log.New(os.Stderr, "fuse_debug: ", 0)
}
mfs, err = fuse.Mount(mountPoint, server, mountCfg)
if err != nil {
err = fmt.Errorf("Mount: %v", err)
return
}
return
}
开发者ID:andrewgaul,项目名称:goofys,代码行数:53,代码来源:main.go
示例7: mount
func (s *GoofysTest) mount(t *C, mountPoint string) {
server := fuseutil.NewFileSystemServer(s.fs)
// Mount the file system.
mountCfg := &fuse.MountConfig{
FSName: s.fs.bucket,
Options: s.fs.flags.MountOptions,
ErrorLogger: GetStdLogger(NewLogger("fuse"), logrus.ErrorLevel),
DisableWritebackCaching: true,
}
_, err := fuse.Mount(mountPoint, server, mountCfg)
t.Assert(err, IsNil)
}
开发者ID:kahing,项目名称:goofys,代码行数:14,代码来源:goofys_test.go
示例8: Mount
func (t *TraceFS) Mount() (*fuse.MountedFileSystem, error) {
r, _ := t.newTrace(nil, "Mount", "Path=%s", t.MountPath)
defer r.Finish()
server := fuseutil.NewFileSystemServer(t)
fs, err := fuse.Mount(t.MountPath, server, t.MountConfig)
if err != nil {
r.LazyPrintf("KodingNetworkFS#Mount: err '%s'", err)
r.SetError()
return nil, err
}
return fs, nil
}
开发者ID:koding,项目名称:koding,代码行数:15,代码来源:tracefs.go
示例9: mount
// Mount the file system based on the supplied arguments, returning a
// fuse.MountedFileSystem that can be joined to wait for unmounting.
func mount(
ctx context.Context,
bucketName string,
mountPoint string,
flags *FlagStorage) (mfs *fuse.MountedFileSystem, err error) {
awsConfig := &aws.Config{
Region: aws.String("us-west-2"),
Logger: GetLogger("s3"),
//LogLevel: aws.LogLevel(aws.LogDebug),
}
if len(flags.Endpoint) > 0 {
awsConfig.Endpoint = &flags.Endpoint
}
if flags.UsePathRequest {
awsConfig.S3ForcePathStyle = aws.Bool(true)
}
goofys := NewGoofys(bucketName, awsConfig, flags)
if goofys == nil {
err = fmt.Errorf("Mount: initialization failed")
return
}
server := fuseutil.NewFileSystemServer(goofys)
fuseLog := GetLogger("fuse")
// Mount the file system.
mountCfg := &fuse.MountConfig{
FSName: bucketName,
Options: flags.MountOptions,
ErrorLogger: GetStdLogger(NewLogger("fuse"), logrus.ErrorLevel),
DisableWritebackCaching: true,
}
if flags.DebugFuse {
fuseLog.Level = logrus.DebugLevel
mountCfg.DebugLogger = GetStdLogger(fuseLog, logrus.DebugLevel)
}
mfs, err = fuse.Mount(mountPoint, server, mountCfg)
if err != nil {
err = fmt.Errorf("Mount: %v", err)
return
}
return
}
开发者ID:imjerrybao,项目名称:goofys,代码行数:50,代码来源:main.go
示例10: NewFileSystem
// Create a file system whose sole contents are a file named "foo" and a
// directory named "bar".
//
// The file "foo" may be opened for reading and/or writing, but reads and
// writes aren't supported. Additionally, any non-existent file or directory
// name may be created within any directory, but the resulting inode will
// appear to have been unlinked immediately.
//
// The file system maintains reference counts for the inodes involved. It will
// panic if a reference count becomes negative or if an inode ID is re-used
// after we expect it to be dead. Its Check method may be used to check that
// there are no inodes with unexpected reference counts remaining, after
// unmounting.
func NewFileSystem() (fs *ForgetFS) {
// Set up the actual file system.
impl := &fsImpl{
inodes: map[fuseops.InodeID]*inode{
cannedID_Root: &inode{
attributes: fuseops.InodeAttributes{
Nlink: 1,
Mode: 0777 | os.ModeDir,
},
},
cannedID_Foo: &inode{
attributes: fuseops.InodeAttributes{
Nlink: 1,
Mode: 0777,
},
},
cannedID_Bar: &inode{
attributes: fuseops.InodeAttributes{
Nlink: 1,
Mode: 0777 | os.ModeDir,
},
},
},
nextInodeID: cannedID_Next,
}
// The root inode starts with a lookup count of one.
impl.inodes[cannedID_Root].IncrementLookupCount()
// The canned inodes are supposed to be stable from the user's point of view,
// so we should allow them to be looked up at any point even if the kernel
// has balanced its lookups with its forgets. Ensure that they never go to
// zero until the file system is destroyed.
impl.inodes[cannedID_Foo].IncrementLookupCount()
impl.inodes[cannedID_Bar].IncrementLookupCount()
// Set up the mutex.
impl.mu = syncutil.NewInvariantMutex(impl.checkInvariants)
// Set up a wrapper that exposes only certain methods.
fs = &ForgetFS{
impl: impl,
server: fuseutil.NewFileSystemServer(impl),
}
return
}
开发者ID:andrewgaul,项目名称:fuse,代码行数:60,代码来源:forget_fs.go
示例11: runFuseTest
func (s *GoofysTest) runFuseTest(t *C, mountPoint string, umount bool, cmdArgs ...string) {
server := fuseutil.NewFileSystemServer(s.fs)
// Mount the file system.
mountCfg := &fuse.MountConfig{
FSName: s.fs.bucket,
Options: s.fs.flags.MountOptions,
ErrorLogger: GetStdLogger(NewLogger("fuse"), logrus.ErrorLevel),
DisableWritebackCaching: true,
}
_, err := fuse.Mount(mountPoint, server, mountCfg)
t.Assert(err, IsNil)
if umount {
defer func() {
err := fuse.Unmount(mountPoint)
t.Assert(err, IsNil)
}()
}
cmd := exec.Command(cmdArgs[0], cmdArgs[1:]...)
cmd.Env = append(cmd.Env, os.Environ()...)
cmd.Env = append(cmd.Env, "TRAVIS=true")
cmd.Env = append(cmd.Env, "FAST=true")
if isTravis() {
logger := NewLogger("test")
lvl := logrus.InfoLevel
logger.Formatter.(*logHandle).lvl = &lvl
w := logger.Writer()
cmd.Stdout = w
cmd.Stderr = w
}
err = cmd.Run()
t.Assert(err, IsNil)
}
开发者ID:x5u,项目名称:goofys,代码行数:39,代码来源:goofys_test.go
示例12: setUp
func (t *cachingFSTest) setUp(
ti *TestInfo,
lookupEntryTimeout time.Duration,
getattrTimeout time.Duration) {
var err error
// We assert things about whether or not mtimes are cached, but writeback
// caching causes them to always be cached. Turn it off.
t.MountConfig.DisableWritebackCaching = true
// Create the file system.
t.fs, err = cachingfs.NewCachingFS(lookupEntryTimeout, getattrTimeout)
AssertEq(nil, err)
t.Server = fuseutil.NewFileSystemServer(t.fs)
// Mount it.
t.SampleTest.SetUp(ti)
// Set up the mtime.
t.initialMtime = time.Date(2012, 8, 15, 22, 56, 0, 0, time.Local)
t.fs.SetMtime(t.initialMtime)
}
开发者ID:andrewgaul,项目名称:fuse,代码行数:23,代码来源:caching_fs_test.go
示例13: mount
// Mount the file system based on the supplied arguments, returning a
// fuse.MountedFileSystem that can be joined to wait for unmounting.
func mount(
ctx context.Context,
bucketName string,
mountPoint string,
flags *FlagStorage) (mfs *fuse.MountedFileSystem, err error) {
ossvfs := NewOssvfs(bucketName, flags)
if ossvfs == nil {
err = fmt.Errorf("Mount: initialization failed")
return
}
server := fuseutil.NewFileSystemServer(ossvfs)
fuseLog := GetLogger("fuse")
// Mount the file system.
mountCfg := &fuse.MountConfig{
FSName: bucketName,
Options: flags.MountOptions,
ErrorLogger: GetStdLogger(NewLogger("fuse"), logrus.ErrorLevel),
DisableWritebackCaching: true,
}
if flags.DebugFuse {
fuseLog.Level = logrus.DebugLevel
mountCfg.DebugLogger = GetStdLogger(fuseLog, logrus.DebugLevel)
}
mfs, err = fuse.Mount(mountPoint, server, mountCfg)
if err != nil {
err = fmt.Errorf("Mount: %v", err)
return
}
return
}
开发者ID:choleraehyq,项目名称:ossvfs,代码行数:38,代码来源:main.go
示例14: NewServer
// Create a fuse file system server according to the supplied configuration.
func NewServer(cfg *ServerConfig) (server fuse.Server, err error) {
// Check permissions bits.
if cfg.FilePerms&^os.ModePerm != 0 {
err = fmt.Errorf("Illegal file perms: %v", cfg.FilePerms)
return
}
if cfg.DirPerms&^os.ModePerm != 0 {
err = fmt.Errorf("Illegal dir perms: %v", cfg.FilePerms)
return
}
// Create the object syncer.
if cfg.TmpObjectPrefix == "" {
err = errors.New("You must set TmpObjectPrefix.")
return
}
syncer := gcsx.NewSyncer(
cfg.AppendThreshold,
cfg.TmpObjectPrefix,
cfg.Bucket)
// Set up the basic struct.
fs := &fileSystem{
mtimeClock: timeutil.RealClock(),
cacheClock: cfg.CacheClock,
bucket: cfg.Bucket,
syncer: syncer,
tempDir: cfg.TempDir,
implicitDirs: cfg.ImplicitDirectories,
inodeAttributeCacheTTL: cfg.InodeAttributeCacheTTL,
dirTypeCacheTTL: cfg.DirTypeCacheTTL,
uid: cfg.Uid,
gid: cfg.Gid,
fileMode: cfg.FilePerms,
dirMode: cfg.DirPerms | os.ModeDir,
inodes: make(map[fuseops.InodeID]inode.Inode),
nextInodeID: fuseops.RootInodeID + 1,
generationBackedInodes: make(map[string]inode.GenerationBackedInode),
implicitDirInodes: make(map[string]inode.DirInode),
handles: make(map[fuseops.HandleID]interface{}),
}
// Set up the root inode.
root := inode.NewDirInode(
fuseops.RootInodeID,
"", // name
fuseops.InodeAttributes{
Uid: fs.uid,
Gid: fs.gid,
Mode: fs.dirMode,
},
fs.implicitDirs,
fs.dirTypeCacheTTL,
cfg.Bucket,
fs.mtimeClock,
fs.cacheClock)
root.Lock()
root.IncrementLookupCount()
fs.inodes[fuseops.RootInodeID] = root
fs.implicitDirInodes[root.Name()] = root
root.Unlock()
// Set up invariant checking.
fs.mu = syncutil.NewInvariantMutex(fs.checkInvariants)
// Periodically garbage collect temporary objects.
var gcCtx context.Context
gcCtx, fs.stopGarbageCollecting = context.WithCancel(context.Background())
go garbageCollect(gcCtx, cfg.TmpObjectPrefix, fs.bucket)
server = fuseutil.NewFileSystemServer(fs)
return
}
开发者ID:kahing,项目名称:gcsfuse,代码行数:77,代码来源:fs.go
示例15: Mount
// Mount mounts an specified folder on user VM using Fuse in the specificed
// local path.
func (k *KodingNetworkFS) Mount() (*fuse.MountedFileSystem, error) {
server := fuseutil.NewFileSystemServer(k)
return fuse.Mount(k.MountPath, server, k.MountConfig)
}
开发者ID:koding,项目名称:koding,代码行数:6,代码来源:kodingnetworkfs.go
注:本文中的github.com/jacobsa/fuse/fuseutil.NewFileSystemServer函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论