diff options
Diffstat (limited to 'libglusterfs/src/iobuf.c')
-rw-r--r-- | libglusterfs/src/iobuf.c | 52 |
1 files changed, 7 insertions, 45 deletions
diff --git a/libglusterfs/src/iobuf.c b/libglusterfs/src/iobuf.c index 76584fc9cde..d4f0d89c338 100644 --- a/libglusterfs/src/iobuf.c +++ b/libglusterfs/src/iobuf.c @@ -126,7 +126,7 @@ __iobuf_arena_destroy_iobufs (struct iobuf_arena *iobuf_arena) iobuf = iobuf_arena->iobufs; for (i = 0; i < iobuf_cnt; i++) { - GF_ASSERT (iobuf->ref == 0); + GF_ASSERT (GF_ATOMIC_GET(iobuf->ref) == 0); LOCK_DESTROY (&iobuf->lock); list_del_init (&iobuf->list); @@ -529,23 +529,6 @@ out: struct iobuf * -__iobuf_ref (struct iobuf *iobuf) -{ - iobuf->ref++; - - return iobuf; -} - - -struct iobuf * -__iobuf_unref (struct iobuf *iobuf) -{ - iobuf->ref--; - - return iobuf; -} - -struct iobuf * __iobuf_get (struct iobuf_arena *iobuf_arena, size_t page_size) { struct iobuf *iobuf = NULL; @@ -619,7 +602,7 @@ iobuf_get_from_stdalloc (struct iobuf_pool *iobuf_pool, size_t page_size) LOCK_INIT (&iobuf->lock); /* Hold a ref because you are allocating and using it */ - iobuf->ref = 1; + GF_ATOMIC_INIT (iobuf->ref, 1); ret = 0; out: @@ -835,12 +818,7 @@ iobuf_unref (struct iobuf *iobuf) GF_VALIDATE_OR_GOTO ("iobuf", iobuf, out); - LOCK (&iobuf->lock); - { - __iobuf_unref (iobuf); - ref = iobuf->ref; - } - UNLOCK (&iobuf->lock); + ref = GF_ATOMIC_DEC (iobuf->ref); if (!ref) iobuf_put (iobuf); @@ -854,12 +832,7 @@ struct iobuf * iobuf_ref (struct iobuf *iobuf) { GF_VALIDATE_OR_GOTO ("iobuf", iobuf, out); - - LOCK (&iobuf->lock); - { - __iobuf_ref (iobuf); - } - UNLOCK (&iobuf->lock); + GF_ATOMIC_INC (iobuf->ref); out: return iobuf; @@ -888,8 +861,7 @@ iobref_new () LOCK_INIT (&iobref->lock); - iobref->ref++; - + GF_ATOMIC_INIT (iobref->ref, 1); return iobref; } @@ -898,12 +870,7 @@ struct iobref * iobref_ref (struct iobref *iobref) { GF_VALIDATE_OR_GOTO ("iobuf", iobref, out); - - LOCK (&iobref->lock); - { - iobref->ref++; - } - UNLOCK (&iobref->lock); + GF_ATOMIC_INC (iobref->ref); out: return iobref; @@ -940,12 +907,7 @@ iobref_unref (struct iobref *iobref) int ref = 0; GF_VALIDATE_OR_GOTO ("iobuf", iobref, out); - - LOCK (&iobref->lock); - { - ref = (--iobref->ref); - } - UNLOCK (&iobref->lock); + ref = GF_ATOMIC_DEC (iobref->ref); if (!ref) iobref_destroy (iobref); |