summaryrefslogtreecommitdiffstats
path: root/libglusterfs/src/fd.c
diff options
context:
space:
mode:
Diffstat (limited to 'libglusterfs/src/fd.c')
-rw-r--r--libglusterfs/src/fd.c24
1 files changed, 4 insertions, 20 deletions
diff --git a/libglusterfs/src/fd.c b/libglusterfs/src/fd.c
index a8a88b0f96f..c6b1a4de611 100644
--- a/libglusterfs/src/fd.c
+++ b/libglusterfs/src/fd.c
@@ -435,7 +435,7 @@ gf_fd_fdptr_get (fdtable_t *fdtable, int64_t fd)
fd_t *
__fd_ref (fd_t *fd)
{
- ++fd->refcount;
+ GF_ATOMIC_INC (fd->refcount);
return fd;
}
@@ -444,28 +444,13 @@ __fd_ref (fd_t *fd)
fd_t *
fd_ref (fd_t *fd)
{
- fd_t *refed_fd = NULL;
-
if (!fd) {
gf_msg_callingfn ("fd", GF_LOG_ERROR, EINVAL,
LG_MSG_INVALID_ARG, "null fd");
return NULL;
}
- LOCK (&fd->inode->lock);
- refed_fd = __fd_ref (fd);
- UNLOCK (&fd->inode->lock);
-
- return refed_fd;
-}
-
-
-fd_t *
-__fd_unref (fd_t *fd)
-{
- GF_ASSERT (fd->refcount);
-
- --fd->refcount;
+ GF_ATOMIC_INC (fd->refcount);
return fd;
}
@@ -551,8 +536,7 @@ fd_unref (fd_t *fd)
LOCK (&fd->inode->lock);
{
- __fd_unref (fd);
- refcount = fd->refcount;
+ refcount = GF_ATOMIC_DEC (fd->refcount);
if (refcount == 0) {
if (!list_empty (&fd->inode_list)) {
list_del_init (&fd->inode_list);
@@ -1186,7 +1170,7 @@ fdentry_dump_to_dict (fdentry_t *fdentry, char *prefix, dict_t *dict,
memset (key, 0, sizeof (key));
snprintf (key, sizeof (key), "%s.refcount", prefix);
- ret = dict_set_int32 (dict, key, fdentry->fd->refcount);
+ ret = dict_set_int32 (dict, key, GF_ATOMIC_GET (fdentry->fd->refcount));
if (ret)
return;