summaryrefslogtreecommitdiffstats
path: root/libglusterfsclient/src/libglusterfsclient-internals.h
Commit message (Collapse)AuthorAgeFilesLines
* libglusterfsclient: Revert and re-do readdir conformanceShehjar Tikoo2009-05-181-12/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit basically reverts the previous readdir conformance patch I sent a few days back. That commit had a completely retarded and broken way of maintaining per-directory dirent. It was broken for two reasons: 1. Creating a wrapper structure around the directory's fd_t only for storing a struct dirent is not clean enough. This commit takes a better approach by storing the dirent in fd_t context. This dirent is valid only if the fd_t refers to a directory. 2. That commit was made and tested under the assumption (..stupidity is a better word..) that only opendir call is used for opening a directory. That is not correct. Directories are also opened using the open syscall. The point is, glusterfs_open returns an fd_t and so did glusterfs_opendir. The previous patch actually changed opendir to return a new wrapper structure. That is fine, if we go by the POSIX definition of open and opendir because, they're both supposed to return different types, an int and a DIR*. However, in libglusterfsclient, all other code assumes that directory handles corresponding to DIR* and file descriptors corresponding to int types are the same type, resulting in use of the same locking and fd context addition/extraction code. So a directory opened using opendir returned a wrapper structure which went down into the libglusterfsclient stack where some function called a lock on the handle assuming it was an fd_t, since it is not and dereferencing of the supposed fd->inode->lock results in a seg fault. Obviously, this didnt show up till unfs3 used open() to open a directory and not opendir. Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
* libglusterfsclient: Improve readdir conformance on re-entrancyShehjar Tikoo2009-05-061-0/+13
| | | | | | | | | | | readdir is supposed to be non-re-entrant only with respect to the given dir stream, not the whole process. What that means is the static struct dirent that we maintain in libglusterfsclient should be per-directory handle and not process-wide. Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
* libglusterfsclient: Add virtual mount point supportShehjar Tikoo2009-04-211-0/+11
| | | | | | | | | | | | | | | | | | | | | One part of the glusterfsclient library requires users to use a handle to address a particular glusterfs context. This can become cumbersome for applications that need to use multiple such context. For such applications, we make it easy by letting them define virtual mount points(VMPs), which are just paths that identify a particular glusterfs context. This is done through a new glusterfs_mount(..) interface. Subsequenly, any path based operations, that pre-pend a VMP before the files and directories inside the glusterfsd export, get internally routed to the correct glusterfs context. This helps users do away with the need to maintain their own path-to-glusterfs_handle_t mapping. The old handle-based interface still exists for whoever wishes to use it. Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
* libglusterfsclient: Create and use LIBGF_REPLY_NOTIFY macroShehjar Tikoo2009-04-171-0/+11
| | | | | | | All reply notifications can now be abstracted away through this macro and all cbk functions should now call this. Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
* updated libglusterfsclient with IOBUF/IOBREFsAnand V. Avati2009-04-121-4/+0
| | | | Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
* libglusterfsclient - move lookup timeout related code to ↵Raghavendra G2009-04-031-1/+46
| | | | | | | | | | libgf_client_path_lookup - this simplifies the resolution of path to inode, the apis which receive path as argument just need to call libgf_client_path_lookup for path->inode translation. Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
* libglusterfsclient - fix indentationRaghavendra G2009-04-031-4/+8
| | | | Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
* libglusterfsclient - change implementation of glusterfs_getRaghavendra G2009-04-031-1/+2
| | | | | | - remove redundent lookups happening in glusterfs_get. Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
* libglusterfsclient code changesRaghavendra G2009-04-031-0/+21
| | | | | | | | | | | | - add dentry support to libglusterfsclient. - changes related to using array, to store context in inode instead of dictionary. - code changes related to cleanup of libglusterfsclient interface. - added glusterfs_mkdir and glusterfs_rmdir - other changes in libglusterfsclient to make it work with code changes in other parts of glusterfs. Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
* updated copyright header to extend copyright upto 2009Basavanagowda Kanur2009-02-261-1/+1
| | | | | | updated copyright header to include 2009. Signed-off-by: Anand V. Avati <avati@amp.gluster.com>
* Added all filesVikas Gorur2009-02-181-0/+144