Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ChooseTempDirLimitNumFiles ¶
func ChooseTempDirLimitNumFiles() (limit int)
Choose a reasonable value for ServerConfig.TempDirLimitNumFiles based on process limits.
Types ¶
type GenerationBackedInode ¶
A common interface for inodes backed by particular object generations. Implemented by FileInode and SymlinkInode.
type ServerConfig ¶
type ServerConfig struct {
// A clock used for modification times and cache expiration.
Clock timeutil.Clock
// The bucket that the file system is to export.
Bucket gcs.Bucket
// The temporary directory to use for local caching, or the empty string to
// use the system default.
TempDir string
// A desired limit on the number of open files used for storing temporary
// object contents. May not be obeyed if there is a large number of dirtied
// files that have not been flushed or closed.
//
// Most users will want to use ChooseTempDirLimitNumFiles to choose this.
TempDirLimitNumFiles int
// A desired limit on temporary space usage, in bytes. May not be obeyed if
// there is a large volume of dirtied files that have not been flushed or
// closed.
TempDirLimitBytes int64
// If set to a non-zero value N, the file system will read objects from GCS a
// chunk at a time with a maximum read size of N, caching each chunk
// independently. The part about separate caching does not apply to dirty
// files, for which the entire contents will be in the temporary directory
// regardless of this setting.
GCSChunkSize uint64
// By default, if a bucket contains the object "foo/bar" but no object named
// "foo/", it's as if the directory doesn't exist. This allows us to have
// non-flaky name resolution code.
//
// Setting this bool to true enables a mode where object listings are
// consulted to allow for the directory in the situation above to exist. Note
// that this has drawbacks in the form of name resolution flakiness and
// surprising behavior.
//
// See docs/semantics.md for more info.
ImplicitDirectories bool
// By default, the file system will always show nlink == 1 for every inode,
// regardless of whether its backing object has been deleted or overwritten.
//
// Setting SupportNlink to true causes the file system to respond to fuse
// getattr requests with nlink == 0 for file inodes in the cases mentioned
// above. This requires a round trip to GCS for every getattr, which can be
// quite slow.
SupportNlink bool
// If non-zero, each directory will maintain a cache from child name to
// information about whether that name exists as a file and/or directory.
// This may speed up calls to look up and stat inodes, especially when
// combined with a stat-caching GCS bucket, but comes at the cost of
// consistency: if the child is removed and recreated with a different type
// before the expiration, we may fail to find it.
DirTypeCacheTTL time.Duration
// The UID and GID that owns all inodes in the file system.
Uid uint32
Gid uint32
// Permissions bits to use for files and directories. No bits outside of
// os.ModePerm may be set.
FilePerms os.FileMode
DirPerms os.FileMode
}
Click to show internal directories.
Click to hide internal directories.