Documentation
¶
Overview ¶
Package cephfs contains a set of wrappers around Ceph's libcephfs API.
Index ¶
- Constants
- type AtFlags
- type CephFSError
- type CephStatx
- type DType
- type DirEntry
- type DirEntryPlus
- type Directory
- type FallocFlags
- type File
- func (f *File) Close() error
- func (f *File) Fallocate(mode FallocFlags, offset, length int64) error
- func (f *File) Fchmod(mode uint32) error
- func (f *File) Fchown(user uint32, group uint32) error
- func (f *File) Flock(operation LockOp, owner uint64) error
- func (f *File) Fstatx(want StatxMask, flags AtFlags) (*CephStatx, error)
- func (f *File) Fsync(sync SyncChoice) error
- func (f *File) Read(buf []byte) (int, error)
- func (f *File) ReadAt(buf []byte, offset int64) (int, error)
- func (f *File) Seek(offset int64, whence int) (int64, error)
- func (f *File) Sync() error
- func (f *File) Write(buf []byte) (int, error)
- func (f *File) WriteAt(buf []byte, offset int64) (int, error)
- type Inode
- type LockOp
- type MountInfo
- func (mount *MountInfo) ChangeDir(path string) error
- func (mount *MountInfo) Chmod(path string, mode uint32) error
- func (mount *MountInfo) Chown(path string, user uint32, group uint32) error
- func (mount *MountInfo) CurrentDir() string
- func (mount *MountInfo) GetConfigOption(option string) (string, error)
- func (mount *MountInfo) GetFsCid() (int64, error)
- func (mount *MountInfo) Init() error
- func (mount *MountInfo) IsMounted() bool
- func (mount *MountInfo) Link(oldname, newname string) error
- func (mount *MountInfo) MakeDir(path string, mode uint32) error
- func (mount *MountInfo) MdsCommand(mdsSpec string, args [][]byte) ([]byte, string, error)
- func (mount *MountInfo) MdsCommandWithInputBuffer(mdsSpec string, args [][]byte, inputBuffer []byte) ([]byte, string, error)
- func (mount *MountInfo) Mount() error
- func (mount *MountInfo) MountWithRoot(root string) error
- func (mount *MountInfo) Open(path string, flags int, mode uint32) (*File, error)
- func (mount *MountInfo) OpenDir(path string) (*Directory, error)
- func (mount *MountInfo) ReadDefaultConfigFile() error
- func (mount *MountInfo) Readlink(path string) (string, error)
- func (mount *MountInfo) Release() error
- func (mount *MountInfo) RemoveDir(path string) error
- func (mount *MountInfo) Rename(from, to string) error
- func (mount *MountInfo) SetConfigOption(option, value string) error
- func (mount *MountInfo) SetMountPerms(perm *UserPerm) error
- func (mount *MountInfo) Statx(path string, want StatxMask, flags AtFlags) (*CephStatx, error)
- func (mount *MountInfo) Symlink(existing, newname string) error
- func (mount *MountInfo) SyncFs() error
- func (mount *MountInfo) Unlink(path string) error
- func (mount *MountInfo) Unmount() error
- type StatxMask
- type SyncChoice
- type Timespec
- type UserPerm
Constants ¶
const ( // DTypeBlk indicates a directory entry is a block device. DTypeBlk = DType(C.DT_BLK) // DTypeChr indicates a directory entry is a character device. DTypeChr = DType(C.DT_CHR) // DTypeDir indicates a directory entry is a directory. DTypeDir = DType(C.DT_DIR) // DTypeFIFO indicates a directory entry is a named pipe (FIFO). DTypeFIFO = DType(C.DT_FIFO) // DTypeLnk indicates a directory entry is a symbolic link. DTypeLnk = DType(C.DT_LNK) // DTypeReg indicates a directory entry is a regular file. DTypeReg = DType(C.DT_REG) // DTypeSock indicates a directory entry is a UNIX domain socket. DTypeSock = DType(C.DT_SOCK) // DTypeUnknown indicates that the file type could not be determined. DTypeUnknown = DType(C.DT_UNKNOWN) )
const ( // SeekSet is used with Seek to set the absolute position in the file. SeekSet = int(C.SEEK_SET) // SeekCur is used with Seek to position the file relative to the current // position. SeekCur = int(C.SEEK_CUR) // SeekEnd is used with Seek to position the file relative to the end. SeekEnd = int(C.SEEK_END) )
const ( // SyncAll will synchronize both data and metadata. SyncAll = SyncChoice(0) // SyncDataOnly will synchronize only data. SyncDataOnly = SyncChoice(1) )
const ( // FallocNoFlag means default option. FallocNoFlag = FallocFlags(0) // FallocFlKeepSize specifies that the file size will not be changed. FallocFlKeepSize = FallocFlags(C.FALLOC_FL_KEEP_SIZE) // FallocFlPunchHole specifies that the operation is to deallocate // space and zero the byte range. FallocFlPunchHole = FallocFlags(C.FALLOC_FL_PUNCH_HOLE) )
const ( // LockSH places a shared lock. // More than one process may hold a shared lock for a given file at a given time. LockSH = LockOp(C.LOCK_SH) // LockEX places an exclusive lock. // Only one process may hold an exclusive lock for a given file at a given time. LockEX = LockOp(C.LOCK_EX) // LockUN removes and existing lock held by this process. LockUN = LockOp(C.LOCK_UN) // LockNB can be ORed with any of the above to make a nonblocking call. LockNB = LockOp(C.LOCK_NB) )
const ( // StatxMode requests the mode value be filled in. StatxMode = StatxMask(C.CEPH_STATX_MODE) // StatxNlink requests the nlink value be filled in. StatxNlink = StatxMask(C.CEPH_STATX_NLINK) // StatxUid requests the uid value be filled in. StatxUid = StatxMask(C.CEPH_STATX_UID) // StatxRdev requests the rdev value be filled in. StatxRdev = StatxMask(C.CEPH_STATX_RDEV) // StatxAtime requests the access-time value be filled in. StatxAtime = StatxMask(C.CEPH_STATX_ATIME) // StatxMtime requests the modified-time value be filled in. StatxMtime = StatxMask(C.CEPH_STATX_MTIME) // StatxIno requests the inode be filled in. StatxIno = StatxMask(C.CEPH_STATX_INO) // StatxSize requests the size value be filled in. StatxSize = StatxMask(C.CEPH_STATX_SIZE) // StatxBlocks requests the blocks value be filled in. StatxBlocks = StatxMask(C.CEPH_STATX_BLOCKS) // StatxBasicStats requests all the fields that are part of a // traditional stat call. StatxBasicStats = StatxMask(C.CEPH_STATX_BASIC_STATS) // StatxBtime requests the birth-time value be filled in. StatxBtime = StatxMask(C.CEPH_STATX_BTIME) // StatxVersion requests the version value be filled in. StatxVersion = StatxMask(C.CEPH_STATX_VERSION) // StatxAllStats requests all known stat values be filled in. StatxAllStats = StatxMask(C.CEPH_STATX_ALL_STATS) )
const ( // AtNoAttrSync requests that the stat call only fetch locally-cached // values if possible, avoiding round trips to a back-end server. AtNoAttrSync = AtFlags(C.AT_NO_ATTR_SYNC) // AtSymlinkNofollow indicates the call should not follow symlinks // but operate on the symlink itself. AtSymlinkNofollow = AtFlags(C.AT_SYMLINK_NOFOLLOW) )
const ( // ErrNotConnected may be returned when client is not connected // to a cluster. ErrNotConnected = CephFSError(-C.ENOTCONN) )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AtFlags ¶ added in v0.4.0
type AtFlags uint
AtFlags represent flags to be passed to calls that control how files are used or referenced. For example, not following symlinks.
type CephFSError ¶
type CephFSError int
CephFSError represents an error condition returned from the CephFS APIs.
func (CephFSError) Error ¶
func (e CephFSError) Error() string
Error returns the error string for the CephFSError type.
type CephStatx ¶ added in v0.4.0
type CephStatx struct {
// Mask is a bitmask indicating what fields have been set.
Mask StatxMask
// Blksize represents the file system's block size.
Blksize uint32
// Nlink is the number of links for the file.
Nlink uint32
// Uid (user id) value for the file.
Uid uint32
// Gid (group id) value for the file.
Gid uint32
// Mode is the file's type and mode value.
Mode uint16
// Inode value for the file.
Inode Inode
// Size of the file in bytes.
Size uint64
// Blocks indicates the number of blocks allocated to the file.
Blocks uint64
// Dev describes the device containing this file system.
Dev uint64
// Rdev describes the device of this file, if the file is a device.
Rdev uint64
// Atime is the access time of this file.
Atime Timespec
// Ctime is the status change time of this file.
Ctime Timespec
// Mtime is the modification time of this file.
Mtime Timespec
// Btime is the creation (birth) time of this file.
Btime Timespec
// Version value for the file.
Version uint64
}
CephStatx instances are returned by extended stat (statx) calls. Note that CephStatx results are similar to but not identical to (Linux) system statx results.
type DType ¶ added in v0.4.0
type DType uint8
DType values are used to determine, when possible, the file type of a directory entry.
type DirEntry ¶ added in v0.3.0
type DirEntry struct {
// contains filtered or unexported fields
}
DirEntry represents an entry within a directory.
func (*DirEntry) DType ¶ added in v0.4.0
DType returns the Directory-entry's Type, indicating if it is a regular file, directory, etc. DType may be unknown and thus require an additional call (stat for example) if Unknown.
type DirEntryPlus ¶ added in v0.4.0
type DirEntryPlus struct {
DirEntry
// contains filtered or unexported fields
}
DirEntryPlus is a DirEntry plus additional data (stat) for an entry within a directory.
func (*DirEntryPlus) Statx ¶ added in v0.4.0
func (d *DirEntryPlus) Statx() *CephStatx
Statx returns cached stat metadata for the directory entry. This call does not incur an actual file system stat.
type Directory ¶ added in v0.3.0
type Directory struct {
// contains filtered or unexported fields
}
Directory represents an open directory handle.
func (*Directory) Close ¶ added in v0.3.0
Close the open directory handle.
Implements:
int ceph_closedir(struct ceph_mount_info *cmount, struct ceph_dir_result *dirp);
func (*Directory) ReadDir ¶ added in v0.3.0
ReadDir reads a single directory entry from the open Directory. A nil DirEntry pointer will be returned when the Directory stream has been exhausted.
Implements:
int ceph_readdir_r(struct ceph_mount_info *cmount, struct ceph_dir_result *dirp, struct dirent *de);
func (*Directory) ReadDirPlus ¶ added in v0.4.0
func (dir *Directory) ReadDirPlus( want StatxMask, flags AtFlags) (*DirEntryPlus, error)
ReadDirPlus reads a single directory entry and stat information from the open Directory. A nil DirEntryPlus pointer will be returned when the Directory stream has been exhausted. See Statx for a description of the wants and flags parameters.
Implements:
int ceph_readdirplus_r(struct ceph_mount_info *cmount, struct ceph_dir_result *dirp, struct dirent *de,
struct ceph_statx *stx, unsigned want, unsigned flags, struct Inode **out);
type FallocFlags ¶ added in v0.4.0
type FallocFlags int
FallocFlags represent flags which determine the operation to be performed on the given range. CephFS supports only following two flags.
type File ¶ added in v0.4.0
type File struct {
// contains filtered or unexported fields
}
File represents an open file descriptor in cephfs.
func (*File) Close ¶ added in v0.4.0
Close the file.
Implements:
int ceph_close(struct ceph_mount_info *cmount, int fd);
func (*File) Fallocate ¶ added in v0.4.0
func (f *File) Fallocate(mode FallocFlags, offset, length int64) error
Fallocate preallocates or releases disk space for the file for the given byte range, the flags determine the operation to be performed on the given range.
Implements:
int ceph_fallocate(struct ceph_mount_info *cmount, int fd, int mode, int64_t offset, int64_t length);
func (*File) Fchmod ¶ added in v0.4.0
Fchmod changes the mode bits (permissions) of a file.
Implements:
int ceph_fchmod(struct ceph_mount_info *cmount, int fd, mode_t mode);
func (*File) Fchown ¶ added in v0.4.0
Fchown changes the ownership of a file.
Implements:
int ceph_fchown(struct ceph_mount_info *cmount, int fd, int uid, int gid);
func (*File) Flock ¶ added in v0.4.0
Flock applies or removes an advisory lock on an open file. Param owner is the user-supplied identifier for the owner of the lock, must be an arbitrary integer.
Implements:
int ceph_flock(struct ceph_mount_info *cmount, int fd, int operation, uint64_t owner);
func (*File) Fstatx ¶ added in v0.4.0
Fstatx returns information about an open file.
Implements:
int ceph_fstatx(struct ceph_mount_info *cmount, int fd, struct ceph_statx *stx,
unsigned int want, unsigned int flags);
func (*File) Fsync ¶ added in v0.4.0
func (f *File) Fsync(sync SyncChoice) error
Fsync ensures the file content that may be cached is committed to stable storage. Pass SyncAll to have this call behave like standard fsync and synchronize all data and metadata. Pass SyncDataOnly to have this call behave more like fdatasync (on linux).
Implements:
int ceph_fsync(struct ceph_mount_info *cmount, int fd, int syncdataonly);
func (*File) Read ¶ added in v0.4.0
Read data from file. Up to len(buf) bytes will be read from the file. The number of bytes read will be returned. When nothing is left to read from the file, Read returns, 0, io.EOF.
func (*File) ReadAt ¶ added in v0.4.0
ReadAt will read data from the file starting at the given offset. Up to len(buf) bytes will be read from the file. The number of bytes read will be returned. When nothing is left to read from the file, ReadAt returns, 0, io.EOF.
func (*File) Seek ¶ added in v0.4.0
Seek will reposition the file stream based on the given offset.
Implements:
int64_t ceph_lseek(struct ceph_mount_info *cmount, int fd, int64_t offset, int whence);
func (*File) Sync ¶ added in v0.4.0
Sync ensures the file content that may be cached is committed to stable storage. Sync behaves like Go's os package File.Sync function.
type LockOp ¶ added in v0.4.0
type LockOp int
LockOp determines operations/type of locks which can be applied on a file.
type MountInfo ¶
type MountInfo struct {
// contains filtered or unexported fields
}
MountInfo exports ceph's ceph_mount_info from libcephfs.cc
func CreateFromRados ¶
CreateFromRados creates a mount handle using an existing rados cluster connection.
Implements:
int ceph_create_from_rados(struct ceph_mount_info **cmount, rados_t cluster);
func CreateMount ¶
CreateMount creates a mount handle for interacting with Ceph.
func CreateMountWithId ¶
CreateMountWithId creates a mount handle for interacting with Ceph. The caller can specify a unique id that will identify this client.
func (*MountInfo) CurrentDir ¶
CurrentDir gets the current working directory.
func (*MountInfo) GetConfigOption ¶ added in v0.3.0
GetConfigOption returns the value of the Ceph configuration option identified by the given name.
Implements:
int ceph_conf_get(struct ceph_mount_info *cmount, const char *option, char *buf, size_t len);
func (*MountInfo) GetFsCid ¶ added in v0.3.0
GetFsCid returns the cluster ID for a mounted ceph file system. If the object does not refer to a mounted file system, an error will be returned.
Note:
Only supported in Ceph Nautilus and newer.
Implements:
int64_t ceph_get_fs_cid(struct ceph_mount_info *cmount);
func (*MountInfo) Init ¶ added in v0.4.0
Init the file system client without actually mounting the file system.
Implements:
int ceph_init(struct ceph_mount_info *cmount);
func (*MountInfo) Link ¶ added in v0.4.0
Link creates a new link to an existing file.
Implements:
int ceph_link (struct ceph_mount_info *cmount, const char *existing, const char *newname);
func (*MountInfo) MdsCommand ¶
MdsCommand sends commands to the specified MDS.
func (*MountInfo) MdsCommandWithInputBuffer ¶
func (mount *MountInfo) MdsCommandWithInputBuffer(mdsSpec string, args [][]byte, inputBuffer []byte) ([]byte, string, error)
MdsCommandWithInputBuffer sends commands to the specified MDS, with an input buffer.
func (*MountInfo) Mount ¶
Mount the file system, establishing a connection capable of I/O.
Implements:
int ceph_mount(struct ceph_mount_info *cmount, const char *root);
func (*MountInfo) MountWithRoot ¶ added in v0.3.0
MountWithRoot mounts the file system using the path provided for the root of the mount. This establishes a connection capable of I/O.
Implements:
int ceph_mount(struct ceph_mount_info *cmount, const char *root);
func (*MountInfo) Open ¶ added in v0.4.0
Open a file at the given path. The flags are the same os flags as a local open call. Mode is the same mode bits as a local open call.
Implements:
int ceph_open(struct ceph_mount_info *cmount, const char *path, int flags, mode_t mode);
func (*MountInfo) OpenDir ¶ added in v0.3.0
OpenDir returns a new Directory handle open for I/O.
Implements:
int ceph_opendir(struct ceph_mount_info *cmount, const char *name, struct ceph_dir_result **dirpp);
func (*MountInfo) ReadDefaultConfigFile ¶
ReadDefaultConfigFile loads the ceph configuration from the specified config file.
func (*MountInfo) Readlink ¶ added in v0.4.0
Readlink returns the value of a symbolic link.
Implements:
int ceph_readlink(struct ceph_mount_info *cmount, const char *path, char *buf, int64_t size);
func (*MountInfo) Release ¶
Release destroys the mount handle.
Implements:
int ceph_release(struct ceph_mount_info *cmount);
func (*MountInfo) Rename ¶ added in v0.4.0
Rename a file or directory.
Implements:
int ceph_rename(struct ceph_mount_info *cmount, const char *from, const char *to);
func (*MountInfo) SetConfigOption ¶ added in v0.3.0
SetConfigOption sets the value of the configuration option identified by the given name.
Implements:
int ceph_conf_set(struct ceph_mount_info *cmount, const char *option, const char *value);
func (*MountInfo) SetMountPerms ¶ added in v0.4.0
SetMountPerms applies the given UserPerm to the mount object, which it will then use to define the connection's ownership credentials. This function must be called after Init but before Mount.
Implements:
int ceph_mount_perms_set(struct ceph_mount_info *cmount, UserPerm *perm);
func (*MountInfo) Statx ¶ added in v0.4.0
Statx returns information about a file/directory.
Implements:
int ceph_statx(struct ceph_mount_info *cmount, const char *path, struct ceph_statx *stx,
unsigned int want, unsigned int flags);
func (*MountInfo) Symlink ¶ added in v0.4.0
Symlink creates a symbolic link to an existing path.
Implements:
int ceph_symlink(struct ceph_mount_info *cmount, const char *existing, const char *newname);
type StatxMask ¶ added in v0.4.0
type StatxMask uint32
StatxMask values contain bit-flags indicating what data should be populated by a statx-type call.
type SyncChoice ¶ added in v0.4.0
type SyncChoice int
SyncChoice is used to control how metadata and/or data is sync'ed to the file system.
type Timespec ¶ added in v0.4.0
Timespec behaves similarly to C's struct timespec. Timespec is used to retain fidelity to the C based file systems apis that could be lossy with the use of Go time types.
type UserPerm ¶ added in v0.4.0
type UserPerm struct {
// contains filtered or unexported fields
}
UserPerm types may be used to get or change the credentials used by the connection or some operations.
func NewUserPerm ¶ added in v0.4.0
NewUserPerm creates a UserPerm pointer and the underlying ceph resources.
Implements:
UserPerm *ceph_userperm_new(uid_t uid, gid_t gid, int ngids, gid_t *gidlist);