summaryrefslogtreecommitdiffstats
path: root/libglusterfsclient/src/libglusterfsclient.h
diff options
context:
space:
mode:
Diffstat (limited to 'libglusterfsclient/src/libglusterfsclient.h')
-rwxr-xr-xlibglusterfsclient/src/libglusterfsclient.h803
1 files changed, 773 insertions, 30 deletions
diff --git a/libglusterfsclient/src/libglusterfsclient.h b/libglusterfsclient/src/libglusterfsclient.h
index 87297ac132e..84881f78970 100755
--- a/libglusterfsclient/src/libglusterfsclient.h
+++ b/libglusterfsclient/src/libglusterfsclient.h
@@ -40,23 +40,6 @@ typedef struct {
void *dictref;
} glusterfs_iobuf_t;
-typedef struct {
- char *logfile;
- char *loglevel;
- struct {
- char *specfile;
- FILE *specfp;
- };
- char *volume_name;
- unsigned long lookup_timeout;
- unsigned long stat_timeout;
-} glusterfs_init_params_t;
-
-typedef void * glusterfs_handle_t;
-
-/* FIXME: how is glusterfs_file_t different from glusterfs_dir_t? */
-typedef void * glusterfs_file_t;
-typedef void * glusterfs_dir_t;
typedef
int (*glusterfs_readv_cbk_t) (int op_ret, int op_errno, glusterfs_iobuf_t *buf,
@@ -69,25 +52,146 @@ typedef
int (*glusterfs_get_cbk_t) (int op_ret, int op_errno, glusterfs_iobuf_t *buf,
struct stat *stbuf, void *cbk_data);
-/* Used to free the glusterfs_read_buf passed to the application from
- glusterfs_read_async_cbk
-*/
-void
-glusterfs_free (glusterfs_iobuf_t *buf);
-/* libglusterfsclient initialization function */
+/* Data Interface
+ * The first section describes the data structures required for
+ * using libglusterfsclient.
+ */
+
+/* This structure needs to be filled up and
+ * passed to te glusterfs_init function which uses
+ * the params passed herein to initialize a glusterfs
+ * client context and then connect to a glusterfs server.
+ */
+typedef struct {
+ char *logfile; /* Path to the file which will store
+ the log.
+ */
+ char *loglevel; /* The log level required for
+ reporting various events within
+ libglusterfsclient.
+ */
+ struct {
+ char *specfile; /* Users can either open a volume or
+ specfile and assign the pointer to
+ specfp, or just refer to the volume
+ /spec file path in specfile.
+ */
+ FILE *specfp;
+ };
+ char *volume_name; /* The volume file could describe many
+ volumes but the specific volume
+ within that file is chosen by
+ specifying the volume name here.
+ */
+ unsigned long lookup_timeout; /* libglusterclient provides the inode
+ numbers to be cached by the library.
+ The duration for which these are
+ cached are defined by lookup_timeout
+ . In Seconds.
+ */
+ unsigned long stat_timeout; /* The file attributes received from
+ a stat syscall can also be cached
+ for the duration specified in this
+ member. In Seconds.
+ */
+} glusterfs_init_params_t;
+
+
+
+/* This is the handle returned by glusterfs_init
+ * once the initialization is complete.
+ * Users should treat this as an opaque handle.
+ */
+typedef void * glusterfs_handle_t;
+
+
+
+/* These identifiers are used as handles for files and dirs.
+ * Users of libglusterfsclient should not in anyway try to interpret
+ * the actual structures these will point to.
+ */
+typedef void * glusterfs_file_t;
+typedef void * glusterfs_dir_t;
+
+
+/* Function Call Interface */
+/* libglusterfsclient initialization function.
+ * @ctx : the structure described above filled with required values.
+ *
+ * Returns NULL on failure and the non-NULL pointer on success.
+ * On failure, the error description might be present in the logfile
+ * depending on the log level.
+ */
glusterfs_handle_t
glusterfs_init (glusterfs_init_params_t *ctx);
+
+
+/* Used to destroy a glusterfs client context and the
+ * connection to the glusterfs server.
+ *
+ * @handle : The glusterfs handle returned by glusterfs_init.
+ */
int
glusterfs_fini (glusterfs_handle_t handle);
-/* For smaller files, application can use just glusterfs_get/glusterfs_get_async
+
+
+/* libglusterfs client provides two interfaces.
+ * 1. handle-based interface
+ * Functions that comprise the handle-based interface accept the
+ * glusterfs_handle_t as the first argument. It specifies the
+ * glusterfs client context over which to perform the operation.
+ *
+ * 2. Virtual Mount Point based interface:
+ * Functions that do not require a handle to be given in order to
+ * identify which client context to operate on. This interface
+ * internally determines the corresponding client context for the
+ * given path. The down-side is that a virtual mount point (VMP) needs to be
+ * registered with the library. A VMP is just a string that maps to a
+ * glusterfs_handle_t. The advantage of a VMP based interface is that
+ * a user program using multiple client contexts does not need to
+ * maintain its own mapping between paths and the corresponding
+ * handles.
+ */
+
+
+
+/* glusterfs_mount is the function that allows users to register a VMP
+ * along with the parameters, which will be used to initialize a
+ * context. Applications calling glusterfs_mount do not need to
+ * initialized a context using the glusterfs_init interface.
+ *
+ * @vmp : The virtual mount point.
+ * @ipars : Initialization parameters populated as described
+ * earlier.
+ *
+ * Returns 0 on success, and -1 on failure.
+ */
+int
+glusterfs_mount (char *vmp, glusterfs_init_params_t *ipars);
+
+
+
+/* glusterfs_umount is the VMP equivalent of glusterfs_fini.
+ *
+ * @vmp : The VMP which was initialized using glusterfs_mount.
+ *
+ * Returns 0 on sucess, and -1 on failure.
+ */
+int
+glusterfs_umount (char *vmp);
+
+
+
+/* For smaller files, application can use just
+ * glusterfs_get/glusterfs_get_async
* to read the whole content. Limit of the file-sizes to be read in
* glusterfs_get/glusterfs_get_async is passed in the size argument
*/
-/* glusterfs_get:
+/* glusterfs_glh_get:
* @handle : glusterfs handle
* @path : path to be looked upon
* @size : upper limit of file-sizes to be read in lookup
@@ -105,36 +209,147 @@ int
glusterfs_get_async (glusterfs_handle_t handle, const char *path, size_t size,
glusterfs_get_cbk_t cbk, void *cbk_data);
+
+
+/* Opens a file. Corresponds to the open syscall.
+ *
+ * @handle : Handle returned from glusterfs_init
+ * @path : Path to the file or directory on the glusterfs
+ * export. Must be absolute to the export on the server.
+ * @flags : flags to control open behaviour.
+ * @... : The mode_t argument that defines the mode for a new
+ * file, in case a new file is being created using the
+ * O_CREAT flag in @flags.
+ *
+ * Returns a non-NULL handle on success. NULL on failure and sets
+ * errno accordingly.
+ */
glusterfs_file_t
glusterfs_glh_open (glusterfs_handle_t handle, const char *path, int flags,
...);
+
+/* Opens a file without having to specify a handle.
+ *
+ * @path : Path to the file to open in the glusterfs export.
+ * The path to the file in glusterfs export must be
+ * pre-fixed with the VMP string registered with
+ * glusterfs_mount.
+ * @flags : flags to control open behaviour.
+ * @... : The mode_t argument that defines the mode for a new
+ * file, in case a new file is being created using the
+ * O_CREAT flag in @flags.
+ *
+ * Returns 0 on success, -1 on failure with errno set accordingly.
+ */
glusterfs_file_t
glusterfs_open (const char *path, int flags, ...);
+
+
+/* Creates a file. Corresponds to the creat syscall.
+ *
+ * @handle : Handle returned from glusterfs_init
+ * @path : Path to the file that needs to be created in the
+ * glusterfs export.
+ * @mode : File creation mode.
+ *
+ * Returns the file handle on success. NULL on error with errno set as
+ * required.
+ */
glusterfs_file_t
glusterfs_glh_creat (glusterfs_handle_t handle, const char *path, mode_t mode);
+
+
+/* VMP-based creat.
+ * @path : Path to the file to be created. Must be
+ * pre-prepended with the VMP string registered with
+ * glusterfs_mount.
+ * @mode : File creation mode.
+ *
+ * Returns file handle on success. NULL handle on error with errno set
+ * accordingly.
+ */
glusterfs_file_t
glusterfs_creat (const char *path, mode_t mode);
+
+
+/* Close the file identified by the handle.
+ *
+ * @fd : Closes the file.
+ *
+ * Returns 0 on success, -1 on error with errno set accordingly.
+ */
int
glusterfs_close (glusterfs_file_t fd);
+
+
+/* Get struct stat for the file in path.
+ *
+ * @handle : The handle that identifies a glusterfs client
+ * context.
+ * @path : The file for which we need to get struct stat.
+ * @stbuf : The buffer into which the file's stat is copied.
+ *
+ * Returns 0 on success and -1 on error with errno set accordingly.
+ */
int
glusterfs_glh_stat (glusterfs_handle_t handle, const char *path,
struct stat *stbuf);
+
+/* Get struct stat for file in path.
+ *
+ * @path : The file for which struct stat is required.
+ * @sbuf : The buffer into which the stat structure is copied.
+ *
+ * Returns 0 on success and -1 on error with errno set accordingly.
+ */
int
glusterfs_stat (const char *path, struct stat *buf);
+
+
+/* Gets stat struct for the file.
+ *
+ * @handle : The handle identifying a glusterfs client context.
+ * @path : Path to the file for which stat structure is
+ * required. If path is a symlink, the symlink is
+ * interpreted and the stat structure returned for the
+ * target of the link.
+ * @buf : The buffer into which the stat structure is copied.
+ *
+ * Returns 0 on success and -1 on error with errno set accordingly.
+ */
int
glusterfs_glh_lstat (glusterfs_handle_t handle, const char *path,
struct stat *buf);
+
+
+/* Gets stat struct for a file.
+ *
+ * @path : The file to get the struct stat for.
+ * @buf : The receiving struct stat buffer.
+ *
+ * Returns 0 on success and -1 on error with errno set accordingly.
+ */
int
glusterfs_lstat (const char *path, struct stat *buf);
+
+
+/* Get stat structure for a file.
+ *
+ * @fd : The file handle identifying a file on the glusterfs
+ * server.
+ * @stbuf : The buffer into which the stat data is copied.
+ *
+ * Returns 0 on success and -1 on error with errno set accordingly.
+ */
int
glusterfs_fstat (glusterfs_file_t fd, struct stat *stbuf);
@@ -194,9 +409,32 @@ glusterfs_lremovexattr (glusterfs_handle_t handle, const char *path,
int
glusterfs_fremovexattr (glusterfs_file_t fd, const char *name);
+
+
+/* Read data from a file.
+ * @fd : Handle returned by glusterfs_open or
+ * glusterfs_glh_open.
+ * @buf : Buffer to read the data into.
+ * @nbytes : Number of bytes to read.
+ *
+ * Returns number of bytes actually read on success or -1 on error
+ * with errno set to the appropriate error number.
+ */
ssize_t
glusterfs_read (glusterfs_file_t fd, void *buf, size_t nbytes);
+
+
+/* Read data into an array of buffers.
+ *
+ * @fd : File handle returned by glusterfs_open or
+ * glusterfs_glh_open.
+ * @vec : Array of buffers into which the data is read.
+ * @count : Number of iovecs referred to by vec.
+ *
+ * Returns number of bytes read on success or -1 on error with errno
+ * set appropriately.
+ */
ssize_t
glusterfs_readv (glusterfs_file_t fd, const struct iovec *vec, int count);
@@ -204,9 +442,33 @@ int
glusterfs_read_async (glusterfs_file_t fd, size_t nbytes, off_t offset,
glusterfs_readv_cbk_t readv_cbk, void *cbk_data);
+
+
+/* Write data into a file.
+ *
+ * @fd : File handle returned from glusterfs_open or
+ * glusterfs_glh_open.
+ * @buf : Buffer which is written to the file.
+ * @nbytes : Number bytes of the @buf written to the file.
+ *
+ * On success, returns number of bytes written. On error, returns -1
+ * with errno set appropriately.
+ */
ssize_t
glusterfs_write (glusterfs_file_t fd, const void *buf, size_t nbytes);
+
+
+/* Writes an array of buffers into a file.
+ *
+ * @fd : The file handle returned from glusterfs_open or
+ * glusterfs_glh_open.
+ * @vector : Array of buffers to be written to the file.
+ * @count : Number of separate buffers in the @vector array.
+ *
+ * Returns number of bytes written on success or -1 on error with
+ * errno set approriately.
+ */
ssize_t
glusterfs_writev (glusterfs_file_t fd, const struct iovec *vector, int count);
@@ -220,32 +482,140 @@ glusterfs_writev_async (glusterfs_file_t fd, const struct iovec *vector,
int count, off_t offset,
glusterfs_write_cbk_t write_cbk, void *cbk_data);
+
+
+/* Read from a file starting at a given offset.
+ *
+ * @fd : File handle returned from glusterfs_open or
+ * glusterfs_glh_open.
+ * @buf : Buffer to read the data into.
+ * @nbytes : Number of bytes to read.
+ * @offset : The offset to start reading @nbytes from.
+ *
+ * Returns number of bytes read on success or -1 on error with errno
+ * set appropriately.
+ */
ssize_t
glusterfs_pread (glusterfs_file_t fd, void *buf, size_t nbytes, off_t offset);
+
+
+/* Write to a file starting at a given offset.
+ *
+ * @fd : Flie handle returned from glusterfs_open or
+ * glusterfs_glh_open.
+ * @buf : Buffer that will be written to the file.
+ * @nbytes : Number of bytes to write from @buf.
+ * @offset : The starting offset from where @nbytes will be
+ * written.
+ *
+ * Returns number of bytes written on success and -1 on error with
+ * errno set appropriately.
+ */
ssize_t
glusterfs_pwrite (glusterfs_file_t fd, const void *buf, size_t nbytes,
off_t offset);
+
+
+/* Seek to an offset in the file.
+ *
+ * @fd : File handle in which to seek to. File handle
+ * returned by glusterfs_open or glusterfs_glh_open.
+ * @offset : Offset to seek to in the given file.
+ * @whence : Determines how the offset is interpreted by this
+ * syscall. The behaviour is similar to the options
+ * provided by the POSIX lseek system call. See man lseek
+ * for more details.
+ *
+ * On success, returns the resulting absolute offset in the file after the seek
+ * operation is performed. ON error, returns -1 with errno set
+ * appropriately.
+ */
off_t
glusterfs_lseek (glusterfs_file_t fd, off_t offset, int whence);
+
+
+/* Create a directory.
+ *
+ * @handle : The handle of the glusterfs context in which the
+ * directory needs to be created.
+ * @path : The absolute path within the glusterfs context where
+ * the directory needs to be created.
+ * @mode : The mode bits for the newly created directory.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_glh_mkdir (glusterfs_handle_t handle, const char *path, mode_t mode);
+
+
+/* Create a directory.
+ *
+ * @path : Path to the directory that needs to be created. This
+ * path must be prefixed with the VMP of the particular glusterfs
+ * context.
+ * @mode : Mode flags for the newly created directory.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_mkdir (const char *path, mode_t mode);
+
+
+/* Remove a directory.
+ *
+ * @handle : Handle of the glusterfs context from which to remove
+ * the directory.
+ * @path : The path of the directory to be removed in the glusterfs
+ * context.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_glh_rmdir (glusterfs_handle_t handle, const char *path);
+
+
+/* Remove a directory.
+ *
+ * @path : The absolute path to the directory to be removed.
+ * This path must be pre-fixed with the VMP of the
+ * particular glusterfs context in which this directory
+ * resides.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_rmdir (const char *path);
-/* FIXME: implement man 3 readdir semantics */
+
+
+
+/* Read directory entries.
+ *
+ * @fd : The handle of the directory to be read. This handle
+ * is the one returned by opendir.
+ * @dirp : The pointer to the array of directory entries into
+ * which the directory data will be stored.
+ * @count : Number of directory entries to be read.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_readdir (glusterfs_dir_t fd, struct dirent *dirp,
unsigned int count);
+
+
+/* Close a directory handle.
+ *
+ * @fd : The directory handle to be closed.
+ *
+ * Returns 0 on success and -1 on error with errno set to 0.
+ */
int
glusterfs_closedir (glusterfs_dir_t dirfd);
/* FIXME: remove getdents */
@@ -253,123 +623,490 @@ int
glusterfs_getdents (glusterfs_dir_t fd, struct dirent *dirp,
unsigned int count);
+
+
+/* Create device node.
+ *
+ * @handle : glusterfs context in which to create the device
+ * node.
+ * @pathname : The absolute path of the device to be created in the
+ * given glusterfs context.
+ *
+ * @mode : Mode flags to apply to the newly created node.
+ * @dev : Device numbers that will apply to the node.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_glh_mknod(glusterfs_handle_t handle, const char *pathname,
mode_t mode, dev_t dev);
+
+
+/* Create a device node.
+ *
+ * @pathname : The full path of the node to be created. This path
+ * should be pre-pended with the VMP of the glusterfs
+ * context in which this node is to be created.
+ * @mode : Mode flags that will be applied to the newly created
+ * device file.
+ * @dev : The device numbers that will be associated with the
+ * device node.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_mknod(const char *pathname, mode_t mode, dev_t dev);
+
+
+/* Returns the real absolute path of the given path.
+ *
+ * @handle : The glusterfs context in which the path resides in.
+ * @path : The path to be resolved.
+ * @resolved_path : The resolved path is stored in this buffer
+ * provided by the caller.
+ *
+ * Returns a pointer to resolved_path on success and NULL on error
+ * with errno set appropriately.
+ *
+ * See man realpath for details.
+ */
char *
glusterfs_glh_realpath (glusterfs_handle_t handle, const char *path,
char *resolved_path);
+
+/* Returns the real absolute path of the given path.
+ *
+ * @path : The path to be resolved. This path must be
+ * pre-fixed with the VMP of the glusterfs
+ * context in which the file resides.
+ *
+ * @resolved_path : The resolved path is stored in this user
+ * provided buffer.
+ *
+ * Returns a pointer to resolved_path on success, and NULL on error
+ * with errno set appropriately.
+ */
char *
glusterfs_realpath (const char *path, char *resolved_path);
-int
-glusterfs_mount (char *vmp, glusterfs_init_params_t *ipars);
-int
-glusterfs_umount (char *vmp);
+/* Change mode flags on a path.
+ *
+ * @handle : Handle of the glusterfs instance in which the path
+ * resides.
+ * @path : The path whose mode bits need to be changed.
+ * @mode : The new mode bits.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_glh_chmod (glusterfs_handle_t handle, const char *path, mode_t mode);
+
+
+/* Change mode flags on a path.
+ *
+ * @path : The path whose mode bits need to be changed. The
+ * path should be pre-fixed with the VMP that identifies the
+ * glusterfs context within which the path resides.
+ * @mode : The new mode bits.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_chmod (const char *path, mode_t mode);
+
+
+/* Change the owner of a path.
+ *
+ * @handle : Handle of the glusterfs context in which the path
+ * resides.
+ * @path : The path whose owner needs to be changed.
+ * @owner : ID of the new owner.
+ * @group : ID of the new group.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_glh_chown (glusterfs_handle_t handle, const char *path, uid_t owner,
gid_t group);
+
+
+/* Change the owner of a path.
+ *
+ * @path : The path whose owner needs to be changed. Path must
+ * be pre-fixed with the VMP that identifies the
+ * glusterfs context in which the path resides.
+ * @owner : ID of the new owner.
+ * @group : ID of the new group.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_chown (const char *path, uid_t owner, gid_t group);
+
+
+/* Change the owner of the file.
+ *
+ * @fd : Handle of the file whose owner needs to be changed.
+ * @owner : ID of the new owner.
+ * @group : ID of the new group.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_fchown (glusterfs_file_t fd, uid_t owner, gid_t group);
+
+
+/* Open a directory.
+ *
+ * @handle : Handle that identifies a glusterfs context.
+ * @path : Path to the directory in the glusterfs context.
+ *
+ * Returns a non-NULL handle on success and NULL on failure with errno
+ * set appropriately.
+ */
glusterfs_dir_t
glusterfs_glh_opendir (glusterfs_handle_t handle, const char *path);
+
+
+/* Open a directory.
+ *
+ * @path : Path to the directory. The path must be prepended
+ * with the VMP in order to identify the glusterfs
+ * context in which path resides.
+ *
+ * Returns a non-NULL handle on success and NULL on failure with errno
+ * set appropriately.
+ */
glusterfs_dir_t
glusterfs_opendir (const char *path);
+
+
+/* Change the mode bits on an open file.
+ *
+ * @fd : The file whose mode bits need to be changed.
+ * @mode : The new mode bits.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_fchmod (glusterfs_file_t fd, mode_t mode);
+
+
+/* Sync the file contents to storage.
+ *
+ * @fd : The file whose contents need to be sync'ed to
+ * storage.
+ *
+ * Return 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_fsync (glusterfs_file_t *fd);
+
+
+/* Truncate an open file.
+ *
+ * @fd : The file to truncate.
+ * @length : The length to truncate to.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_ftruncate (glusterfs_file_t fd, off_t length);
+
+
+/* Create a hard link between two paths.
+ *
+ * @handle : glusterfs context in which both paths should reside.
+ * @oldpath : The existing path to link to.
+ * @newpath : The new path which will be linked to @oldpath.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_glh_link (glusterfs_handle_t handle, const char *oldpath,
const char *newpath);
+
+
+/* Create a hard link between two paths.
+ *
+ * @oldpath : The existing path to link to.
+ * @newpath : The new path which will be linked to @oldpath.
+ *
+ * Both paths should exist on the same glusterfs context and should be
+ * prefixed with the same VMP.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_link (const char *oldpath, const char *newpath);
+
+
+/* Get stats about the underlying file system.
+ *
+ * @handle : Identifies the glusterfs context in which resides
+ * the given path.
+ * @path : stats are returned for the file system on which file
+ * is located.
+ * @buf : The buffer into which the stats are copied.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_glh_statfs (glusterfs_handle_t handle, const char *path,
struct statfs *buf);
+
+
+/* Get stats about the underlying file system.
+ *
+ * @path : stats are returned for the file system on which file
+ * is located. @path must start with the VMP of the
+ * glusterfs context on which the file reside.
+ * @buf : The buffer into which the stats are copied.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_statfs (const char *path, struct statfs *buf);
+
+
+/* Get stats about the underlying file system.
+ *
+ * @handle : Identifies the glusterfs context in which resides
+ * the given path.
+ * @path : stats are returned for the file system on which file
+ * is located.
+ * @buf : The buffer into which the stats are copied.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_glh_statvfs (glusterfs_handle_t handle, const char *path,
struct statvfs *buf);
+
+
+/* Get stats about the underlying file system.
+ *
+ * @path : stats are returned for the file system on which file
+ * is located. @path must start with the VMP of the
+ * glusterfs context on which the file reside.
+ * @buf : The buffer into which the stats are copied.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_statvfs (const char *path, struct statvfs *buf);
+
+
+/* Set the atime and mtime values for a given path.
+ *
+ * @handle : The handle identifying the glusterfs context.
+ * @path : The path for which the times need to be changed.
+ * @times : The array containing new time stamps for the file.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_glh_utimes (glusterfs_handle_t handle, const char *path,
const struct timeval times[2]);
+
+
+/* Set the atime and mtime values for a given path.
+ *
+ * @path : The path for which the times need to be changed.
+ * @times : The array containing new time stamps for the file.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_utimes (const char *path, const struct timeval times[2]);
+
+
+/* Set the atime and mtime values for a given path.
+ *
+ * @handle : The handle identifying the glusterfs context.
+ * @path : The path for which the times need to be changed.
+ * @buf : The structure containing new time stamps for the file.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_glh_utime (glusterfs_handle_t handle, const char *path,
const struct utimbuf *buf);
+
+
+/* Set the atime and mtime values for a given path.
+ *
+ * @path : The path for which the times need to be changed.
+ * @buf : The structure containing new time stamps for the file.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_utime (const char *path, const struct utimbuf *buf);
+
+
+/* Create FIFO at the given path.
+ *
+ * @handle : The glusterfs context in which to create that FIFO.
+ * @path : The path within the context where the FIFO is to be
+ * created.
+ * @mode : The mode bits for the newly create FIFO.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_glh_mkfifo (glusterfs_handle_t handle, const char *path,
mode_t mode);
+
+
+/* Create FIFO at the given path.
+ *
+ * @path : The path within the context where the FIFO is to be
+ * created. @path should begin with the VMP of the
+ * glusterfs context in which the FIFO needs to be
+ * created.
+ * @mode : The mode bits for the newly create FIFO.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_mkfifo (const char *path, mode_t mode);
+
+
+/* Unlink a file.
+ *
+ * @handle : Handle that identifies a glusterfs instance.
+ * @path : Path in the glusterfs instance that needs to be
+ * unlinked.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_glh_unlink (glusterfs_handle_t handle, const char *path);
+
+
+/* Unlink a file.
+ *
+ * @path : Path in the glusterfs instance that needs to be
+ * unlinked.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_unlink (const char *path);
+
+
+/* Create a symbolic link.
+ *
+ * @handle : The handle identifying the glusterfs context.
+ * @oldpath : The existing path to which a symlink needs to be
+ * created.
+ * @newpath : The new path which will be symlinked to the
+ * @oldpath.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_glh_symlink (glusterfs_handle_t handle, const char *oldpath,
const char *newpath);
+
+
+/* Create a symbolic link.
+ *
+ * @oldpath : The existing path to which a symlink needs to be
+ * created.
+ * @newpath : The new path which will be symlinked to the
+ * @oldpath.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_symlink (const char *oldpath, const char *newpath);
+
+
+/* Read a symbolic link.
+ *
+ * @handle : Handle identifying the glusterfs context.
+ * @path : The symlink that needs to be read.
+ * @buf : The buffer into which the target of @path will be
+ * stored.
+ * @bufsize : Size of the buffer allocated to @buf.
+ *
+ * Returns number of bytes copied into @buf and -1 on error with errno
+ * set appropriately.
+ */
ssize_t
glusterfs_glh_readlink (glusterfs_handle_t handle, const char *path, char *buf,
size_t bufsize);
+
+
+/* Read a symbolic link.
+ *
+ * @path : The symlink that needs to be read.
+ * @buf : The buffer into which the target of @path will be
+ * stored.
+ * @bufsize : Size of the buffer allocated to @buf.
+ *
+ * Returns number of bytes copied into @buf and -1 on error with errno
+ * set appropriately.
+ */
ssize_t
glusterfs_readlink (const char *path, char *buf, size_t bufsize);
+
+
+/* Rename a file or directory.
+ *
+ * @handle : The identifier of a glusterfs context.
+ * @oldpath : The path to be renamed.
+ * @newpath : The new name for the @oldpath.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_glh_rename (glusterfs_handle_t handle, const char *oldpath,
const char *newpath);
+
+
+/* Rename a file or directory.
+ * @oldpath : The path to be renamed.
+ * @newpath : The new name for the @oldpath.
+ *
+ * Returns 0 on success and -1 on error with errno set appropriately.
+ */
int
glusterfs_rename (const char *oldpath, const char *newpath);
/* FIXME: review the need for these apis */
@@ -382,6 +1119,12 @@ glusterfs_log_lock (void);
void
glusterfs_log_unlock (void);
+/* Used to free the glusterfs_read_buf passed to the application from
+ glusterfs_read_async_cbk
+*/
+void
+glusterfs_free (glusterfs_iobuf_t *buf);
+
__END_DECLS