Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
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 cache expiration. It is *not* used for inode times, for // which we use the wall clock. CacheClock 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 // 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 // How long to allow the kernel to cache inode attributes. // // Any given object generation in GCS is immutable, and a new generation // results in a new inode number. So every update from a remote system results // in a new inode number, and it's therefore safe to allow the kernel to cache // inode attributes. // // The one exception to the above logic is that objects can be _deleted_, in // which case stat::st_nlink changes. So choosing this value comes down to // whether you care about that field being up to date. InodeAttributeCacheTTL time.Duration // 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 // Files backed by on object of length at least AppendThreshold that have // only been appended to (i.e. none of the object's contents have been // dirtied) will be written out by "appending" to the object in GCS with this // process: // // 1. Write out a temporary object containing the appended contents whose // name begins with TmpObjectPrefix. // // 2. Compose the original object and the temporary object on top of the // original object. // // 3. Delete the temporary object. // // Note that if the process fails or is interrupted the temporary object will // not be cleaned up, so the user must ensure that TmpObjectPrefix is // periodically garbage collected. AppendThreshold int64 TmpObjectPrefix string }
Click to show internal directories.
Click to hide internal directories.