diff options
Diffstat (limited to 'libglusterfs/src')
| -rw-r--r-- | libglusterfs/src/fd.c | 24 | ||||
| -rw-r--r-- | libglusterfs/src/fd.h | 2 | 
2 files changed, 26 insertions, 0 deletions
diff --git a/libglusterfs/src/fd.c b/libglusterfs/src/fd.c index 9e91cdb83..5e25b59cf 100644 --- a/libglusterfs/src/fd.c +++ b/libglusterfs/src/fd.c @@ -499,6 +499,30 @@ fd_bind (fd_t *fd)          return fd;  } + +void +fd_unref_unbind (fd_t *fd) +{ +        assert (fd->refcount); + +        LOCK (&fd->inode->lock); +        { +	        --fd->refcount; +                /* Better know what you're doing with this function +                 * because it does not do what fd_destroy does when +                 * refcount goes to 0. +                 * Make sure you only call this when you know there are +                 * pending refs on the fd. +                 */ +                assert (fd->refcount); +		list_del_init (&fd->inode_list); +        } +        UNLOCK (&fd->inode->lock); + +        return; +} + +  fd_t *  fd_create (inode_t *inode, pid_t pid)  { diff --git a/libglusterfs/src/fd.h b/libglusterfs/src/fd.h index 4ea7fc165..48037b722 100644 --- a/libglusterfs/src/fd.h +++ b/libglusterfs/src/fd.h @@ -170,4 +170,6 @@ _fd_ref (fd_t *fd);  void  fd_ctx_dump (fd_t *fd, char *prefix); +extern void +fd_unref_unbind (fd_t *fd);  #endif /* _FD_H */  | 
