diff options
Diffstat (limited to 'libglusterfs/src/syncop.c')
| -rw-r--r-- | libglusterfs/src/syncop.c | 40 | 
1 files changed, 40 insertions, 0 deletions
diff --git a/libglusterfs/src/syncop.c b/libglusterfs/src/syncop.c index 56042d6897e..f571a2ae8bd 100644 --- a/libglusterfs/src/syncop.c +++ b/libglusterfs/src/syncop.c @@ -209,6 +209,46 @@ out:  	return ret;  } +int +syncopctx_setfslkowner (gf_lkowner_t *lk_owner) +{ +        struct syncopctx *opctx = NULL; +        int               ret = 0; + +        /* In args check */ +        if (!lk_owner) { +                ret = -1; +                errno = EINVAL; +                goto out; +        } + +        opctx = syncopctx_getctx (); + +        /* alloc for this thread the first time */ +        if (!opctx) { +                opctx = GF_CALLOC (1, sizeof (*opctx), gf_common_mt_syncopctx); +                if (!opctx) { +                        ret = -1; +                        goto out; +                } + +                ret = syncopctx_setctx (opctx); +                if (ret != 0) { +                        GF_FREE (opctx); +                        opctx = NULL; +                        goto out; +                } +        } + +out: +        if (opctx && lk_owner) { +                opctx->lk_owner = *lk_owner; +                opctx->valid |= SYNCOPCTX_LKOWNER; +        } + +        return ret; +} +  static void  __run (struct synctask *task)  {  | 
