diff options
Diffstat (limited to 'xlators/features/barrier')
| -rw-r--r-- | xlators/features/barrier/src/barrier-mem-types.h | 4 | ||||
| -rw-r--r-- | xlators/features/barrier/src/barrier.h | 122 | 
2 files changed, 66 insertions, 60 deletions
diff --git a/xlators/features/barrier/src/barrier-mem-types.h b/xlators/features/barrier/src/barrier-mem-types.h index 36647a66966..93ccab633ce 100644 --- a/xlators/features/barrier/src/barrier-mem-types.h +++ b/xlators/features/barrier/src/barrier-mem-types.h @@ -14,7 +14,7 @@  #include "mem-types.h"  enum gf_barrier_mem_types_ { -        gf_barrier_mt_priv_t = gf_common_mt_end + 1, -        gf_barrier_mt_end +    gf_barrier_mt_priv_t = gf_common_mt_end + 1, +    gf_barrier_mt_end  };  #endif diff --git a/xlators/features/barrier/src/barrier.h b/xlators/features/barrier/src/barrier.h index 0d646f90474..d11d71d151e 100644 --- a/xlators/features/barrier/src/barrier.h +++ b/xlators/features/barrier/src/barrier.h @@ -16,67 +16,73 @@  #include "timer.h"  #include "call-stub.h" -#define BARRIER_FOP_CBK(fop_name, label, frame, this, params ...)       \ -        do {                                                            \ -                barrier_priv_t         *_priv           = NULL;         \ -                call_stub_t            *_stub           = NULL;         \ -                gf_boolean_t            _barrier_enabled= _gf_false;    \ -                struct list_head        queue           = {0, };        \ -                                                                        \ -                INIT_LIST_HEAD (&queue);                                \ -                                                                        \ -                _priv = this->private;                                  \ -                GF_ASSERT (_priv);                                      \ -                                                                        \ -                LOCK (&_priv->lock);                                    \ -                {                                                       \ -                        if (_priv->barrier_enabled) {                   \ -                                _barrier_enabled = _priv->barrier_enabled;\ -                                                                        \ -                                _stub = fop_##fop_name##_cbk_stub       \ -                                        (frame,                         \ -                                         barrier_##fop_name##_cbk_resume,\ -                                         params);                       \ -                                if (!_stub) {                           \ -                                        __barrier_disable (this, &queue);\ -                                        goto unlock;                    \ -                                }                                       \ -                                                                        \ -                                __barrier_enqueue (this, _stub);        \ -                        }                                               \ -                }                                                       \ -unlock:                                                                 \ -                UNLOCK (&_priv->lock);                                  \ -                                                                        \ -                if (_stub)                                              \ -                        goto label;                                     \ -                                                                        \ -                if (_barrier_enabled && !_stub) {                       \ -                        gf_log (this->name, GF_LOG_CRITICAL,            \ -                                "Failed to barrier FOPs, disabling "    \ -                                "barrier. FOP: %s, ERROR: %s",          \ -                                #fop_name, strerror (ENOMEM));          \ -                        barrier_dequeue_all (this, &queue);             \ -                }                                                       \ -                barrier_local_free_gfid (frame);                        \ -                STACK_UNWIND_STRICT (fop_name, frame, params);          \ -                goto label;                                             \ -        } while (0) +#define BARRIER_FOP_CBK(fop_name, label, frame, this, params...)               \ +    do {                                                                       \ +        barrier_priv_t *_priv = NULL;                                          \ +        call_stub_t *_stub = NULL;                                             \ +        gf_boolean_t _barrier_enabled = _gf_false;                             \ +        struct list_head queue = {                                             \ +            0,                                                                 \ +        };                                                                     \ +                                                                               \ +        INIT_LIST_HEAD(&queue);                                                \ +                                                                               \ +        _priv = this->private;                                                 \ +        GF_ASSERT(_priv);                                                      \ +                                                                               \ +        LOCK(&_priv->lock);                                                    \ +        {                                                                      \ +            if (_priv->barrier_enabled) {                                      \ +                _barrier_enabled = _priv->barrier_enabled;                     \ +                                                                               \ +                _stub = fop_##fop_name##_cbk_stub(                             \ +                    frame, barrier_##fop_name##_cbk_resume, params);           \ +                if (!_stub) {                                                  \ +                    __barrier_disable(this, &queue);                           \ +                    goto unlock;                                               \ +                }                                                              \ +                                                                               \ +                __barrier_enqueue(this, _stub);                                \ +            }                                                                  \ +        }                                                                      \ +    unlock:                                                                    \ +        UNLOCK(&_priv->lock);                                                  \ +                                                                               \ +        if (_stub)                                                             \ +            goto label;                                                        \ +                                                                               \ +        if (_barrier_enabled && !_stub) {                                      \ +            gf_log(this->name, GF_LOG_CRITICAL,                                \ +                   "Failed to barrier FOPs, disabling "                        \ +                   "barrier. FOP: %s, ERROR: %s",                              \ +                   #fop_name, strerror(ENOMEM));                               \ +            barrier_dequeue_all(this, &queue);                                 \ +        }                                                                      \ +        barrier_local_free_gfid(frame);                                        \ +        STACK_UNWIND_STRICT(fop_name, frame, params);                          \ +        goto label;                                                            \ +    } while (0)  typedef struct { -        gf_timer_t       *timer; -        gf_boolean_t      barrier_enabled; -        gf_lock_t         lock; -        struct list_head  queue; -        struct timespec   timeout; -        uint32_t          queue_size; +    gf_timer_t *timer; +    gf_boolean_t barrier_enabled; +    gf_lock_t lock; +    struct list_head queue; +    struct timespec timeout; +    uint32_t queue_size;  } barrier_priv_t; -int __barrier_enable (xlator_t *this, barrier_priv_t *priv); -void __barrier_enqueue (xlator_t *this, call_stub_t *stub); -void __barrier_disable (xlator_t *this, struct list_head *queue); -void barrier_timeout (void *data); -void barrier_dequeue_all (xlator_t *this, struct list_head *queue); -call_stub_t *__barrier_dequeue (xlator_t *this, struct list_head *queue); +int +__barrier_enable(xlator_t *this, barrier_priv_t *priv); +void +__barrier_enqueue(xlator_t *this, call_stub_t *stub); +void +__barrier_disable(xlator_t *this, struct list_head *queue); +void +barrier_timeout(void *data); +void +barrier_dequeue_all(xlator_t *this, struct list_head *queue); +call_stub_t * +__barrier_dequeue(xlator_t *this, struct list_head *queue);  #endif  | 
