cephfs

package
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 15, 2020 License: MIT Imports: 9 Imported by: 5

Documentation

Overview

Package cephfs contains a set of wrappers around Ceph's libcephfs API.

Index

Constants

View Source
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)
)
View Source
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)
)
View Source
const (
	// SyncAll will synchronize both data and metadata.
	SyncAll = SyncChoice(0)
	// SyncDataOnly will synchronize only data.
	SyncDataOnly = SyncChoice(1)
)
View Source
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)
)
View Source
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)
)
View Source
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)
)
View Source
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)
)
View Source
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

func (d *DirEntry) DType() DType

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.

func (*DirEntry) Inode added in v0.3.0

func (d *DirEntry) Inode() Inode

Inode returns the directory entry's inode number.

func (*DirEntry) Name added in v0.3.0

func (d *DirEntry) Name() string

Name returns the directory entry's name.

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

func (dir *Directory) Close() error

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

func (dir *Directory) ReadDir() (*DirEntry, error)

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);

func (*Directory) RewindDir added in v0.3.0

func (dir *Directory) RewindDir()

RewindDir sets the directory stream to the beginning of the directory.

Implements:

void ceph_rewinddir(struct ceph_mount_info *cmount, struct ceph_dir_result *dirp);

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

func (f *File) Close() error

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

func (f *File) Fchmod(mode uint32) error

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

func (f *File) Fchown(user uint32, group uint32) error

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

func (f *File) Flock(operation LockOp, owner uint64) error

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

func (f *File) Fstatx(want StatxMask, flags AtFlags) (*CephStatx, error)

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

func (f *File) Read(buf []byte) (int, error)

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

func (f *File) ReadAt(buf []byte, offset int64) (int, error)

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

func (f *File) Seek(offset int64, whence int) (int64, error)

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

func (f *File) Sync() error

Sync ensures the file content that may be cached is committed to stable storage. Sync behaves like Go's os package File.Sync function.

func (*File) Write added in v0.4.0

func (f *File) Write(buf []byte) (int, error)

Write data from buf to the file. The number of bytes written is returned.

func (*File) WriteAt added in v0.4.0

func (f *File) WriteAt(buf []byte, offset int64) (int, error)

WriteAt writes data from buf to the file at the specified offset. The number of bytes written is returned.

type Inode added in v0.3.0

type Inode uint64

Inode represents an inode number in the file system.

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

func CreateFromRados(conn *rados.Conn) (*MountInfo, error)

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

func CreateMount() (*MountInfo, error)

CreateMount creates a mount handle for interacting with Ceph.

func CreateMountWithId

func CreateMountWithId(id string) (*MountInfo, error)

CreateMountWithId creates a mount handle for interacting with Ceph. The caller can specify a unique id that will identify this client.

func (*MountInfo) ChangeDir

func (mount *MountInfo) ChangeDir(path string) error

ChangeDir changes the current working directory.

func (*MountInfo) Chmod

func (mount *MountInfo) Chmod(path string, mode uint32) error

Chmod changes the mode bits (permissions) of a file/directory.

func (*MountInfo) Chown

func (mount *MountInfo) Chown(path string, user uint32, group uint32) error

Chown changes the ownership of a file/directory.

func (*MountInfo) CurrentDir

func (mount *MountInfo) CurrentDir() string

CurrentDir gets the current working directory.

func (*MountInfo) GetConfigOption added in v0.3.0

func (mount *MountInfo) GetConfigOption(option string) (string, error)

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

func (mount *MountInfo) GetFsCid() (int64, error)

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

func (mount *MountInfo) Init() error

Init the file system client without actually mounting the file system.

Implements:

int ceph_init(struct ceph_mount_info *cmount);

func (*MountInfo) IsMounted

func (mount *MountInfo) IsMounted() bool

IsMounted checks mount status.

func (mount *MountInfo) Link(oldname, newname string) error

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) MakeDir

func (mount *MountInfo) MakeDir(path string, mode uint32) error

MakeDir creates a directory.

func (*MountInfo) MdsCommand

func (mount *MountInfo) MdsCommand(mdsSpec string, args [][]byte) ([]byte, string, error)

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

func (mount *MountInfo) Mount() error

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

func (mount *MountInfo) MountWithRoot(root string) error

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

func (mount *MountInfo) Open(path string, flags int, mode uint32) (*File, error)

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

func (mount *MountInfo) OpenDir(path string) (*Directory, error)

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

func (mount *MountInfo) ReadDefaultConfigFile() error

ReadDefaultConfigFile loads the ceph configuration from the specified config file.

func (mount *MountInfo) Readlink(path string) (string, error)

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

func (mount *MountInfo) Release() error

Release destroys the mount handle.

Implements:

int ceph_release(struct ceph_mount_info *cmount);

func (*MountInfo) RemoveDir

func (mount *MountInfo) RemoveDir(path string) error

RemoveDir removes a directory.

func (*MountInfo) Rename added in v0.4.0

func (mount *MountInfo) Rename(from, to string) error

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

func (mount *MountInfo) SetConfigOption(option, value string) error

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

func (mount *MountInfo) SetMountPerms(perm *UserPerm) error

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

func (mount *MountInfo) Statx(path string, want StatxMask, flags AtFlags) (*CephStatx, error)

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 (mount *MountInfo) Symlink(existing, newname string) error

Symlink creates a symbolic link to an existing path.

Implements:

int ceph_symlink(struct ceph_mount_info *cmount, const char *existing, const char *newname);

func (*MountInfo) SyncFs

func (mount *MountInfo) SyncFs() error

SyncFs synchronizes all filesystem data to persistent media.

func (mount *MountInfo) Unlink(path string) error

Unlink removes a file.

Implements:

int ceph_unlink(struct ceph_mount_info *cmount, const char *path);

func (*MountInfo) Unmount

func (mount *MountInfo) Unmount() error

Unmount the file system.

Implements:

int ceph_unmount(struct ceph_mount_info *cmount);

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

type Timespec unix.Timespec

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

func NewUserPerm(uid, gid int, gidlist []int) *UserPerm

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);

func (*UserPerm) Destroy added in v0.4.0

func (p *UserPerm) Destroy()

Destroy will explicitly free ceph resources associated with the UserPerm.

Implements:

void ceph_userperm_destroy(UserPerm *perm);

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL