diff options
Diffstat (limited to 'libglusterfs/src/fd-lk.c')
-rw-r--r-- | libglusterfs/src/fd-lk.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/libglusterfs/src/fd-lk.c b/libglusterfs/src/fd-lk.c index 8df43bb602f..4e10d649ee9 100644 --- a/libglusterfs/src/fd-lk.c +++ b/libglusterfs/src/fd-lk.c @@ -129,6 +129,27 @@ fd_lk_ctx_ref (fd_lk_ctx_t *lk_ctx) } fd_lk_ctx_t * +fd_lk_ctx_try_ref (fd_lk_ctx_t *lk_ctx) +{ + int ret = -1; + fd_lk_ctx_t *new_lk_ctx = NULL; + + if (!lk_ctx) { + goto out; + } + + ret = TRY_LOCK (&lk_ctx->lock); + if (ret) + goto out; + + new_lk_ctx = _fd_lk_ctx_ref (lk_ctx); + UNLOCK (&lk_ctx->lock); + +out: + return new_lk_ctx; +} + +fd_lk_ctx_t * fd_lk_ctx_create () { fd_lk_ctx_t *fd_lk_ctx = NULL; |