diff options
Diffstat (limited to 'libglusterfsclient/src/libglusterfsclient.h')
-rwxr-xr-x | libglusterfsclient/src/libglusterfsclient.h | 1363 |
1 files changed, 0 insertions, 1363 deletions
diff --git a/libglusterfsclient/src/libglusterfsclient.h b/libglusterfsclient/src/libglusterfsclient.h deleted file mode 100755 index 1691a2faad..0000000000 --- a/libglusterfsclient/src/libglusterfsclient.h +++ /dev/null @@ -1,1363 +0,0 @@ -/* - Copyright (c) 2008-2012 Red Hat, Inc. <http://www.redhat.com> - This file is part of GlusterFS. - - This file is licensed to you under your choice of the GNU Lesser - General Public License, version 3 or any later version (LGPLv3 or - later), or the GNU General Public License, version 2 (GPLv2), in all - cases as published by the Free Software Foundation. -*/ - -#ifndef _LIBGLUSTERFSCLIENT_H -#define _LIBGLUSTERFSCLIENT_H - -#ifndef __BEGIN_DECLS -#ifdef __cplusplus -#define __BEGIN_DECLS extern "C" { -#else -#define __BEGIN_DECLS -#endif -#endif - -#ifndef __END_DECLS -#ifdef __cplusplus -#define __END_DECLS } -#else -#define __END_DECLS -#endif -#endif - - -__BEGIN_DECLS - -#include <stdio.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <dirent.h> -#include <sys/statfs.h> -#include <sys/statvfs.h> -#include <utime.h> -#include <sys/time.h> -#include <stdint.h> - -typedef struct { - struct iovec *vector; - int count; - void *iobref; - void *dictref; -} glusterfs_iobuf_t; - - -typedef -int (*glusterfs_readv_cbk_t) (int op_ret, int op_errno, glusterfs_iobuf_t *buf, - void *cbk_data); - -typedef -int (*glusterfs_write_cbk_t) (int op_ret, int op_errno, void *cbk_data); - -typedef -int (*glusterfs_get_cbk_t) (int op_ret, int op_errno, glusterfs_iobuf_t *buf, - struct stat *stbuf, void *cbk_data); - - -/* 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. - * @fakefsid: User generated fsid to be used to identify this - * volume. - * - * 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, uint32_t fakefsid); - - - -/* 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); - - - -/* 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); - - -/* glusterfs_umount_all unmounts all the mounts */ -int -glusterfs_umount_all (void); - - -/* 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_glh_get: - * @handle : glusterfs handle - * @path : path to be looked upon - * @size : upper limit of file-sizes to be read in lookup - * @stbuf : attribute buffer - */ - -int -glusterfs_glh_get (glusterfs_handle_t handle, const char *path, void *buf, - size_t size, struct stat *stbuf); - -int -glusterfs_get (const char *path, void *buf, size_t size, struct stat *stbuf); - -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); - -int -glusterfs_glh_setxattr (glusterfs_handle_t handle, const char *path, - const char *name, const void *value, - size_t size, int flags); - -int -glusterfs_glh_lsetxattr (glusterfs_handle_t handle, const char *path, - const char *name, const void *value, size_t size, - int flags); - -int -glusterfs_setxattr (const char *path, const char *name, const void *value, - size_t size, int flags); - -int -glusterfs_lsetxattr (const char *path, const char *name, const void *value, - size_t size, int flags); - -int -glusterfs_fsetxattr (glusterfs_file_t fd, const char *name, const void *value, - size_t size, int flags); - -ssize_t -glusterfs_glh_getxattr (glusterfs_handle_t handle, const char *path, - const char *name, void *value, size_t size); - -ssize_t -glusterfs_glh_lgetxattr (glusterfs_handle_t handle, const char *path, - const char *name, void *value, size_t size); - -ssize_t -glusterfs_getxattr (const char *path, const char *name, void *value, - size_t size); - -ssize_t -glusterfs_lgetxattr (const char *path, const char *name, void *value, - size_t size); - -ssize_t -glusterfs_fgetxattr (glusterfs_file_t fd, const char *name, void *value, - size_t size); - -ssize_t -glusterfs_listxattr (glusterfs_handle_t handle, const char *path, char *list, - size_t size); - -ssize_t -glusterfs_llistxattr (glusterfs_handle_t handle, const char *path, char *list, - size_t size); - -ssize_t -glusterfs_flistxattr (glusterfs_file_t fd, char *list, size_t size); - -int -glusterfs_removexattr (glusterfs_handle_t handle, const char *path, - const char *name); - -int -glusterfs_lremovexattr (glusterfs_handle_t handle, const char *path, - const char *name); - -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); - -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); - -int -glusterfs_write_async (glusterfs_file_t fd, const void *buf, size_t nbytes, - off_t offset, glusterfs_write_cbk_t write_cbk, - void *cbk_data); - -int -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); - - - -/* Read directory entries. - * - * @fd : The handle of the directory to be read. This handle - * is the one returned by opendir. - * - * Returns the directory entry on success and NULL pointer on error - * with errno set appropriately. - */ -void * -glusterfs_readdir (glusterfs_dir_t dirfd); - - - -/* re-entrant version of glusterfs_readdir. - * - * @dirfd : The handle of directory to be read. This handle is the one - * returned by opendir. - * @entry : Pointer to storage to store a directory entry. The storage - * pointed to by entry shall be large enough for a dirent with - * an array of char d_name members containing at least - * {NAME_MAX}+1 elements. - * @result : Upon successful return, the pointer returned at *result shall - * have the same value as the argument entry. Upon reaching the - * end of the directory stream, this pointer shall have the - * value NULL. - */ -int -glusterfs_readdir_r (glusterfs_dir_t dirfd, struct dirent *entry, - struct dirent **result); - -/* 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 */ -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); - - - -/* 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. - * If @path is a symlink, it is dereferenced and the ownership change - * happens on the target. - * - * @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. - * - * If @path is a symlink, it is dereferenced and the ownership change - * happens on the target. - * @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); - - - -/* Remove a file or directory in the given glusterfs context. - * - * @handle : Handle identifying the glusterfs context. - * @path : Path of the file or directory to be removed. - * - * - * Returns 0 on success and -1 on error with errno set appropriately. - */ -int -glusterfs_glh_remove (glusterfs_handle_t handle, const char *path); - - - -/* Remove a file or directory. - * - * @path : Path of the file or directory to be removed. The - * path must be pre-fixed with the VMP. - * - * Returns 0 on success and -1 on error with errno set appropriately. - */ -int -glusterfs_remove (const char *path); - - - -/* Change the owner of the given path. - * - * If @path is a symlink, the ownership change happens on the symlink. - * - * @handle : Handle identifying the glusterfs client context. - * @path : Path whose owner needs to be changed. - * @owner : New owner ID - * @group : New Group ID - * - * Returns 0 on success and -1 on error with errno set appropriately. - */ -int -glusterfs_glh_lchown (glusterfs_handle_t handle, const char *path, uid_t owner, - gid_t group); - - - -/* Change the owner of the given path. - * - * If @path is a symlink, the ownership change happens on the symlink. - * - * @path : Path whose owner needs to be changed. - * @owner : New owner ID - * @group : New Group ID - * - * Returns 0 on success and -1 on error with errno set appropriately. - */ - -int -glusterfs_lchown (const char *path, uid_t owner, gid_t group); - - - -/* Rewind directory stream pointer to beginning of the directory. - * - * @dirfd : Directory handle returned by glusterfs_open on - * glusterfs_opendir. - * - * Returns no value. - */ -void -glusterfs_rewinddir (glusterfs_dir_t dirfd); - - - -/* Seek to the given offset in the directory handle. - * - * @dirfd : Directory handle returned by glusterfs_open on - * glusterfs_opendir. - * @offset : The offset to seek to. - * - * Returns no value. - */ -void -glusterfs_seekdir (glusterfs_dir_t dirfd, off_t offset); - - - -/* Return the current offset in a directory stream. - * - * @dirfd : Directory handle returned by glusterfs_open on - * glusterfs_opendir. - * - * Returns the offset in the directory or -1 on error with errno set - * appropriately. - */ -off_t -glusterfs_telldir (glusterfs_dir_t dirfd); - - -/* Write count bytes from in_fd to out_fd, starting at *offset. - * glusterfs_sendfile aims at eliminating memory copy at the end of - * each read from in_fd, copying the file directly to out_fd from the buffer - * provided by glusterfs. - * - * @out_fd: file descriptor opened for writing - * - * @in_fd: glusterfs file handle to the file to be read from. - * - * @offset: If offset is not NULL, then it points to a variable holding the file - * offset from which glusterfs_sendfile() will start reading data - * from in_fd. When glusterfs_sendfile() returns, this variable will - * be set to the offset of the byte following the last byte that was - * read. If offset is not NULL, then glusterfs_sendfile() does not - * modify the current file offset of in_fd; otherwise the current file - * offset is adjusted to reflect the number of bytes read from in_fd. - * - * @count: number of bytes to copy between the file descriptors. - */ - -ssize_t -glusterfs_sendfile (int out_fd, glusterfs_file_t in_fd, off_t *offset, - size_t count); - -/* manipulate file descriptor - * This api can have 3 forms similar to fcntl(2). - * - * int - * glusterfs_fcntl (glusterfs_file_t fd, int cmd) - * - * int - * glusterfs_fcntl (glusterfs_file_t fd, int cmd, long arg) - * - * int - * glusterfs_fcntl (glusterfs_file_t fd, int cmd, struct flock *lock) - * - * @fd : file handle returned by glusterfs_open or glusterfs_create. - * @cmd : Though the aim is to implement all possible commands supported by - * fcntl(2), currently following commands are supported. - * F_SETLK, F_SETLKW, F_GETLK - used to acquire, release, and test for - * the existence of record locks (also - * known as file-segment or file-region - * locks). More detailed explanation is - * found in 'man 2 fcntl' - */ - -int -glusterfs_fcntl (glusterfs_file_t fd, int cmd, ...); - -/* - * Change the current working directory to @path - * - * @path : path to change the current working directory to. - * - * Returns 0 on success and -1 on failure with errno set appropriately. - */ -int -glusterfs_chdir (const char *path); - -/* - * Change the current working directory to the path @fd is opened on. - * - * @fd : current working directory will be changed to path @fd is opened on. - * - * Returns 0 on success and -1 on with errno set appropriately. - */ -int -glusterfs_fchdir (glusterfs_file_t fd); - -/* copies the current working directory into @buf if it is big enough - * - * @buf: buffer to copy into it. If @buf is NULL, a buffer will be allocated. - * The size of the buffer will be @size if it is not zero, otherwise the - * size will be big enough to hold the current working directory. - * @size: size of the buffer. - * - * Returns the pointer to buffer holding current working directory on success - * and NULL on failure. - */ - -char * -glusterfs_getcwd (char *buf, size_t size); - -/* - * Truncate the file to a specified length. - * - * @path : path to the file. - * @length : length to which the file has to be truncated. - * - * Returns 0 on success and -1 on failure with errno set appropriately - */ - -int -glusterfs_truncate (const char *path, off_t length); - - -/* FIXME: review the need for these apis */ -/* added for log related initialization in booster fork implementation */ -void -glusterfs_reset (void); - -void -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 - -#endif /* !_LIBGLUSTERFSCLIENT_H */ |