diff options
Diffstat (limited to 'libglusterfs')
71 files changed, 8866 insertions, 9458 deletions
diff --git a/libglusterfs/src/atomic.h b/libglusterfs/src/atomic.h index ca7f919f0d1..3fd3a8764bf 100644 --- a/libglusterfs/src/atomic.h +++ b/libglusterfs/src/atomic.h @@ -89,11 +89,11 @@ /* This macro is used to define all atomic types supported. First field * represents the size of the type in bytes, and the second one the name. */ -#define GF_ATOMIC_TYPE(_size, _name) \ - typedef struct _gf_atomic_##_name##_t { \ - GF_ATOMIC_MACRO(GF_ATOMIC_SIZE_, _size); \ - _name##_t value; \ - } gf_atomic_##_name##_t +#define GF_ATOMIC_TYPE(_size, _name) \ + typedef struct _gf_atomic_##_name##_t { \ + GF_ATOMIC_MACRO(GF_ATOMIC_SIZE_, _size); \ + _name##_t value; \ + } gf_atomic_##_name##_t /* The atomic types we support */ GF_ATOMIC_TYPE(1, int8); /* gf_atomic_int8_t */ @@ -112,253 +112,253 @@ GF_ATOMIC_TYPE(SIZEOF_LONG, uintptr); /* gf_atomic_uintptr_t */ /* This macro will choose between the mutex based version and the atomic * builtin version depending on the size of the atomic structure. */ -#define GF_ATOMIC_CHOOSE(_atomic, _op, _args...) \ - ((sizeof(_atomic) > sizeof(uint64_t)) \ - ? ({ GF_ATOMIC_MACRO(GF_ATOMIC_LOCK_, _op)(_atomic, ## _args); }) \ - : ({ GF_ATOMIC_MACRO(GF_ATOMIC_BASE_, _op)(_atomic, ## _args); })) +#define GF_ATOMIC_CHOOSE(_atomic, _op, _args...) \ + ((sizeof(_atomic) > sizeof(uint64_t)) \ + ? ({ GF_ATOMIC_MACRO(GF_ATOMIC_LOCK_, _op) \ + (_atomic, ##_args); }) \ + : ({ GF_ATOMIC_MACRO(GF_ATOMIC_BASE_, _op) \ + (_atomic, ##_args); })) /* Macros to implement the mutex-based atomics. */ -#define GF_ATOMIC_OP_PREPARE(_atomic, _name) \ - typeof(_atomic) *__atomic = &(_atomic); \ - gf_lock_t *__lock = (gf_lock_t *)&__atomic->lk; \ - LOCK(__lock); \ - typeof(__atomic->value) _name = __atomic->value - -#define GF_ATOMIC_OP_STORE(_value) \ - (__atomic->value = (_value)) - -#define GF_ATOMIC_OP_RETURN(_value) \ - ({ \ - UNLOCK(__lock); \ - _value; \ - }) - -#define GF_ATOMIC_LOCK_INIT(_atomic, _value) \ - do { \ - typeof(_atomic) *__atomic = &(_atomic); \ - LOCK_INIT((gf_lock_t *)&__atomic->lk); \ - __atomic->value = (_value); \ - } while (0) - -#define GF_ATOMIC_LOCK_GET(_atomic) \ - ({ \ - GF_ATOMIC_OP_PREPARE(_atomic, __value); \ - GF_ATOMIC_OP_RETURN(__value); \ - }) - -#define GF_ATOMIC_LOCK_ADD(_atomic, _value) \ - ({ \ - GF_ATOMIC_OP_PREPARE(_atomic, __value); \ - GF_ATOMIC_OP_STORE(__value += (_value)); \ - GF_ATOMIC_OP_RETURN(__value); \ - }) - -#define GF_ATOMIC_LOCK_SUB(_atomic, _value) \ - ({ \ - GF_ATOMIC_OP_PREPARE(_atomic, __value); \ - GF_ATOMIC_OP_STORE(__value -= (_value)); \ - GF_ATOMIC_OP_RETURN(__value); \ - }) - -#define GF_ATOMIC_LOCK_AND(_atomic, _value) \ - ({ \ - GF_ATOMIC_OP_PREPARE(_atomic, __value); \ - GF_ATOMIC_OP_STORE(__value &= (_value)); \ - GF_ATOMIC_OP_RETURN(__value); \ - }) - -#define GF_ATOMIC_LOCK_OR(_atomic, _value) \ - ({ \ - GF_ATOMIC_OP_PREPARE(_atomic, __value); \ - GF_ATOMIC_OP_STORE(__value |= (_value)); \ - GF_ATOMIC_OP_RETURN(__value); \ - }) - -#define GF_ATOMIC_LOCK_XOR(_atomic, _value) \ - ({ \ - GF_ATOMIC_OP_PREPARE(_atomic, __value); \ - GF_ATOMIC_OP_STORE(__value ^= (_value)); \ - GF_ATOMIC_OP_RETURN(__value); \ - }) - -#define GF_ATOMIC_LOCK_NAND(_atomic, _value) \ - ({ \ - GF_ATOMIC_OP_PREPARE(_atomic, __value); \ - GF_ATOMIC_OP_STORE(__value = ~(__value & (_value))); \ - GF_ATOMIC_OP_RETURN(__value); \ - }) - -#define GF_ATOMIC_LOCK_FETCH_ADD(_atomic, _value) \ - ({ \ - GF_ATOMIC_OP_PREPARE(_atomic, __value); \ - GF_ATOMIC_OP_STORE(__value + (_value)); \ - GF_ATOMIC_OP_RETURN(__value); \ - }) - -#define GF_ATOMIC_LOCK_FETCH_SUB(_atomic, _value) \ - ({ \ - GF_ATOMIC_OP_PREPARE(_atomic, __value); \ - GF_ATOMIC_OP_STORE(__value - (_value)); \ - GF_ATOMIC_OP_RETURN(__value); \ - }) - -#define GF_ATOMIC_LOCK_FETCH_AND(_atomic, _value) \ - ({ \ - GF_ATOMIC_OP_PREPARE(_atomic, __value); \ - GF_ATOMIC_OP_STORE(__value & (_value)); \ - GF_ATOMIC_OP_RETURN(__value); \ - }) - -#define GF_ATOMIC_LOCK_FETCH_OR(_atomic, _value) \ - ({ \ - GF_ATOMIC_OP_PREPARE(_atomic, __value); \ - GF_ATOMIC_OP_STORE(__value | (_value)); \ - GF_ATOMIC_OP_RETURN(__value); \ - }) - -#define GF_ATOMIC_LOCK_FETCH_XOR(_atomic, _value) \ - ({ \ - GF_ATOMIC_OP_PREPARE(_atomic, __value); \ - GF_ATOMIC_OP_STORE(__value ^ (_value)); \ - GF_ATOMIC_OP_RETURN(__value); \ - }) - -#define GF_ATOMIC_LOCK_FETCH_NAND(_atomic, _value) \ - ({ \ - GF_ATOMIC_OP_PREPARE(_atomic, __value); \ - GF_ATOMIC_OP_STORE(~(__value & (_value))); \ - GF_ATOMIC_OP_RETURN(__value); \ - }) - -#define GF_ATOMIC_LOCK_SWAP(_atomic, _value) \ - ({ \ - GF_ATOMIC_OP_PREPARE(_atomic, __value); \ - GF_ATOMIC_OP_STORE(_value); \ - GF_ATOMIC_OP_RETURN(__value); \ - }) - -#define GF_ATOMIC_LOCK_CMP_SWAP(_atomic, _expected, _value) \ - ({ \ - GF_ATOMIC_OP_PREPARE(_atomic, __value); \ - bool __ret = (__value == (_expected)); \ - if (__ret) { \ - GF_ATOMIC_OP_STORE(_value); \ - } \ - GF_ATOMIC_OP_RETURN(__ret); \ - }) +#define GF_ATOMIC_OP_PREPARE(_atomic, _name) \ + typeof(_atomic) *__atomic = &(_atomic); \ + gf_lock_t *__lock = (gf_lock_t *)&__atomic->lk; \ + LOCK(__lock); \ + typeof(__atomic->value) _name = __atomic->value + +#define GF_ATOMIC_OP_STORE(_value) (__atomic->value = (_value)) + +#define GF_ATOMIC_OP_RETURN(_value) \ + ({ \ + UNLOCK(__lock); \ + _value; \ + }) + +#define GF_ATOMIC_LOCK_INIT(_atomic, _value) \ + do { \ + typeof(_atomic) *__atomic = &(_atomic); \ + LOCK_INIT((gf_lock_t *)&__atomic->lk); \ + __atomic->value = (_value); \ + } while (0) + +#define GF_ATOMIC_LOCK_GET(_atomic) \ + ({ \ + GF_ATOMIC_OP_PREPARE(_atomic, __value); \ + GF_ATOMIC_OP_RETURN(__value); \ + }) + +#define GF_ATOMIC_LOCK_ADD(_atomic, _value) \ + ({ \ + GF_ATOMIC_OP_PREPARE(_atomic, __value); \ + GF_ATOMIC_OP_STORE(__value += (_value)); \ + GF_ATOMIC_OP_RETURN(__value); \ + }) + +#define GF_ATOMIC_LOCK_SUB(_atomic, _value) \ + ({ \ + GF_ATOMIC_OP_PREPARE(_atomic, __value); \ + GF_ATOMIC_OP_STORE(__value -= (_value)); \ + GF_ATOMIC_OP_RETURN(__value); \ + }) + +#define GF_ATOMIC_LOCK_AND(_atomic, _value) \ + ({ \ + GF_ATOMIC_OP_PREPARE(_atomic, __value); \ + GF_ATOMIC_OP_STORE(__value &= (_value)); \ + GF_ATOMIC_OP_RETURN(__value); \ + }) + +#define GF_ATOMIC_LOCK_OR(_atomic, _value) \ + ({ \ + GF_ATOMIC_OP_PREPARE(_atomic, __value); \ + GF_ATOMIC_OP_STORE(__value |= (_value)); \ + GF_ATOMIC_OP_RETURN(__value); \ + }) + +#define GF_ATOMIC_LOCK_XOR(_atomic, _value) \ + ({ \ + GF_ATOMIC_OP_PREPARE(_atomic, __value); \ + GF_ATOMIC_OP_STORE(__value ^= (_value)); \ + GF_ATOMIC_OP_RETURN(__value); \ + }) + +#define GF_ATOMIC_LOCK_NAND(_atomic, _value) \ + ({ \ + GF_ATOMIC_OP_PREPARE(_atomic, __value); \ + GF_ATOMIC_OP_STORE(__value = ~(__value & (_value))); \ + GF_ATOMIC_OP_RETURN(__value); \ + }) + +#define GF_ATOMIC_LOCK_FETCH_ADD(_atomic, _value) \ + ({ \ + GF_ATOMIC_OP_PREPARE(_atomic, __value); \ + GF_ATOMIC_OP_STORE(__value + (_value)); \ + GF_ATOMIC_OP_RETURN(__value); \ + }) + +#define GF_ATOMIC_LOCK_FETCH_SUB(_atomic, _value) \ + ({ \ + GF_ATOMIC_OP_PREPARE(_atomic, __value); \ + GF_ATOMIC_OP_STORE(__value - (_value)); \ + GF_ATOMIC_OP_RETURN(__value); \ + }) + +#define GF_ATOMIC_LOCK_FETCH_AND(_atomic, _value) \ + ({ \ + GF_ATOMIC_OP_PREPARE(_atomic, __value); \ + GF_ATOMIC_OP_STORE(__value &(_value)); \ + GF_ATOMIC_OP_RETURN(__value); \ + }) + +#define GF_ATOMIC_LOCK_FETCH_OR(_atomic, _value) \ + ({ \ + GF_ATOMIC_OP_PREPARE(_atomic, __value); \ + GF_ATOMIC_OP_STORE(__value | (_value)); \ + GF_ATOMIC_OP_RETURN(__value); \ + }) + +#define GF_ATOMIC_LOCK_FETCH_XOR(_atomic, _value) \ + ({ \ + GF_ATOMIC_OP_PREPARE(_atomic, __value); \ + GF_ATOMIC_OP_STORE(__value ^ (_value)); \ + GF_ATOMIC_OP_RETURN(__value); \ + }) + +#define GF_ATOMIC_LOCK_FETCH_NAND(_atomic, _value) \ + ({ \ + GF_ATOMIC_OP_PREPARE(_atomic, __value); \ + GF_ATOMIC_OP_STORE(~(__value & (_value))); \ + GF_ATOMIC_OP_RETURN(__value); \ + }) + +#define GF_ATOMIC_LOCK_SWAP(_atomic, _value) \ + ({ \ + GF_ATOMIC_OP_PREPARE(_atomic, __value); \ + GF_ATOMIC_OP_STORE(_value); \ + GF_ATOMIC_OP_RETURN(__value); \ + }) + +#define GF_ATOMIC_LOCK_CMP_SWAP(_atomic, _expected, _value) \ + ({ \ + GF_ATOMIC_OP_PREPARE(_atomic, __value); \ + bool __ret = (__value == (_expected)); \ + if (__ret) { \ + GF_ATOMIC_OP_STORE(_value); \ + } \ + GF_ATOMIC_OP_RETURN(__ret); \ + }) #if defined(HAVE_ATOMIC_BUILTINS) /* If compiler supports __atomic builtins, we use them. */ -#define GF_ATOMIC_BASE_INIT(_atomic, _value) \ - __atomic_store_n(&(_atomic).value, (_value), __ATOMIC_RELEASE) +#define GF_ATOMIC_BASE_INIT(_atomic, _value) \ + __atomic_store_n(&(_atomic).value, (_value), __ATOMIC_RELEASE) -#define GF_ATOMIC_BASE_GET(_atomic) \ - __atomic_load_n(&(_atomic).value, __ATOMIC_ACQUIRE) +#define GF_ATOMIC_BASE_GET(_atomic) \ + __atomic_load_n(&(_atomic).value, __ATOMIC_ACQUIRE) -#define GF_ATOMIC_BASE_ADD(_atomic, _value) \ - __atomic_add_fetch(&(_atomic).value, (_value), __ATOMIC_ACQ_REL) +#define GF_ATOMIC_BASE_ADD(_atomic, _value) \ + __atomic_add_fetch(&(_atomic).value, (_value), __ATOMIC_ACQ_REL) -#define GF_ATOMIC_BASE_SUB(_atomic, _value) \ - __atomic_sub_fetch(&(_atomic).value, (_value), __ATOMIC_ACQ_REL) +#define GF_ATOMIC_BASE_SUB(_atomic, _value) \ + __atomic_sub_fetch(&(_atomic).value, (_value), __ATOMIC_ACQ_REL) -#define GF_ATOMIC_BASE_AND(_atomic, _value) \ - __atomic_and_fetch(&(_atomic).value, (_value), __ATOMIC_ACQ_REL) +#define GF_ATOMIC_BASE_AND(_atomic, _value) \ + __atomic_and_fetch(&(_atomic).value, (_value), __ATOMIC_ACQ_REL) -#define GF_ATOMIC_BASE_OR(_atomic, _value) \ - __atomic_or_fetch(&(_atomic).value, (_value), __ATOMIC_ACQ_REL) +#define GF_ATOMIC_BASE_OR(_atomic, _value) \ + __atomic_or_fetch(&(_atomic).value, (_value), __ATOMIC_ACQ_REL) -#define GF_ATOMIC_BASE_XOR(_atomic, _value) \ - __atomic_xor_fetch(&(_atomic).value, (_value), __ATOMIC_ACQ_REL) +#define GF_ATOMIC_BASE_XOR(_atomic, _value) \ + __atomic_xor_fetch(&(_atomic).value, (_value), __ATOMIC_ACQ_REL) -#define GF_ATOMIC_BASE_NAND(_atomic, _value) \ - __atomic_nand_fetch(&(_atomic).value, (_value), __ATOMIC_ACQ_REL) +#define GF_ATOMIC_BASE_NAND(_atomic, _value) \ + __atomic_nand_fetch(&(_atomic).value, (_value), __ATOMIC_ACQ_REL) -#define GF_ATOMIC_BASE_FETCH_ADD(_atomic, _value) \ - __atomic_fetch_add(&(_atomic).value, (_value), __ATOMIC_ACQ_REL) +#define GF_ATOMIC_BASE_FETCH_ADD(_atomic, _value) \ + __atomic_fetch_add(&(_atomic).value, (_value), __ATOMIC_ACQ_REL) -#define GF_ATOMIC_BASE_FETCH_SUB(_atomic, _value) \ - __atomic_fetch_sub(&(_atomic).value, (_value), __ATOMIC_ACQ_REL) +#define GF_ATOMIC_BASE_FETCH_SUB(_atomic, _value) \ + __atomic_fetch_sub(&(_atomic).value, (_value), __ATOMIC_ACQ_REL) -#define GF_ATOMIC_BASE_FETCH_AND(_atomic, _value) \ - __atomic_fetch_and(&(_atomic).value, (_value), __ATOMIC_ACQ_REL) +#define GF_ATOMIC_BASE_FETCH_AND(_atomic, _value) \ + __atomic_fetch_and(&(_atomic).value, (_value), __ATOMIC_ACQ_REL) -#define GF_ATOMIC_BASE_FETCH_OR(_atomic, _value) \ - __atomic_fetch_or(&(_atomic).value, (_value), __ATOMIC_ACQ_REL) +#define GF_ATOMIC_BASE_FETCH_OR(_atomic, _value) \ + __atomic_fetch_or(&(_atomic).value, (_value), __ATOMIC_ACQ_REL) -#define GF_ATOMIC_BASE_FETCH_XOR(_atomic, _value) \ - __atomic_fetch_xor(&(_atomic).value, (_value), __ATOMIC_ACQ_REL) +#define GF_ATOMIC_BASE_FETCH_XOR(_atomic, _value) \ + __atomic_fetch_xor(&(_atomic).value, (_value), __ATOMIC_ACQ_REL) -#define GF_ATOMIC_BASE_FETCH_NAND(_atomic, _value) \ - __atomic_fetch_nand(&(_atomic).value, (_value), __ATOMIC_ACQ_REL) +#define GF_ATOMIC_BASE_FETCH_NAND(_atomic, _value) \ + __atomic_fetch_nand(&(_atomic).value, (_value), __ATOMIC_ACQ_REL) -#define GF_ATOMIC_BASE_SWAP(_atomic, _value) \ - __atomic_exchange_n(&(_atomic).value, (_value), __ATOMIC_ACQ_REL) +#define GF_ATOMIC_BASE_SWAP(_atomic, _value) \ + __atomic_exchange_n(&(_atomic).value, (_value), __ATOMIC_ACQ_REL) -#define GF_ATOMIC_BASE_CMP_SWAP(_atomic, _expected, _value) \ - ({ \ - typeof((_atomic).value) __expected = (_expected); \ - __atomic_compare_exchange_n(&(_atomic).value, &__expected, \ - (_value), 0, __ATOMIC_ACQ_REL, \ - __ATOMIC_ACQUIRE); \ - }) +#define GF_ATOMIC_BASE_CMP_SWAP(_atomic, _expected, _value) \ + ({ \ + typeof((_atomic).value) __expected = (_expected); \ + __atomic_compare_exchange_n(&(_atomic).value, &__expected, (_value), \ + 0, __ATOMIC_ACQ_REL, __ATOMIC_ACQUIRE); \ + }) #elif defined(HAVE_SYNC_BUILTINS) /* If compiler doesn't support __atomic builtins but supports __sync builtins, * we use them. */ -#define GF_ATOMIC_BASE_INIT(_atomic, _value) \ - do { \ - (_atomic).value = (_value); \ - __sync_synchronize(); \ - } while (0) +#define GF_ATOMIC_BASE_INIT(_atomic, _value) \ + do { \ + (_atomic).value = (_value); \ + __sync_synchronize(); \ + } while (0) -#define GF_ATOMIC_BASE_ADD(_atomic, _value) \ - __sync_add_and_fetch(&(_atomic).value, (_value)) +#define GF_ATOMIC_BASE_ADD(_atomic, _value) \ + __sync_add_and_fetch(&(_atomic).value, (_value)) -#define GF_ATOMIC_BASE_SUB(_atomic, _value) \ - __sync_sub_and_fetch(&(_atomic).value, (_value)) +#define GF_ATOMIC_BASE_SUB(_atomic, _value) \ + __sync_sub_and_fetch(&(_atomic).value, (_value)) -#define GF_ATOMIC_BASE_AND(_atomic, _value) \ - __sync_and_and_fetch(&(_atomic).value, (_value)) +#define GF_ATOMIC_BASE_AND(_atomic, _value) \ + __sync_and_and_fetch(&(_atomic).value, (_value)) -#define GF_ATOMIC_BASE_OR(_atomic, _value) \ - __sync_or_and_fetch(&(_atomic).value, (_value)) +#define GF_ATOMIC_BASE_OR(_atomic, _value) \ + __sync_or_and_fetch(&(_atomic).value, (_value)) -#define GF_ATOMIC_BASE_XOR(_atomic, _value) \ - __sync_xor_and_fetch(&(_atomic).value, (_value)) +#define GF_ATOMIC_BASE_XOR(_atomic, _value) \ + __sync_xor_and_fetch(&(_atomic).value, (_value)) -#define GF_ATOMIC_BASE_NAND(_atomic, _value) \ - __sync_nand_and_fetch(&(_atomic).value, (_value)) +#define GF_ATOMIC_BASE_NAND(_atomic, _value) \ + __sync_nand_and_fetch(&(_atomic).value, (_value)) -#define GF_ATOMIC_BASE_FETCH_ADD(_atomic, _value) \ - __sync_fetch_and_add(&(_atomic).value, (_value)) +#define GF_ATOMIC_BASE_FETCH_ADD(_atomic, _value) \ + __sync_fetch_and_add(&(_atomic).value, (_value)) -#define GF_ATOMIC_BASE_FETCH_SUB(_atomic, _value) \ - __sync_fetch_and_sub(&(_atomic).value, (_value)) +#define GF_ATOMIC_BASE_FETCH_SUB(_atomic, _value) \ + __sync_fetch_and_sub(&(_atomic).value, (_value)) -#define GF_ATOMIC_BASE_FETCH_AND(_atomic, _value) \ - __sync_fetch_and_and(&(_atomic).value, (_value)) +#define GF_ATOMIC_BASE_FETCH_AND(_atomic, _value) \ + __sync_fetch_and_and(&(_atomic).value, (_value)) -#define GF_ATOMIC_BASE_FETCH_OR(_atomic, _value) \ - __sync_fetch_and_or(&(_atomic).value, (_value)) +#define GF_ATOMIC_BASE_FETCH_OR(_atomic, _value) \ + __sync_fetch_and_or(&(_atomic).value, (_value)) -#define GF_ATOMIC_BASE_FETCH_XOR(_atomic, _value) \ - __sync_fetch_and_xor(&(_atomic).value, (_value)) +#define GF_ATOMIC_BASE_FETCH_XOR(_atomic, _value) \ + __sync_fetch_and_xor(&(_atomic).value, (_value)) -#define GF_ATOMIC_BASE_FETCH_NAND(_atomic, _value) \ - __sync_fetch_and_nand(&(_atomic).value, (_value)) +#define GF_ATOMIC_BASE_FETCH_NAND(_atomic, _value) \ + __sync_fetch_and_nand(&(_atomic).value, (_value)) -#define GF_ATOMIC_BASE_SWAP(_atomic, _value) \ - ({ \ - __sync_synchronize(); \ - __sync_lock_test_and_set(&(_atomic).value, (_value)); \ - }) +#define GF_ATOMIC_BASE_SWAP(_atomic, _value) \ + ({ \ + __sync_synchronize(); \ + __sync_lock_test_and_set(&(_atomic).value, (_value)); \ + }) -#define GF_ATOMIC_BASE_CMP_SWAP(_atomic, _expected, _value) \ - __sync_bool_compare_and_swap(&(_atomic).value, (_expected), (_value)) +#define GF_ATOMIC_BASE_CMP_SWAP(_atomic, _expected, _value) \ + __sync_bool_compare_and_swap(&(_atomic).value, (_expected), (_value)) #define GF_ATOMIC_BASE_GET(_atomic) GF_ATOMIC_BASE_ADD(_atomic, 0) @@ -367,53 +367,47 @@ GF_ATOMIC_TYPE(SIZEOF_LONG, uintptr); /* gf_atomic_uintptr_t */ /* The compiler doesn't support any atomic builtin. We fallback to the * mutex-based implementation. */ -#define GF_ATOMIC_BASE_INIT(_atomic, _value) \ - GF_ATOMIC_LOCK_INIT(_atomic, _value) +#define GF_ATOMIC_BASE_INIT(_atomic, _value) \ + GF_ATOMIC_LOCK_INIT(_atomic, _value) -#define GF_ATOMIC_BASE_GET(_atomic) \ - GF_ATOMIC_LOCK_GET(_atomic) +#define GF_ATOMIC_BASE_GET(_atomic) GF_ATOMIC_LOCK_GET(_atomic) -#define GF_ATOMIC_BASE_ADD(_atomic, _value) \ - GF_ATOMIC_LOCK_ADD(_atomic, _value) +#define GF_ATOMIC_BASE_ADD(_atomic, _value) GF_ATOMIC_LOCK_ADD(_atomic, _value) -#define GF_ATOMIC_BASE_SUB(_atomic, _value) \ - GF_ATOMIC_LOCK_SUB(_atomic, _value) +#define GF_ATOMIC_BASE_SUB(_atomic, _value) GF_ATOMIC_LOCK_SUB(_atomic, _value) -#define GF_ATOMIC_BASE_AND(_atomic, _value) \ - GF_ATOMIC_LOCK_AND(_atomic, _value) +#define GF_ATOMIC_BASE_AND(_atomic, _value) GF_ATOMIC_LOCK_AND(_atomic, _value) -#define GF_ATOMIC_BASE_OR(_atomic, _value) \ - GF_ATOMIC_LOCK_OR(_atomic, _value) +#define GF_ATOMIC_BASE_OR(_atomic, _value) GF_ATOMIC_LOCK_OR(_atomic, _value) -#define GF_ATOMIC_BASE_XOR(_atomic, _value) \ - GF_ATOMIC_LOCK_XOR(_atomic, _value) +#define GF_ATOMIC_BASE_XOR(_atomic, _value) GF_ATOMIC_LOCK_XOR(_atomic, _value) -#define GF_ATOMIC_BASE_NAND(_atomic, _value) \ - GF_ATOMIC_LOCK_NAND(_atomic, _value) +#define GF_ATOMIC_BASE_NAND(_atomic, _value) \ + GF_ATOMIC_LOCK_NAND(_atomic, _value) -#define GF_ATOMIC_BASE_FETCH_ADD(_atomic, _value) \ - GF_ATOMIC_LOCK_FETCH_ADD(_atomic, _value) +#define GF_ATOMIC_BASE_FETCH_ADD(_atomic, _value) \ + GF_ATOMIC_LOCK_FETCH_ADD(_atomic, _value) -#define GF_ATOMIC_BASE_FETCH_SUB(_atomic, _value) \ - GF_ATOMIC_LOCK_FETCH_SUB(_atomic, _value) +#define GF_ATOMIC_BASE_FETCH_SUB(_atomic, _value) \ + GF_ATOMIC_LOCK_FETCH_SUB(_atomic, _value) -#define GF_ATOMIC_BASE_FETCH_AND(_atomic, _value) \ - GF_ATOMIC_LOCK_FETCH_AND(_atomic, _value) +#define GF_ATOMIC_BASE_FETCH_AND(_atomic, _value) \ + GF_ATOMIC_LOCK_FETCH_AND(_atomic, _value) -#define GF_ATOMIC_BASE_FETCH_OR(_atomic, _value) \ - GF_ATOMIC_LOCK_FETCH_OR(_atomic, _value) +#define GF_ATOMIC_BASE_FETCH_OR(_atomic, _value) \ + GF_ATOMIC_LOCK_FETCH_OR(_atomic, _value) -#define GF_ATOMIC_BASE_FETCH_XOR(_atomic, _value) \ - GF_ATOMIC_LOCK_FETCH_XOR(_atomic, _value) +#define GF_ATOMIC_BASE_FETCH_XOR(_atomic, _value) \ + GF_ATOMIC_LOCK_FETCH_XOR(_atomic, _value) -#define GF_ATOMIC_BASE_FETCH_NAND(_atomic, _value) \ - GF_ATOMIC_LOCK_FETCH_NAND(_atomic, _value) +#define GF_ATOMIC_BASE_FETCH_NAND(_atomic, _value) \ + GF_ATOMIC_LOCK_FETCH_NAND(_atomic, _value) -#define GF_ATOMIC_BASE_SWAP(_atomic, _value) \ - GF_ATOMIC_LOCK_SWAP(_atomic, _value) +#define GF_ATOMIC_BASE_SWAP(_atomic, _value) \ + GF_ATOMIC_LOCK_SWAP(_atomic, _value) -#define GF_ATOMIC_BASE_CMP_SWAP(_atomic, _expected, _value) \ - GF_ATOMIC_LOCK_CMP_SWAP(_atomic, _expected, _value) +#define GF_ATOMIC_BASE_CMP_SWAP(_atomic, _expected, _value) \ + GF_ATOMIC_LOCK_CMP_SWAP(_atomic, _expected, _value) #endif /* HAVE_(ATOMIC|SYNC)_BUILTINS */ @@ -422,40 +416,39 @@ GF_ATOMIC_TYPE(SIZEOF_LONG, uintptr); /* gf_atomic_uintptr_t */ /* All macros have a 'gf_atomic_xxx' as 1st argument */ #define GF_ATOMIC_INIT(_atomic, _value) GF_ATOMIC_CHOOSE(_atomic, INIT, _value) -#define GF_ATOMIC_GET(_atomic) GF_ATOMIC_CHOOSE(_atomic, GET) -#define GF_ATOMIC_ADD(_atomic, _value) GF_ATOMIC_CHOOSE(_atomic, ADD, _value) -#define GF_ATOMIC_SUB(_atomic, _value) GF_ATOMIC_CHOOSE(_atomic, SUB, _value) -#define GF_ATOMIC_AND(_atomic, _value) GF_ATOMIC_CHOOSE(_atomic, AND, _value) -#define GF_ATOMIC_OR(_atomic, _value) GF_ATOMIC_CHOOSE(_atomic, OR, _value) -#define GF_ATOMIC_XOR(_atomic, _value) GF_ATOMIC_CHOOSE(_atomic, XOR, _value) +#define GF_ATOMIC_GET(_atomic) GF_ATOMIC_CHOOSE(_atomic, GET) +#define GF_ATOMIC_ADD(_atomic, _value) GF_ATOMIC_CHOOSE(_atomic, ADD, _value) +#define GF_ATOMIC_SUB(_atomic, _value) GF_ATOMIC_CHOOSE(_atomic, SUB, _value) +#define GF_ATOMIC_AND(_atomic, _value) GF_ATOMIC_CHOOSE(_atomic, AND, _value) +#define GF_ATOMIC_OR(_atomic, _value) GF_ATOMIC_CHOOSE(_atomic, OR, _value) +#define GF_ATOMIC_XOR(_atomic, _value) GF_ATOMIC_CHOOSE(_atomic, XOR, _value) #define GF_ATOMIC_NAND(_atomic, _value) GF_ATOMIC_CHOOSE(_atomic, NAND, _value) -#define GF_ATOMIC_FETCH_ADD(_atomic, _value) \ - GF_ATOMIC_CHOOSE(_atomic, FETCH_ADD, _value) +#define GF_ATOMIC_FETCH_ADD(_atomic, _value) \ + GF_ATOMIC_CHOOSE(_atomic, FETCH_ADD, _value) -#define GF_ATOMIC_FETCH_SUB(_atomic, _value) \ - GF_ATOMIC_CHOOSE(_atomic, FETCH_SUB, _value) +#define GF_ATOMIC_FETCH_SUB(_atomic, _value) \ + GF_ATOMIC_CHOOSE(_atomic, FETCH_SUB, _value) -#define GF_ATOMIC_FETCH_AND(_atomic, _value) \ - GF_ATOMIC_CHOOSE(_atomic, FETCH_AND, _value) +#define GF_ATOMIC_FETCH_AND(_atomic, _value) \ + GF_ATOMIC_CHOOSE(_atomic, FETCH_AND, _value) -#define GF_ATOMIC_FETCH_OR(_atomic, _value) \ - GF_ATOMIC_CHOOSE(_atomic, FETCH_OR, _value) +#define GF_ATOMIC_FETCH_OR(_atomic, _value) \ + GF_ATOMIC_CHOOSE(_atomic, FETCH_OR, _value) -#define GF_ATOMIC_FETCH_XOR(_atomic, _value) \ - GF_ATOMIC_CHOOSE(_atomic, FETCH_XOR, _value) +#define GF_ATOMIC_FETCH_XOR(_atomic, _value) \ + GF_ATOMIC_CHOOSE(_atomic, FETCH_XOR, _value) -#define GF_ATOMIC_FETCH_NAND(_atomic, _value) \ - GF_ATOMIC_CHOOSE(_atomic, FETCH_NAND, _value) +#define GF_ATOMIC_FETCH_NAND(_atomic, _value) \ + GF_ATOMIC_CHOOSE(_atomic, FETCH_NAND, _value) -#define GF_ATOMIC_SWAP(_atomic, _value) \ - GF_ATOMIC_CHOOSE(_atomic, SWAP, _value) +#define GF_ATOMIC_SWAP(_atomic, _value) GF_ATOMIC_CHOOSE(_atomic, SWAP, _value) -#define GF_ATOMIC_CMP_SWAP(_atomic, _expected, _value) \ - GF_ATOMIC_CHOOSE(_atomic, CMP_SWAP, _expected, _value) +#define GF_ATOMIC_CMP_SWAP(_atomic, _expected, _value) \ + GF_ATOMIC_CHOOSE(_atomic, CMP_SWAP, _expected, _value) -#define GF_ATOMIC_INC(_atomic) GF_ATOMIC_ADD(_atomic, 1) -#define GF_ATOMIC_DEC(_atomic) GF_ATOMIC_SUB(_atomic, 1) +#define GF_ATOMIC_INC(_atomic) GF_ATOMIC_ADD(_atomic, 1) +#define GF_ATOMIC_DEC(_atomic) GF_ATOMIC_SUB(_atomic, 1) #define GF_ATOMIC_FETCH_INC(_atomic) GF_ATOMIC_FETCH_ADD(_atomic, 1) #define GF_ATOMIC_FETCH_DEC(_atomic) GF_ATOMIC_FETCH_SUB(_atomic, 1) diff --git a/libglusterfs/src/byte-order.h b/libglusterfs/src/byte-order.h index 4101db2c71d..fd8cef9e58d 100644 --- a/libglusterfs/src/byte-order.h +++ b/libglusterfs/src/byte-order.h @@ -20,282 +20,260 @@ #define LS4 0x00000000ffffffffULL #define MS4 0xffffffff00000000ULL - -static uint16_t (*hton16) (uint16_t); -static uint32_t (*hton32) (uint32_t); -static uint64_t (*hton64) (uint64_t); +static uint16_t (*hton16)(uint16_t); +static uint32_t (*hton32)(uint32_t); +static uint64_t (*hton64)(uint64_t); #define ntoh16 hton16 #define ntoh32 hton32 #define ntoh64 hton64 -static uint16_t (*htole16) (uint16_t); -static uint32_t (*htole32) (uint32_t); -static uint64_t (*htole64) (uint64_t); +static uint16_t (*htole16)(uint16_t); +static uint32_t (*htole32)(uint32_t); +static uint64_t (*htole64)(uint64_t); #define letoh16 htole16 #define letoh32 htole32 #define letoh64 htole64 -static uint16_t (*htobe16) (uint16_t); -static uint32_t (*htobe32) (uint32_t); -static uint64_t (*htobe64) (uint64_t); +static uint16_t (*htobe16)(uint16_t); +static uint32_t (*htobe32)(uint32_t); +static uint64_t (*htobe64)(uint64_t); #define betoh16 htobe16 #define betoh32 htobe32 #define betoh64 htobe64 - -#define do_swap2(x) (((x&LS1) << 8)|(((x&MS1) >> 8))) -#define do_swap4(x) ((do_swap2(x&LS2) << 16)|(do_swap2((x&MS2) >> 16))) -#define do_swap8(x) ((do_swap4(x&LS4) << 32)|(do_swap4((x&MS4) >> 32))) - +#define do_swap2(x) (((x & LS1) << 8) | (((x & MS1) >> 8))) +#define do_swap4(x) ((do_swap2(x & LS2) << 16) | (do_swap2((x & MS2) >> 16))) +#define do_swap8(x) ((do_swap4(x & LS4) << 32) | (do_swap4((x & MS4) >> 32))) static inline uint16_t -__swap16 (uint16_t x) +__swap16(uint16_t x) { - return do_swap2(x); + return do_swap2(x); } - static inline uint32_t -__swap32 (uint32_t x) +__swap32(uint32_t x) { - return do_swap4(x); + return do_swap4(x); } - static inline uint64_t -__swap64 (uint64_t x) +__swap64(uint64_t x) { - return do_swap8(x); + return do_swap8(x); } - static inline uint16_t -__noswap16 (uint16_t x) +__noswap16(uint16_t x) { - return x; + return x; } - static inline uint32_t -__noswap32 (uint32_t x) +__noswap32(uint32_t x) { - return x; + return x; } - static inline uint64_t -__noswap64 (uint64_t x) +__noswap64(uint64_t x) { - return x; + return x; } - static inline uint16_t -__byte_order_n16 (uint16_t i) +__byte_order_n16(uint16_t i) { - uint32_t num = 1; - - if (((char *)(&num))[0] == 1) { - /* cpu is le */ - hton16 = __swap16; - hton32 = __swap32; - hton64 = __swap64; - } else { - /* cpu is be */ - hton16 = __noswap16; - hton32 = __noswap32; - hton64 = __noswap64; - } - - return hton16 (i); + uint32_t num = 1; + + if (((char *)(&num))[0] == 1) { + /* cpu is le */ + hton16 = __swap16; + hton32 = __swap32; + hton64 = __swap64; + } else { + /* cpu is be */ + hton16 = __noswap16; + hton32 = __noswap32; + hton64 = __noswap64; + } + + return hton16(i); } - static inline uint32_t -__byte_order_n32 (uint32_t i) +__byte_order_n32(uint32_t i) { - uint32_t num = 1; - - if (((char *)(&num))[0] == 1) { - /* cpu is le */ - hton16 = __swap16; - hton32 = __swap32; - hton64 = __swap64; - } else { - /* cpu is be */ - hton16 = __noswap16; - hton32 = __noswap32; - hton64 = __noswap64; - } - - return hton32 (i); + uint32_t num = 1; + + if (((char *)(&num))[0] == 1) { + /* cpu is le */ + hton16 = __swap16; + hton32 = __swap32; + hton64 = __swap64; + } else { + /* cpu is be */ + hton16 = __noswap16; + hton32 = __noswap32; + hton64 = __noswap64; + } + + return hton32(i); } - static inline uint64_t -__byte_order_n64 (uint64_t i) +__byte_order_n64(uint64_t i) { - uint32_t num = 1; - - if (((char *)(&num))[0] == 1) { - /* cpu is le */ - hton16 = __swap16; - hton32 = __swap32; - hton64 = __swap64; - } else { - /* cpu is be */ - hton16 = __noswap16; - hton32 = __noswap32; - hton64 = __noswap64; - } - - return hton64 (i); + uint32_t num = 1; + + if (((char *)(&num))[0] == 1) { + /* cpu is le */ + hton16 = __swap16; + hton32 = __swap32; + hton64 = __swap64; + } else { + /* cpu is be */ + hton16 = __noswap16; + hton32 = __noswap32; + hton64 = __noswap64; + } + + return hton64(i); } - -static uint16_t (*hton16) (uint16_t) = __byte_order_n16; -static uint32_t (*hton32) (uint32_t) = __byte_order_n32; -static uint64_t (*hton64) (uint64_t) = __byte_order_n64; - +static uint16_t (*hton16)(uint16_t) = __byte_order_n16; +static uint32_t (*hton32)(uint32_t) = __byte_order_n32; +static uint64_t (*hton64)(uint64_t) = __byte_order_n64; static inline uint16_t -__byte_order_le16 (uint16_t i) +__byte_order_le16(uint16_t i) { - uint32_t num = 1; - - if (((char *)(&num))[0] == 1) { - /* cpu is le */ - htole16 = __noswap16; - htole32 = __noswap32; - htole64 = __noswap64; - } else { - /* cpu is be */ - htole16 = __swap16; - htole32 = __swap32; - htole64 = __swap64; - } - - return htole16 (i); + uint32_t num = 1; + + if (((char *)(&num))[0] == 1) { + /* cpu is le */ + htole16 = __noswap16; + htole32 = __noswap32; + htole64 = __noswap64; + } else { + /* cpu is be */ + htole16 = __swap16; + htole32 = __swap32; + htole64 = __swap64; + } + + return htole16(i); } - static inline uint32_t -__byte_order_le32 (uint32_t i) +__byte_order_le32(uint32_t i) { - uint32_t num = 1; - - if (((char *)(&num))[0] == 1) { - /* cpu is le */ - htole16 = __noswap16; - htole32 = __noswap32; - htole64 = __noswap64; - } else { - /* cpu is be */ - htole16 = __swap16; - htole32 = __swap32; - htole64 = __swap64; - } - - return htole32 (i); + uint32_t num = 1; + + if (((char *)(&num))[0] == 1) { + /* cpu is le */ + htole16 = __noswap16; + htole32 = __noswap32; + htole64 = __noswap64; + } else { + /* cpu is be */ + htole16 = __swap16; + htole32 = __swap32; + htole64 = __swap64; + } + + return htole32(i); } - static inline uint64_t -__byte_order_le64 (uint64_t i) +__byte_order_le64(uint64_t i) { - uint32_t num = 1; - - if (((char *)(&num))[0] == 1) { - /* cpu is le */ - htole16 = __noswap16; - htole32 = __noswap32; - htole64 = __noswap64; - } else { - /* cpu is be */ - htole16 = __swap16; - htole32 = __swap32; - htole64 = __swap64; - } - - return htole64 (i); + uint32_t num = 1; + + if (((char *)(&num))[0] == 1) { + /* cpu is le */ + htole16 = __noswap16; + htole32 = __noswap32; + htole64 = __noswap64; + } else { + /* cpu is be */ + htole16 = __swap16; + htole32 = __swap32; + htole64 = __swap64; + } + + return htole64(i); } - -static uint16_t (*htole16) (uint16_t) = __byte_order_le16; -static uint32_t (*htole32) (uint32_t) = __byte_order_le32; -static uint64_t (*htole64) (uint64_t) = __byte_order_le64; - +static uint16_t (*htole16)(uint16_t) = __byte_order_le16; +static uint32_t (*htole32)(uint32_t) = __byte_order_le32; +static uint64_t (*htole64)(uint64_t) = __byte_order_le64; static inline uint16_t -__byte_order_be16 (uint16_t i) +__byte_order_be16(uint16_t i) { - uint32_t num = 1; - - if (((char *)(&num))[0] == 1) { - /* cpu is le */ - htobe16 = __swap16; - htobe32 = __swap32; - htobe64 = __swap64; - } else { - /* cpu is be */ - htobe16 = __noswap16; - htobe32 = __noswap32; - htobe64 = __noswap64; - } - - return htobe16 (i); + uint32_t num = 1; + + if (((char *)(&num))[0] == 1) { + /* cpu is le */ + htobe16 = __swap16; + htobe32 = __swap32; + htobe64 = __swap64; + } else { + /* cpu is be */ + htobe16 = __noswap16; + htobe32 = __noswap32; + htobe64 = __noswap64; + } + + return htobe16(i); } - static inline uint32_t -__byte_order_be32 (uint32_t i) +__byte_order_be32(uint32_t i) { - uint32_t num = 1; - - if (((char *)(&num))[0] == 1) { - /* cpu is le */ - htobe16 = __swap16; - htobe32 = __swap32; - htobe64 = __swap64; - } else { - /* cpu is be */ - htobe16 = __noswap16; - htobe32 = __noswap32; - htobe64 = __noswap64; - } - - return htobe32 (i); + uint32_t num = 1; + + if (((char *)(&num))[0] == 1) { + /* cpu is le */ + htobe16 = __swap16; + htobe32 = __swap32; + htobe64 = __swap64; + } else { + /* cpu is be */ + htobe16 = __noswap16; + htobe32 = __noswap32; + htobe64 = __noswap64; + } + + return htobe32(i); } - static inline uint64_t -__byte_order_be64 (uint64_t i) +__byte_order_be64(uint64_t i) { - uint32_t num = 1; - - if (((char *)(&num))[0] == 1) { - /* cpu is le */ - htobe16 = __swap16; - htobe32 = __swap32; - htobe64 = __swap64; - } else { - /* cpu is be */ - htobe16 = __noswap16; - htobe32 = __noswap32; - htobe64 = __noswap64; - } - - return htobe64 (i); + uint32_t num = 1; + + if (((char *)(&num))[0] == 1) { + /* cpu is le */ + htobe16 = __swap16; + htobe32 = __swap32; + htobe64 = __swap64; + } else { + /* cpu is be */ + htobe16 = __noswap16; + htobe32 = __noswap32; + htobe64 = __noswap64; + } + + return htobe64(i); } - -static uint16_t (*htobe16) (uint16_t) = __byte_order_be16; -static uint32_t (*htobe32) (uint32_t) = __byte_order_be32; -static uint64_t (*htobe64) (uint64_t) = __byte_order_be64; - - +static uint16_t (*htobe16)(uint16_t) = __byte_order_be16; +static uint32_t (*htobe32)(uint32_t) = __byte_order_be32; +static uint64_t (*htobe64)(uint64_t) = __byte_order_be64; #endif /* _BYTE_ORDER_H */ diff --git a/libglusterfs/src/call-stub.h b/libglusterfs/src/call-stub.h index c3b63d4c758..815ea312c93 100644 --- a/libglusterfs/src/call-stub.h +++ b/libglusterfs/src/call-stub.h @@ -18,799 +18,593 @@ #include "list.h" typedef struct _call_stub { - struct list_head list; - char wind; - call_frame_t *frame; - glusterfs_fop_t fop; - gf_boolean_t poison; - struct mem_pool *stub_mem_pool; /* pointer to stub mempool in ctx_t */ - uint32_t jnl_meta_len; - uint32_t jnl_data_len; - void (*serialize) (struct _call_stub *, char *, char *); - - union { - fop_lookup_t lookup; - fop_stat_t stat; - fop_fstat_t fstat; - fop_truncate_t truncate; - fop_ftruncate_t ftruncate; - fop_access_t access; - fop_readlink_t readlink; - fop_mknod_t mknod; - fop_mkdir_t mkdir; - fop_unlink_t unlink; - fop_rmdir_t rmdir; - fop_symlink_t symlink; - fop_rename_t rename; - fop_link_t link; - fop_create_t create; - fop_open_t open; - fop_readv_t readv; - fop_writev_t writev; - fop_flush_t flush; - fop_fsync_t fsync; - fop_opendir_t opendir; - fop_fsyncdir_t fsyncdir; - fop_statfs_t statfs; - fop_setxattr_t setxattr; - fop_getxattr_t getxattr; - fop_fgetxattr_t fgetxattr; - fop_fsetxattr_t fsetxattr; - fop_removexattr_t removexattr; - fop_fremovexattr_t fremovexattr; - fop_lk_t lk; - fop_inodelk_t inodelk; - fop_finodelk_t finodelk; - fop_entrylk_t entrylk; - fop_fentrylk_t fentrylk; - fop_readdir_t readdir; - fop_readdirp_t readdirp; - fop_rchecksum_t rchecksum; - fop_xattrop_t xattrop; - fop_fxattrop_t fxattrop; - fop_setattr_t setattr; - fop_fsetattr_t fsetattr; - fop_fallocate_t fallocate; - fop_discard_t discard; - fop_zerofill_t zerofill; - fop_ipc_t ipc; - fop_seek_t seek; - fop_lease_t lease; - fop_getactivelk_t getactivelk; - fop_setactivelk_t setactivelk; - fop_put_t put; - fop_icreate_t icreate; - fop_namelink_t namelink; - } fn; - - union { - fop_lookup_cbk_t lookup; - fop_stat_cbk_t stat; - fop_fstat_cbk_t fstat; - fop_truncate_cbk_t truncate; - fop_ftruncate_cbk_t ftruncate; - fop_access_cbk_t access; - fop_readlink_cbk_t readlink; - fop_mknod_cbk_t mknod; - fop_mkdir_cbk_t mkdir; - fop_unlink_cbk_t unlink; - fop_rmdir_cbk_t rmdir; - fop_symlink_cbk_t symlink; - fop_rename_cbk_t rename; - fop_link_cbk_t link; - fop_create_cbk_t create; - fop_open_cbk_t open; - fop_readv_cbk_t readv; - fop_writev_cbk_t writev; - fop_flush_cbk_t flush; - fop_fsync_cbk_t fsync; - fop_opendir_cbk_t opendir; - fop_fsyncdir_cbk_t fsyncdir; - fop_statfs_cbk_t statfs; - fop_setxattr_cbk_t setxattr; - fop_getxattr_cbk_t getxattr; - fop_fgetxattr_cbk_t fgetxattr; - fop_fsetxattr_cbk_t fsetxattr; - fop_removexattr_cbk_t removexattr; - fop_fremovexattr_cbk_t fremovexattr; - fop_lk_cbk_t lk; - fop_inodelk_cbk_t inodelk; - fop_finodelk_cbk_t finodelk; - fop_entrylk_cbk_t entrylk; - fop_fentrylk_cbk_t fentrylk; - fop_readdir_cbk_t readdir; - fop_readdirp_cbk_t readdirp; - fop_rchecksum_cbk_t rchecksum; - fop_xattrop_cbk_t xattrop; - fop_fxattrop_cbk_t fxattrop; - fop_setattr_cbk_t setattr; - fop_fsetattr_cbk_t fsetattr; - fop_fallocate_cbk_t fallocate; - fop_discard_cbk_t discard; - fop_zerofill_cbk_t zerofill; - fop_ipc_cbk_t ipc; - fop_seek_cbk_t seek; - fop_lease_cbk_t lease; - fop_getactivelk_cbk_t getactivelk; - fop_setactivelk_cbk_t setactivelk; - fop_put_cbk_t put; - fop_icreate_cbk_t icreate; - fop_namelink_cbk_t namelink; - } fn_cbk; - - default_args_t args; - default_args_cbk_t args_cbk; + struct list_head list; + char wind; + call_frame_t *frame; + glusterfs_fop_t fop; + gf_boolean_t poison; + struct mem_pool *stub_mem_pool; /* pointer to stub mempool in ctx_t */ + uint32_t jnl_meta_len; + uint32_t jnl_data_len; + void (*serialize)(struct _call_stub *, char *, char *); + + union { + fop_lookup_t lookup; + fop_stat_t stat; + fop_fstat_t fstat; + fop_truncate_t truncate; + fop_ftruncate_t ftruncate; + fop_access_t access; + fop_readlink_t readlink; + fop_mknod_t mknod; + fop_mkdir_t mkdir; + fop_unlink_t unlink; + fop_rmdir_t rmdir; + fop_symlink_t symlink; + fop_rename_t rename; + fop_link_t link; + fop_create_t create; + fop_open_t open; + fop_readv_t readv; + fop_writev_t writev; + fop_flush_t flush; + fop_fsync_t fsync; + fop_opendir_t opendir; + fop_fsyncdir_t fsyncdir; + fop_statfs_t statfs; + fop_setxattr_t setxattr; + fop_getxattr_t getxattr; + fop_fgetxattr_t fgetxattr; + fop_fsetxattr_t fsetxattr; + fop_removexattr_t removexattr; + fop_fremovexattr_t fremovexattr; + fop_lk_t lk; + fop_inodelk_t inodelk; + fop_finodelk_t finodelk; + fop_entrylk_t entrylk; + fop_fentrylk_t fentrylk; + fop_readdir_t readdir; + fop_readdirp_t readdirp; + fop_rchecksum_t rchecksum; + fop_xattrop_t xattrop; + fop_fxattrop_t fxattrop; + fop_setattr_t setattr; + fop_fsetattr_t fsetattr; + fop_fallocate_t fallocate; + fop_discard_t discard; + fop_zerofill_t zerofill; + fop_ipc_t ipc; + fop_seek_t seek; + fop_lease_t lease; + fop_getactivelk_t getactivelk; + fop_setactivelk_t setactivelk; + fop_put_t put; + fop_icreate_t icreate; + fop_namelink_t namelink; + } fn; + + union { + fop_lookup_cbk_t lookup; + fop_stat_cbk_t stat; + fop_fstat_cbk_t fstat; + fop_truncate_cbk_t truncate; + fop_ftruncate_cbk_t ftruncate; + fop_access_cbk_t access; + fop_readlink_cbk_t readlink; + fop_mknod_cbk_t mknod; + fop_mkdir_cbk_t mkdir; + fop_unlink_cbk_t unlink; + fop_rmdir_cbk_t rmdir; + fop_symlink_cbk_t symlink; + fop_rename_cbk_t rename; + fop_link_cbk_t link; + fop_create_cbk_t create; + fop_open_cbk_t open; + fop_readv_cbk_t readv; + fop_writev_cbk_t writev; + fop_flush_cbk_t flush; + fop_fsync_cbk_t fsync; + fop_opendir_cbk_t opendir; + fop_fsyncdir_cbk_t fsyncdir; + fop_statfs_cbk_t statfs; + fop_setxattr_cbk_t setxattr; + fop_getxattr_cbk_t getxattr; + fop_fgetxattr_cbk_t fgetxattr; + fop_fsetxattr_cbk_t fsetxattr; + fop_removexattr_cbk_t removexattr; + fop_fremovexattr_cbk_t fremovexattr; + fop_lk_cbk_t lk; + fop_inodelk_cbk_t inodelk; + fop_finodelk_cbk_t finodelk; + fop_entrylk_cbk_t entrylk; + fop_fentrylk_cbk_t fentrylk; + fop_readdir_cbk_t readdir; + fop_readdirp_cbk_t readdirp; + fop_rchecksum_cbk_t rchecksum; + fop_xattrop_cbk_t xattrop; + fop_fxattrop_cbk_t fxattrop; + fop_setattr_cbk_t setattr; + fop_fsetattr_cbk_t fsetattr; + fop_fallocate_cbk_t fallocate; + fop_discard_cbk_t discard; + fop_zerofill_cbk_t zerofill; + fop_ipc_cbk_t ipc; + fop_seek_cbk_t seek; + fop_lease_cbk_t lease; + fop_getactivelk_cbk_t getactivelk; + fop_setactivelk_cbk_t setactivelk; + fop_put_cbk_t put; + fop_icreate_cbk_t icreate; + fop_namelink_cbk_t namelink; + } fn_cbk; + + default_args_t args; + default_args_cbk_t args_cbk; } call_stub_t; - call_stub_t * -fop_lookup_stub (call_frame_t *frame, - fop_lookup_t fn, - loc_t *loc, - dict_t *xdata); +fop_lookup_stub(call_frame_t *frame, fop_lookup_t fn, loc_t *loc, + dict_t *xdata); call_stub_t * -fop_lookup_cbk_stub (call_frame_t *frame, - fop_lookup_cbk_t fn, - int32_t op_ret, - int32_t op_errno, - inode_t *inode, - struct iatt *buf, - dict_t *xdata, - struct iatt *postparent); +fop_lookup_cbk_stub(call_frame_t *frame, fop_lookup_cbk_t fn, int32_t op_ret, + int32_t op_errno, inode_t *inode, struct iatt *buf, + dict_t *xdata, struct iatt *postparent); +call_stub_t * +fop_stat_stub(call_frame_t *frame, fop_stat_t fn, loc_t *loc, dict_t *xdata); call_stub_t * -fop_stat_stub (call_frame_t *frame, - fop_stat_t fn, - loc_t *loc, dict_t *xdata); +fop_stat_cbk_stub(call_frame_t *frame, fop_stat_cbk_t fn, int32_t op_ret, + int32_t op_errno, struct iatt *buf, dict_t *xdata); call_stub_t * -fop_stat_cbk_stub (call_frame_t *frame, - fop_stat_cbk_t fn, - int32_t op_ret, - int32_t op_errno, - struct iatt *buf, dict_t *xdata); +fop_fstat_stub(call_frame_t *frame, fop_fstat_t fn, fd_t *fd, dict_t *xdata); call_stub_t * -fop_fstat_stub (call_frame_t *frame, - fop_fstat_t fn, - fd_t *fd, dict_t *xdata); +fop_fstat_cbk_stub(call_frame_t *frame, fop_fstat_cbk_t fn, int32_t op_ret, + int32_t op_errno, struct iatt *buf, dict_t *xdata); + +call_stub_t * +fop_truncate_stub(call_frame_t *frame, fop_truncate_t fn, loc_t *loc, off_t off, + dict_t *xdata); + call_stub_t * -fop_fstat_cbk_stub (call_frame_t *frame, - fop_fstat_cbk_t fn, - int32_t op_ret, - int32_t op_errno, - struct iatt *buf, dict_t *xdata); +fop_truncate_cbk_stub(call_frame_t *frame, fop_truncate_cbk_t fn, + int32_t op_ret, int32_t op_errno, struct iatt *prebuf, + struct iatt *postbuf, dict_t *xdata); call_stub_t * -fop_truncate_stub (call_frame_t *frame, - fop_truncate_t fn, - loc_t *loc, - off_t off, dict_t *xdata); +fop_ftruncate_stub(call_frame_t *frame, fop_ftruncate_t fn, fd_t *fd, off_t off, + dict_t *xdata); call_stub_t * -fop_truncate_cbk_stub (call_frame_t *frame, - fop_truncate_cbk_t fn, - int32_t op_ret, - int32_t op_errno, - struct iatt *prebuf, +fop_ftruncate_cbk_stub(call_frame_t *frame, fop_ftruncate_cbk_t fn, + int32_t op_ret, int32_t op_errno, struct iatt *prebuf, struct iatt *postbuf, dict_t *xdata); call_stub_t * -fop_ftruncate_stub (call_frame_t *frame, - fop_ftruncate_t fn, - fd_t *fd, - off_t off, dict_t *xdata); +fop_access_stub(call_frame_t *frame, fop_access_t fn, loc_t *loc, int32_t mask, + dict_t *xdata); call_stub_t * -fop_ftruncate_cbk_stub (call_frame_t *frame, - fop_ftruncate_cbk_t fn, - int32_t op_ret, - int32_t op_errno, - struct iatt *prebuf, - struct iatt *postbuf, dict_t *xdata); +fop_access_cbk_stub(call_frame_t *frame, fop_access_cbk_t fn, int32_t op_ret, + int32_t op_errno, dict_t *xdata); call_stub_t * -fop_access_stub (call_frame_t *frame, - fop_access_t fn, - loc_t *loc, - int32_t mask, dict_t *xdata); +fop_readlink_stub(call_frame_t *frame, fop_readlink_t fn, loc_t *loc, + size_t size, dict_t *xdata); call_stub_t * -fop_access_cbk_stub (call_frame_t *frame, - fop_access_cbk_t fn, - int32_t op_ret, - int32_t op_errno, dict_t *xdata); +fop_readlink_cbk_stub(call_frame_t *frame, fop_readlink_cbk_t fn, + int32_t op_ret, int32_t op_errno, const char *path, + struct iatt *buf, dict_t *xdata); call_stub_t * -fop_readlink_stub (call_frame_t *frame, - fop_readlink_t fn, - loc_t *loc, - size_t size, dict_t *xdata); +fop_mknod_stub(call_frame_t *frame, fop_mknod_t fn, loc_t *loc, mode_t mode, + dev_t rdev, mode_t umask, dict_t *xdata); call_stub_t * -fop_readlink_cbk_stub (call_frame_t *frame, - fop_readlink_cbk_t fn, - int32_t op_ret, - int32_t op_errno, - const char *path, - struct iatt *buf, dict_t *xdata); +fop_mknod_cbk_stub(call_frame_t *frame, fop_mknod_cbk_t fn, int32_t op_ret, + int32_t op_errno, inode_t *inode, struct iatt *buf, + struct iatt *preparent, struct iatt *postparent, + dict_t *xdata); call_stub_t * -fop_mknod_stub (call_frame_t *frame, fop_mknod_t fn, loc_t *loc, mode_t mode, - dev_t rdev, mode_t umask, dict_t *xdata); +fop_mkdir_stub(call_frame_t *frame, fop_mkdir_t fn, loc_t *loc, mode_t mode, + mode_t umask, dict_t *xdata); call_stub_t * -fop_mknod_cbk_stub (call_frame_t *frame, - fop_mknod_cbk_t fn, - int32_t op_ret, - int32_t op_errno, - inode_t *inode, - struct iatt *buf, - struct iatt *preparent, - struct iatt *postparent, dict_t *xdata); +fop_mkdir_cbk_stub(call_frame_t *frame, fop_mkdir_cbk_t fn, int32_t op_ret, + int32_t op_errno, inode_t *inode, struct iatt *buf, + struct iatt *preparent, struct iatt *postparent, + dict_t *xdata); call_stub_t * -fop_mkdir_stub (call_frame_t *frame, fop_mkdir_t fn, loc_t *loc, mode_t mode, - mode_t umask, dict_t *xdata); +fop_unlink_stub(call_frame_t *frame, fop_unlink_t fn, loc_t *loc, int xflag, + dict_t *xdata); call_stub_t * -fop_mkdir_cbk_stub (call_frame_t *frame, - fop_mkdir_cbk_t fn, - int32_t op_ret, - int32_t op_errno, - inode_t *inode, - struct iatt *buf, - struct iatt *preparent, +fop_unlink_cbk_stub(call_frame_t *frame, fop_unlink_cbk_t fn, int32_t op_ret, + int32_t op_errno, struct iatt *preparent, struct iatt *postparent, dict_t *xdata); call_stub_t * -fop_unlink_stub (call_frame_t *frame, fop_unlink_t fn, - loc_t *loc, int xflag, dict_t *xdata); +fop_rmdir_stub(call_frame_t *frame, fop_rmdir_t fn, loc_t *loc, int flags, + dict_t *xdata); call_stub_t * -fop_unlink_cbk_stub (call_frame_t *frame, - fop_unlink_cbk_t fn, - int32_t op_ret, - int32_t op_errno, - struct iatt *preparent, - struct iatt *postparent, dict_t *xdata); +fop_rmdir_cbk_stub(call_frame_t *frame, fop_rmdir_cbk_t fn, int32_t op_ret, + int32_t op_errno, struct iatt *preparent, + struct iatt *postparent, dict_t *xdata); call_stub_t * -fop_rmdir_stub (call_frame_t *frame, fop_rmdir_t fn, - loc_t *loc, int flags, dict_t *xdata); +fop_symlink_stub(call_frame_t *frame, fop_symlink_t fn, const char *linkname, + loc_t *loc, mode_t umask, dict_t *xdata); call_stub_t * -fop_rmdir_cbk_stub (call_frame_t *frame, - fop_rmdir_cbk_t fn, - int32_t op_ret, - int32_t op_errno, - struct iatt *preparent, - struct iatt *postparent, dict_t *xdata); +fop_symlink_cbk_stub(call_frame_t *frame, fop_symlink_cbk_t fn, int32_t op_ret, + int32_t op_errno, inode_t *inode, struct iatt *buf, + struct iatt *preparent, struct iatt *postparent, + dict_t *xdata); call_stub_t * -fop_symlink_stub (call_frame_t *frame, fop_symlink_t fn, - const char *linkname, loc_t *loc, mode_t umask, dict_t *xdata); +fop_rename_stub(call_frame_t *frame, fop_rename_t fn, loc_t *oldloc, + loc_t *newloc, dict_t *xdata); call_stub_t * -fop_symlink_cbk_stub (call_frame_t *frame, - fop_symlink_cbk_t fn, - int32_t op_ret, - int32_t op_errno, - inode_t *inode, - struct iatt *buf, - struct iatt *preparent, - struct iatt *postparent, dict_t *xdata); +fop_rename_cbk_stub(call_frame_t *frame, fop_rename_cbk_t fn, int32_t op_ret, + int32_t op_errno, struct iatt *buf, + struct iatt *preoldparent, struct iatt *postoldparent, + struct iatt *prenewparent, struct iatt *postnewparent, + dict_t *xdata); call_stub_t * -fop_rename_stub (call_frame_t *frame, - fop_rename_t fn, - loc_t *oldloc, - loc_t *newloc, dict_t *xdata); +fop_link_stub(call_frame_t *frame, fop_link_t fn, loc_t *oldloc, loc_t *newloc, + dict_t *xdata); call_stub_t * -fop_rename_cbk_stub (call_frame_t *frame, - fop_rename_cbk_t fn, - int32_t op_ret, - int32_t op_errno, - struct iatt *buf, - struct iatt *preoldparent, - struct iatt *postoldparent, - struct iatt *prenewparent, - struct iatt *postnewparent, dict_t *xdata); +fop_link_cbk_stub(call_frame_t *frame, fop_link_cbk_t fn, int32_t op_ret, + int32_t op_errno, inode_t *inode, struct iatt *buf, + struct iatt *preparent, struct iatt *postparent, + dict_t *xdata); call_stub_t * -fop_link_stub (call_frame_t *frame, - fop_link_t fn, - loc_t *oldloc, - loc_t *newloc, dict_t *xdata); +fop_create_stub(call_frame_t *frame, fop_create_t fn, loc_t *loc, int32_t flags, + mode_t mode, mode_t umask, fd_t *fd, dict_t *xdata); call_stub_t * -fop_link_cbk_stub (call_frame_t *frame, - fop_link_cbk_t fn, - int32_t op_ret, - int32_t op_errno, - inode_t *inode, - struct iatt *buf, - struct iatt *preparent, - struct iatt *postparent, dict_t *xdata); +fop_create_cbk_stub(call_frame_t *frame, fop_create_cbk_t fn, int32_t op_ret, + int32_t op_errno, fd_t *fd, inode_t *inode, + struct iatt *buf, struct iatt *preparent, + struct iatt *postparent, dict_t *xdata); call_stub_t * -fop_create_stub (call_frame_t *frame, fop_create_t fn, - loc_t *loc, int32_t flags, mode_t mode, - mode_t umask, fd_t *fd, dict_t *xdata); +fop_open_stub(call_frame_t *frame, fop_open_t fn, loc_t *loc, int32_t flags, + fd_t *fd, dict_t *xdata); call_stub_t * -fop_create_cbk_stub (call_frame_t *frame, - fop_create_cbk_t fn, - int32_t op_ret, - int32_t op_errno, - fd_t *fd, - inode_t *inode, - struct iatt *buf, - struct iatt *preparent, - struct iatt *postparent, dict_t *xdata); +fop_open_cbk_stub(call_frame_t *frame, fop_open_cbk_t fn, int32_t op_ret, + int32_t op_errno, fd_t *fd, dict_t *xdata); call_stub_t * -fop_open_stub (call_frame_t *frame, - fop_open_t fn, - loc_t *loc, - int32_t flags, - fd_t *fd, - dict_t *xdata); +fop_readv_stub(call_frame_t *frame, fop_readv_t fn, fd_t *fd, size_t size, + off_t off, uint32_t flags, dict_t *xdata); call_stub_t * -fop_open_cbk_stub (call_frame_t *frame, - fop_open_cbk_t fn, - int32_t op_ret, - int32_t op_errno, - fd_t *fd, dict_t *xdata); +fop_readv_cbk_stub(call_frame_t *frame, fop_readv_cbk_t fn, int32_t op_ret, + int32_t op_errno, struct iovec *vector, int32_t count, + struct iatt *stbuf, struct iobref *iobref, dict_t *xdata); call_stub_t * -fop_readv_stub (call_frame_t *frame, - fop_readv_t fn, - fd_t *fd, - size_t size, - off_t off, uint32_t flags, dict_t *xdata); +fop_writev_stub(call_frame_t *frame, fop_writev_t fn, fd_t *fd, + struct iovec *vector, int32_t count, off_t off, uint32_t flags, + struct iobref *iobref, dict_t *xdata); call_stub_t * -fop_readv_cbk_stub (call_frame_t *frame, - fop_readv_cbk_t fn, - int32_t op_ret, - int32_t op_errno, - struct iovec *vector, - int32_t count, - struct iatt *stbuf, - struct iobref *iobref, dict_t *xdata); +fop_writev_cbk_stub(call_frame_t *frame, fop_writev_cbk_t fn, int32_t op_ret, + int32_t op_errno, struct iatt *prebuf, struct iatt *postbuf, + dict_t *xdata); call_stub_t * -fop_writev_stub (call_frame_t *frame, - fop_writev_t fn, - fd_t *fd, - struct iovec *vector, - int32_t count, - off_t off, uint32_t flags, - struct iobref *iobref, dict_t *xdata); +fop_flush_stub(call_frame_t *frame, fop_flush_t fn, fd_t *fd, dict_t *xdata); call_stub_t * -fop_writev_cbk_stub (call_frame_t *frame, - fop_writev_cbk_t fn, - int32_t op_ret, - int32_t op_errno, - struct iatt *prebuf, - struct iatt *postbuf, dict_t *xdata); +fop_flush_cbk_stub(call_frame_t *frame, fop_flush_cbk_t fn, int32_t op_ret, + int32_t op_errno, dict_t *xdata); call_stub_t * -fop_flush_stub (call_frame_t *frame, - fop_flush_t fn, - fd_t *fd, dict_t *xdata); +fop_fsync_stub(call_frame_t *frame, fop_fsync_t fn, fd_t *fd, int32_t datasync, + dict_t *xdata); call_stub_t * -fop_flush_cbk_stub (call_frame_t *frame, - fop_flush_cbk_t fn, - int32_t op_ret, - int32_t op_errno, dict_t *xdata); +fop_fsync_cbk_stub(call_frame_t *frame, fop_fsync_cbk_t fn, int32_t op_ret, + int32_t op_errno, struct iatt *prebuf, struct iatt *postbuf, + dict_t *xdata); call_stub_t * -fop_fsync_stub (call_frame_t *frame, - fop_fsync_t fn, - fd_t *fd, - int32_t datasync, dict_t *xdata); +fop_opendir_stub(call_frame_t *frame, fop_opendir_t fn, loc_t *loc, fd_t *fd, + dict_t *xdata); call_stub_t * -fop_fsync_cbk_stub (call_frame_t *frame, - fop_fsync_cbk_t fn, - int32_t op_ret, - int32_t op_errno, - struct iatt *prebuf, - struct iatt *postbuf, dict_t *xdata); +fop_opendir_cbk_stub(call_frame_t *frame, fop_opendir_cbk_t fn, int32_t op_ret, + int32_t op_errno, fd_t *fd, dict_t *xdata); call_stub_t * -fop_opendir_stub (call_frame_t *frame, - fop_opendir_t fn, - loc_t *loc, fd_t *fd, dict_t *xdata); +fop_fsyncdir_stub(call_frame_t *frame, fop_fsyncdir_t fn, fd_t *fd, + int32_t datasync, dict_t *xdata); call_stub_t * -fop_opendir_cbk_stub (call_frame_t *frame, - fop_opendir_cbk_t fn, - int32_t op_ret, - int32_t op_errno, - fd_t *fd, dict_t *xdata); +fop_fsyncdir_cbk_stub(call_frame_t *frame, fop_fsyncdir_cbk_t fn, + int32_t op_ret, int32_t op_errno, dict_t *xdata); call_stub_t * -fop_fsyncdir_stub (call_frame_t *frame, - fop_fsyncdir_t fn, - fd_t *fd, - int32_t datasync, dict_t *xdata); +fop_statfs_stub(call_frame_t *frame, fop_statfs_t fn, loc_t *loc, + dict_t *xdata); call_stub_t * -fop_fsyncdir_cbk_stub (call_frame_t *frame, - fop_fsyncdir_cbk_t fn, - int32_t op_ret, - int32_t op_errno, dict_t *xdata); +fop_statfs_cbk_stub(call_frame_t *frame, fop_statfs_cbk_t fn, int32_t op_ret, + int32_t op_errno, struct statvfs *buf, dict_t *xdata); call_stub_t * -fop_statfs_stub (call_frame_t *frame, - fop_statfs_t fn, - loc_t *loc, dict_t *xdata); +fop_setxattr_stub(call_frame_t *frame, fop_setxattr_t fn, loc_t *loc, + dict_t *dict, int32_t flags, dict_t *xdata); call_stub_t * -fop_statfs_cbk_stub (call_frame_t *frame, - fop_statfs_cbk_t fn, - int32_t op_ret, - int32_t op_errno, - struct statvfs *buf, dict_t *xdata); +fop_setxattr_cbk_stub(call_frame_t *frame, fop_setxattr_cbk_t fn, + int32_t op_ret, int32_t op_errno, dict_t *xdata); call_stub_t * -fop_setxattr_stub (call_frame_t *frame, - fop_setxattr_t fn, - loc_t *loc, - dict_t *dict, - int32_t flags, dict_t *xdata); +fop_getxattr_stub(call_frame_t *frame, fop_getxattr_t fn, loc_t *loc, + const char *name, dict_t *xdata); call_stub_t * -fop_setxattr_cbk_stub (call_frame_t *frame, - fop_setxattr_cbk_t fn, - int32_t op_ret, - int32_t op_errno, dict_t *xdata); +fop_getxattr_cbk_stub(call_frame_t *frame, fop_getxattr_cbk_t fn, + int32_t op_ret, int32_t op_errno, dict_t *value, + dict_t *xdata); call_stub_t * -fop_getxattr_stub (call_frame_t *frame, - fop_getxattr_t fn, - loc_t *loc, - const char *name, dict_t *xdata); +fop_fsetxattr_stub(call_frame_t *frame, fop_fsetxattr_t fn, fd_t *fd, + dict_t *dict, int32_t flags, dict_t *xdata); call_stub_t * -fop_getxattr_cbk_stub (call_frame_t *frame, - fop_getxattr_cbk_t fn, - int32_t op_ret, - int32_t op_errno, - dict_t *value, dict_t *xdata); +fop_fsetxattr_cbk_stub(call_frame_t *frame, fop_fsetxattr_cbk_t fn, + int32_t op_ret, int32_t op_errno, dict_t *xdata); call_stub_t * -fop_fsetxattr_stub (call_frame_t *frame, - fop_fsetxattr_t fn, - fd_t *fd, - dict_t *dict, - int32_t flags, dict_t *xdata); +fop_fgetxattr_stub(call_frame_t *frame, fop_fgetxattr_t fn, fd_t *fd, + const char *name, dict_t *xdata); call_stub_t * -fop_fsetxattr_cbk_stub (call_frame_t *frame, - fop_fsetxattr_cbk_t fn, - int32_t op_ret, - int32_t op_errno, dict_t *xdata); +fop_fgetxattr_cbk_stub(call_frame_t *frame, fop_fgetxattr_cbk_t fn, + int32_t op_ret, int32_t op_errno, dict_t *value, + dict_t *xdata); call_stub_t * -fop_fgetxattr_stub (call_frame_t *frame, - fop_fgetxattr_t fn, - fd_t *fd, - const char *name, dict_t *xdata); +fop_removexattr_stub(call_frame_t *frame, fop_removexattr_t fn, loc_t *loc, + const char *name, dict_t *xdata); call_stub_t * -fop_fgetxattr_cbk_stub (call_frame_t *frame, - fop_fgetxattr_cbk_t fn, - int32_t op_ret, - int32_t op_errno, - dict_t *value, dict_t *xdata); +fop_removexattr_cbk_stub(call_frame_t *frame, fop_removexattr_cbk_t fn, + int32_t op_ret, int32_t op_errno, dict_t *xdata); call_stub_t * -fop_removexattr_stub (call_frame_t *frame, - fop_removexattr_t fn, - loc_t *loc, - const char *name, dict_t *xdata); +fop_fremovexattr_stub(call_frame_t *frame, fop_fremovexattr_t fn, fd_t *fd, + const char *name, dict_t *xdata); call_stub_t * -fop_removexattr_cbk_stub (call_frame_t *frame, - fop_removexattr_cbk_t fn, - int32_t op_ret, - int32_t op_errno, dict_t *xdata); - +fop_fremovexattr_cbk_stub(call_frame_t *frame, fop_fremovexattr_cbk_t fn, + int32_t op_ret, int32_t op_errno, dict_t *xdata); call_stub_t * -fop_fremovexattr_stub (call_frame_t *frame, - fop_fremovexattr_t fn, - fd_t *fd, - const char *name, dict_t *xdata); +fop_lk_stub(call_frame_t *frame, fop_lk_t fn, fd_t *fd, int32_t cmd, + struct gf_flock *lock, dict_t *xdata); call_stub_t * -fop_fremovexattr_cbk_stub (call_frame_t *frame, - fop_fremovexattr_cbk_t fn, - int32_t op_ret, - int32_t op_errno, dict_t *xdata); +fop_lk_cbk_stub(call_frame_t *frame, fop_lk_cbk_t fn, int32_t op_ret, + int32_t op_errno, struct gf_flock *lock, dict_t *xdata); call_stub_t * -fop_lk_stub (call_frame_t *frame, - fop_lk_t fn, - fd_t *fd, - int32_t cmd, - struct gf_flock *lock, dict_t *xdata); +fop_inodelk_stub(call_frame_t *frame, fop_inodelk_t fn, const char *volume, + loc_t *loc, int32_t cmd, struct gf_flock *lock, dict_t *xdata); call_stub_t * -fop_lk_cbk_stub (call_frame_t *frame, - fop_lk_cbk_t fn, - int32_t op_ret, - int32_t op_errno, - struct gf_flock *lock, dict_t *xdata); +fop_finodelk_stub(call_frame_t *frame, fop_finodelk_t fn, const char *volume, + fd_t *fd, int32_t cmd, struct gf_flock *lock, dict_t *xdata); call_stub_t * -fop_inodelk_stub (call_frame_t *frame, fop_inodelk_t fn, - const char *volume, loc_t *loc, int32_t cmd, - struct gf_flock *lock, dict_t *xdata); +fop_entrylk_stub(call_frame_t *frame, fop_entrylk_t fn, const char *volume, + loc_t *loc, const char *basename, entrylk_cmd cmd, + entrylk_type type, dict_t *xdata); call_stub_t * -fop_finodelk_stub (call_frame_t *frame, fop_finodelk_t fn, - const char *volume, fd_t *fd, int32_t cmd, - struct gf_flock *lock, dict_t *xdata); +fop_fentrylk_stub(call_frame_t *frame, fop_fentrylk_t fn, const char *volume, + fd_t *fd, const char *basename, entrylk_cmd cmd, + entrylk_type type, dict_t *xdata); call_stub_t * -fop_entrylk_stub (call_frame_t *frame, fop_entrylk_t fn, - const char *volume, loc_t *loc, const char *basename, - entrylk_cmd cmd, entrylk_type type, dict_t *xdata); +fop_inodelk_cbk_stub(call_frame_t *frame, fop_inodelk_cbk_t fn, int32_t op_ret, + int32_t op_errno, dict_t *xdata); call_stub_t * -fop_fentrylk_stub (call_frame_t *frame, fop_fentrylk_t fn, - const char *volume, fd_t *fd, const char *basename, - entrylk_cmd cmd, entrylk_type type, dict_t *xdata); +fop_finodelk_cbk_stub(call_frame_t *frame, fop_inodelk_cbk_t fn, int32_t op_ret, + int32_t op_errno, dict_t *xdata); call_stub_t * -fop_inodelk_cbk_stub (call_frame_t *frame, fop_inodelk_cbk_t fn, - int32_t op_ret, int32_t op_errno, dict_t *xdata); +fop_entrylk_cbk_stub(call_frame_t *frame, fop_entrylk_cbk_t fn, int32_t op_ret, + int32_t op_errno, dict_t *xdata); call_stub_t * -fop_finodelk_cbk_stub (call_frame_t *frame, fop_inodelk_cbk_t fn, - int32_t op_ret, int32_t op_errno, dict_t *xdata); +fop_fentrylk_cbk_stub(call_frame_t *frame, fop_entrylk_cbk_t fn, int32_t op_ret, + int32_t op_errno, dict_t *xdata); call_stub_t * -fop_entrylk_cbk_stub (call_frame_t *frame, fop_entrylk_cbk_t fn, - int32_t op_ret, int32_t op_errno, dict_t *xdata); +fop_readdir_stub(call_frame_t *frame, fop_readdir_t fn, fd_t *fd, size_t size, + off_t off, dict_t *xdata); call_stub_t * -fop_fentrylk_cbk_stub (call_frame_t *frame, fop_entrylk_cbk_t fn, - int32_t op_ret, int32_t op_errno, dict_t *xdata); +fop_readdirp_stub(call_frame_t *frame, fop_readdirp_t fn, fd_t *fd, size_t size, + off_t off, dict_t *xdata); call_stub_t * -fop_readdir_stub (call_frame_t *frame, - fop_readdir_t fn, - fd_t *fd, - size_t size, - off_t off, dict_t *xdata); +fop_readdirp_cbk_stub(call_frame_t *frame, fop_readdir_cbk_t fn, int32_t op_ret, + int32_t op_errno, gf_dirent_t *entries, dict_t *xdata); call_stub_t * -fop_readdirp_stub (call_frame_t *frame, - fop_readdirp_t fn, - fd_t *fd, - size_t size, - off_t off, - dict_t *xdata); +fop_readdir_cbk_stub(call_frame_t *frame, fop_readdir_cbk_t fn, int32_t op_ret, + int32_t op_errno, gf_dirent_t *entries, dict_t *xdata); call_stub_t * -fop_readdirp_cbk_stub (call_frame_t *frame, - fop_readdir_cbk_t fn, - int32_t op_ret, - int32_t op_errno, - gf_dirent_t *entries, dict_t *xdata); +fop_rchecksum_stub(call_frame_t *frame, fop_rchecksum_t fn, fd_t *fd, + off_t offset, int32_t len, dict_t *xdata); call_stub_t * -fop_readdir_cbk_stub (call_frame_t *frame, - fop_readdir_cbk_t fn, - int32_t op_ret, - int32_t op_errno, - gf_dirent_t *entries, dict_t *xdata); +fop_rchecksum_cbk_stub(call_frame_t *frame, fop_rchecksum_cbk_t fn, + int32_t op_ret, int32_t op_errno, uint32_t weak_checksum, + uint8_t *strong_checksum, dict_t *xdata); call_stub_t * -fop_rchecksum_stub (call_frame_t *frame, - fop_rchecksum_t fn, - fd_t *fd, off_t offset, - int32_t len, dict_t *xdata); +fop_xattrop_stub(call_frame_t *frame, fop_xattrop_t fn, loc_t *loc, + gf_xattrop_flags_t optype, dict_t *xattr, dict_t *xdata); call_stub_t * -fop_rchecksum_cbk_stub (call_frame_t *frame, - fop_rchecksum_cbk_t fn, - int32_t op_ret, - int32_t op_errno, - uint32_t weak_checksum, - uint8_t *strong_checksum, dict_t *xdata); +fop_xattrop_stub_cbk_stub(call_frame_t *frame, fop_xattrop_cbk_t fn, + int32_t op_ret, int32_t op_errno, dict_t *xdata); call_stub_t * -fop_xattrop_stub (call_frame_t *frame, - fop_xattrop_t fn, - loc_t *loc, - gf_xattrop_flags_t optype, - dict_t *xattr, dict_t *xdata); +fop_fxattrop_stub(call_frame_t *frame, fop_fxattrop_t fn, fd_t *fd, + gf_xattrop_flags_t optype, dict_t *xattr, dict_t *xdata); call_stub_t * -fop_xattrop_stub_cbk_stub (call_frame_t *frame, - fop_xattrop_cbk_t fn, - int32_t op_ret, - int32_t op_errno, dict_t *xdata); +fop_fxattrop_stub_cbk_stub(call_frame_t *frame, fop_xattrop_cbk_t fn, + int32_t op_ret, int32_t op_errno, dict_t *xdata); call_stub_t * -fop_fxattrop_stub (call_frame_t *frame, - fop_fxattrop_t fn, - fd_t *fd, - gf_xattrop_flags_t optype, - dict_t *xattr, dict_t *xdata); +fop_setattr_stub(call_frame_t *frame, fop_setattr_t fn, loc_t *loc, + struct iatt *stbuf, int32_t valid, dict_t *xdata); call_stub_t * -fop_fxattrop_stub_cbk_stub (call_frame_t *frame, - fop_xattrop_cbk_t fn, - int32_t op_ret, - int32_t op_errno, dict_t *xdata); +fop_setattr_cbk_stub(call_frame_t *frame, fop_setattr_cbk_t fn, int32_t op_ret, + int32_t op_errno, struct iatt *statpre, + struct iatt *statpost, dict_t *xdata); call_stub_t * -fop_setattr_stub (call_frame_t *frame, - fop_setattr_t fn, - loc_t *loc, - struct iatt *stbuf, - int32_t valid, dict_t *xdata); +fop_fsetattr_stub(call_frame_t *frame, fop_fsetattr_t fn, fd_t *fd, + struct iatt *stbuf, int32_t valid, dict_t *xdata); call_stub_t * -fop_setattr_cbk_stub (call_frame_t *frame, - fop_setattr_cbk_t fn, - int32_t op_ret, - int32_t op_errno, - struct iatt *statpre, +fop_fsetattr_cbk_stub(call_frame_t *frame, fop_setattr_cbk_t fn, int32_t op_ret, + int32_t op_errno, struct iatt *statpre, struct iatt *statpost, dict_t *xdata); call_stub_t * -fop_fsetattr_stub (call_frame_t *frame, - fop_fsetattr_t fn, - fd_t *fd, - struct iatt *stbuf, - int32_t valid, dict_t *xdata); +fop_fallocate_stub(call_frame_t *frame, fop_fallocate_t fn, fd_t *fd, + int32_t mode, off_t offset, size_t len, dict_t *xdata); call_stub_t * -fop_fsetattr_cbk_stub (call_frame_t *frame, - fop_setattr_cbk_t fn, - int32_t op_ret, - int32_t op_errno, - struct iatt *statpre, +fop_fallocate_cbk_stub(call_frame_t *frame, fop_fallocate_cbk_t fn, + int32_t op_ret, int32_t op_errno, struct iatt *statpre, struct iatt *statpost, dict_t *xdata); call_stub_t * -fop_fallocate_stub(call_frame_t *frame, - fop_fallocate_t fn, - fd_t *fd, - int32_t mode, off_t offset, - size_t len, dict_t *xdata); +fop_discard_stub(call_frame_t *frame, fop_discard_t fn, fd_t *fd, off_t offset, + size_t len, dict_t *xdata); call_stub_t * -fop_fallocate_cbk_stub(call_frame_t *frame, - fop_fallocate_cbk_t fn, - int32_t op_ret, int32_t op_errno, - struct iatt *statpre, struct iatt *statpost, - dict_t *xdata); +fop_discard_cbk_stub(call_frame_t *frame, fop_discard_cbk_t fn, int32_t op_ret, + int32_t op_errno, struct iatt *statpre, + struct iatt *statpost, dict_t *xdata); call_stub_t * -fop_discard_stub(call_frame_t *frame, - fop_discard_t fn, - fd_t *fd, - off_t offset, - size_t len, dict_t *xdata); +fop_zerofill_stub(call_frame_t *frame, fop_zerofill_t fn, fd_t *fd, + off_t offset, off_t len, dict_t *xdata); call_stub_t * -fop_discard_cbk_stub(call_frame_t *frame, - fop_discard_cbk_t fn, - int32_t op_ret, int32_t op_errno, - struct iatt *statpre, struct iatt *statpost, - dict_t *xdata); +fop_zerofill_cbk_stub(call_frame_t *frame, fop_zerofill_cbk_t fn, + int32_t op_ret, int32_t op_errno, struct iatt *statpre, + struct iatt *statpost, dict_t *xdata); call_stub_t * -fop_zerofill_stub(call_frame_t *frame, - fop_zerofill_t fn, - fd_t *fd, - off_t offset, - off_t len, dict_t *xdata); +fop_ipc_stub(call_frame_t *frame, fop_ipc_t fn, int32_t op, dict_t *xdata); call_stub_t * -fop_zerofill_cbk_stub(call_frame_t *frame, - fop_zerofill_cbk_t fn, - int32_t op_ret, int32_t op_errno, - struct iatt *statpre, struct iatt *statpost, - dict_t *xdata); +fop_ipc_cbk_stub(call_frame_t *frame, fop_ipc_cbk_t fn, int32_t op_ret, + int32_t op_errno, dict_t *xdata); call_stub_t * -fop_ipc_stub (call_frame_t *frame, fop_ipc_t fn, int32_t op, dict_t *xdata); +fop_seek_stub(call_frame_t *frame, fop_seek_t fn, fd_t *fd, off_t offset, + gf_seek_what_t what, dict_t *xdata); call_stub_t * -fop_ipc_cbk_stub (call_frame_t *frame, fop_ipc_cbk_t fn, - int32_t op_ret, int32_t op_errno, dict_t *xdata); +fop_seek_cbk_stub(call_frame_t *frame, fop_seek_cbk_t fn, int32_t op_ret, + int32_t op_errno, off_t offset, dict_t *xdata); call_stub_t * -fop_seek_stub (call_frame_t *frame, fop_seek_t fn, fd_t *fd, off_t offset, - gf_seek_what_t what, dict_t *xdata); +fop_lease_stub(call_frame_t *frame, fop_lease_t fn, loc_t *loc, + struct gf_lease *lease, dict_t *xdata); call_stub_t * -fop_seek_cbk_stub (call_frame_t *frame, fop_seek_cbk_t fn, - int32_t op_ret, int32_t op_errno, off_t offset, - dict_t *xdata); +fop_lease_cbk_stub(call_frame_t *frame, fop_lease_cbk_t fn, int32_t op_ret, + int32_t op_errno, struct gf_lease *lease, dict_t *xdata); call_stub_t * -fop_lease_stub (call_frame_t *frame, fop_lease_t fn, loc_t *loc, - struct gf_lease *lease, dict_t *xdata); +fop_getactivelk_stub(call_frame_t *frame, fop_getactivelk_t fn, loc_t *loc, + dict_t *xdata); call_stub_t * -fop_lease_cbk_stub (call_frame_t *frame, fop_lease_cbk_t fn, - int32_t op_ret, int32_t op_errno, - struct gf_lease *lease, dict_t *xdata); +fop_getactivelk_cbk_stub(call_frame_t *frame, fop_getactivelk_cbk_t fn, + int32_t op_ret, int32_t op_errno, + lock_migration_info_t *lmi, dict_t *xdata); call_stub_t * -fop_getactivelk_stub (call_frame_t *frame, fop_getactivelk_t fn, - loc_t *loc, dict_t *xdata); +fop_setactivelk_stub(call_frame_t *frame, fop_setactivelk_t fn, loc_t *loc, + lock_migration_info_t *locklist, dict_t *xdata); call_stub_t * -fop_getactivelk_cbk_stub (call_frame_t *frame, fop_getactivelk_cbk_t fn, - int32_t op_ret, int32_t op_errno, - lock_migration_info_t *lmi, dict_t *xdata); +fop_setactivelk_cbk_stub(call_frame_t *frame, fop_setactivelk_cbk_t fn, + int32_t op_ret, int32_t op_errno, dict_t *xdata); call_stub_t * -fop_setactivelk_stub (call_frame_t *frame, fop_setactivelk_t fn, - loc_t *loc, lock_migration_info_t *locklist, - dict_t *xdata); +fop_put_stub(call_frame_t *frame, fop_put_t fn, loc_t *loc, mode_t mode, + mode_t umask, uint32_t flags, struct iovec *vector, int32_t count, + off_t offset, struct iobref *iobref, dict_t *xattr, dict_t *xdata); call_stub_t * -fop_setactivelk_cbk_stub (call_frame_t *frame, fop_setactivelk_cbk_t fn, - int32_t op_ret, int32_t op_errno, dict_t *xdata); +fop_put_cbk_stub(call_frame_t *frame, fop_put_cbk_t fn, int32_t op_ret, + int32_t op_errno, inode_t *inode, struct iatt *buf, + struct iatt *preparent, struct iatt *postparent, + dict_t *xdata); call_stub_t * -fop_put_stub (call_frame_t *frame, fop_put_t fn, loc_t *loc, - mode_t mode, mode_t umask, uint32_t flags, - struct iovec *vector, int32_t count, off_t offset, - struct iobref *iobref, dict_t *xattr, dict_t *xdata); +fop_icreate_stub(call_frame_t *frame, fop_icreate_t fn, loc_t *loc, mode_t mode, + dict_t *xdata); call_stub_t * -fop_put_cbk_stub (call_frame_t *frame, fop_put_cbk_t fn, int32_t op_ret, - int32_t op_errno, inode_t *inode, struct iatt *buf, - struct iatt *preparent, struct iatt *postparent, +fop_namelink_stub(call_frame_t *frame, fop_namelink_t fn, loc_t *loc, dict_t *xdata); call_stub_t * -fop_icreate_stub (call_frame_t *frame, fop_icreate_t fn, - loc_t *loc, mode_t mode, dict_t *xdata); - -call_stub_t * -fop_namelink_stub (call_frame_t *frame, - fop_namelink_t fn, loc_t *loc, dict_t *xdata); - -call_stub_t * -fop_icreate_cbk_stub (call_frame_t *frame, - fop_icreate_cbk_t fn, - int32_t op_ret, int32_t op_errno, - inode_t *inode, struct iatt *buf, dict_t *xdata); +fop_icreate_cbk_stub(call_frame_t *frame, fop_icreate_cbk_t fn, int32_t op_ret, + int32_t op_errno, inode_t *inode, struct iatt *buf, + dict_t *xdata); call_stub_t * -fop_namelink_cbk_stub (call_frame_t *frame, - fop_namelink_cbk_t fn, - int32_t op_ret, int32_t op_errno, - struct iatt *prebuf, struct iatt *postbuf, dict_t *xdata); +fop_namelink_cbk_stub(call_frame_t *frame, fop_namelink_cbk_t fn, + int32_t op_ret, int32_t op_errno, struct iatt *prebuf, + struct iatt *postbuf, dict_t *xdata); -void call_resume (call_stub_t *stub); -void call_resume_keep_stub (call_stub_t *stub); -void call_stub_destroy (call_stub_t *stub); -void call_unwind_error (call_stub_t *stub, int op_ret, int op_errno); -void call_unwind_error_keep_stub (call_stub_t *stub, int op_ret, int op_errno); +void +call_resume(call_stub_t *stub); +void +call_resume_keep_stub(call_stub_t *stub); +void +call_stub_destroy(call_stub_t *stub); +void +call_unwind_error(call_stub_t *stub, int op_ret, int op_errno); +void +call_unwind_error_keep_stub(call_stub_t *stub, int op_ret, int op_errno); /* * Sometimes we might want to call just this, perhaps repeatedly, without * having (or being able) to destroy and recreate it. */ -void call_resume_wind (call_stub_t *stub); +void +call_resume_wind(call_stub_t *stub); #endif diff --git a/libglusterfs/src/changelog.h b/libglusterfs/src/changelog.h index 6f86e5a54cd..a09d9f25287 100644 --- a/libglusterfs/src/changelog.h +++ b/libglusterfs/src/changelog.h @@ -16,101 +16,100 @@ struct gf_brick_spec; /** * Max bit shiter for event selection */ -#define CHANGELOG_EV_SELECTION_RANGE 5 - -#define CHANGELOG_OP_TYPE_JOURNAL (1<<0) -#define CHANGELOG_OP_TYPE_OPEN (1<<1) -#define CHANGELOG_OP_TYPE_CREATE (1<<2) -#define CHANGELOG_OP_TYPE_RELEASE (1<<3) -#define CHANGELOG_OP_TYPE_BR_RELEASE (1<<4) /* logical release (last close()), - sent by bitrot stub */ -#define CHANGELOG_OP_TYPE_MAX (1<<CHANGELOG_EV_SELECTION_RANGE) +#define CHANGELOG_EV_SELECTION_RANGE 5 +#define CHANGELOG_OP_TYPE_JOURNAL (1 << 0) +#define CHANGELOG_OP_TYPE_OPEN (1 << 1) +#define CHANGELOG_OP_TYPE_CREATE (1 << 2) +#define CHANGELOG_OP_TYPE_RELEASE (1 << 3) +#define CHANGELOG_OP_TYPE_BR_RELEASE \ + (1 << 4) /* logical release (last close()), \ + sent by bitrot stub */ +#define CHANGELOG_OP_TYPE_MAX (1 << CHANGELOG_EV_SELECTION_RANGE) struct ev_open { - unsigned char gfid[16]; - int32_t flags; + unsigned char gfid[16]; + int32_t flags; }; struct ev_creat { - unsigned char gfid[16]; - int32_t flags; + unsigned char gfid[16]; + int32_t flags; }; struct ev_release { - unsigned char gfid[16]; + unsigned char gfid[16]; }; struct ev_release_br { - unsigned long version; - unsigned char gfid[16]; - int32_t sign_info; + unsigned long version; + unsigned char gfid[16]; + int32_t sign_info; }; struct ev_changelog { - char path[PATH_MAX]; + char path[PATH_MAX]; }; typedef struct changelog_event { - unsigned int ev_type; - - union { - struct ev_open open; - struct ev_creat create; - struct ev_release release; - struct ev_changelog journal; - struct ev_release_br releasebr; - } u; + unsigned int ev_type; + + union { + struct ev_open open; + struct ev_creat create; + struct ev_release release; + struct ev_changelog journal; + struct ev_release_br releasebr; + } u; } changelog_event_t; -#define CHANGELOG_EV_SIZE (sizeof (changelog_event_t)) +#define CHANGELOG_EV_SIZE (sizeof(changelog_event_t)) /** * event callback, connected & disconnection defs */ -typedef void (CALLBACK) (void *, char *, - void *, changelog_event_t *); -typedef void *(INIT) (void *, struct gf_brick_spec *); -typedef void (FINI) (void *, char *, void *); -typedef void (CONNECT) (void *, char *, void *); -typedef void (DISCONNECT) (void *, char *, void *); +typedef void(CALLBACK)(void *, char *, void *, changelog_event_t *); +typedef void *(INIT)(void *, struct gf_brick_spec *); +typedef void(FINI)(void *, char *, void *); +typedef void(CONNECT)(void *, char *, void *); +typedef void(DISCONNECT)(void *, char *, void *); struct gf_brick_spec { - char *brick_path; - unsigned int filter; + char *brick_path; + unsigned int filter; - INIT *init; - FINI *fini; - CALLBACK *callback; - CONNECT *connected; - DISCONNECT *disconnected; + INIT *init; + FINI *fini; + CALLBACK *callback; + CONNECT *connected; + DISCONNECT *disconnected; - void *ptr; + void *ptr; }; /* API set */ int -gf_changelog_register (char *brick_path, char *scratch_dir, - char *log_file, int log_levl, int max_reconnects); +gf_changelog_register(char *brick_path, char *scratch_dir, char *log_file, + int log_levl, int max_reconnects); ssize_t -gf_changelog_scan (); +gf_changelog_scan(); int -gf_changelog_start_fresh (); +gf_changelog_start_fresh(); ssize_t -gf_changelog_next_change (char *bufptr, size_t maxlen); +gf_changelog_next_change(char *bufptr, size_t maxlen); int -gf_changelog_done (char *file); +gf_changelog_done(char *file); /* newer flexible API */ int -gf_changelog_init (void *xl); +gf_changelog_init(void *xl); int -gf_changelog_register_generic (struct gf_brick_spec *bricks, int count, - int ordered, char *logfile, int lvl, void *xl); +gf_changelog_register_generic(struct gf_brick_spec *bricks, int count, + int ordered, char *logfile, int lvl, void *xl); #endif diff --git a/libglusterfs/src/checksum.h b/libglusterfs/src/checksum.h index 677a59aa91e..019bb14df71 100644 --- a/libglusterfs/src/checksum.h +++ b/libglusterfs/src/checksum.h @@ -12,11 +12,11 @@ #define __CHECKSUM_H__ uint32_t -gf_rsync_weak_checksum (unsigned char *buf, size_t len); +gf_rsync_weak_checksum(unsigned char *buf, size_t len); void -gf_rsync_strong_checksum (unsigned char *buf, size_t len, unsigned char *sum); +gf_rsync_strong_checksum(unsigned char *buf, size_t len, unsigned char *sum); void -gf_rsync_md5_checksum (unsigned char *data, size_t len, unsigned char *md5); +gf_rsync_md5_checksum(unsigned char *data, size_t len, unsigned char *md5); #endif /* __CHECKSUM_H__ */ diff --git a/libglusterfs/src/circ-buff.h b/libglusterfs/src/circ-buff.h index e3459f5e3d0..a839cd03c67 100644 --- a/libglusterfs/src/circ-buff.h +++ b/libglusterfs/src/circ-buff.h @@ -18,47 +18,46 @@ #define BUFFER_SIZE 10 #define TOTAL_SIZE BUFFER_SIZE + 1 - struct _circular_buffer { - struct timeval tv; - void *data; + struct timeval tv; + void *data; }; typedef struct _circular_buffer circular_buffer_t; struct _buffer { - unsigned int w_index; - size_t size_buffer; - gf_boolean_t use_once; - /* This variable is assigned the proper value at the time of initing */ - /* the buffer. It indicates, whether the buffer should be used once */ - /* it becomes full. */ - - int used_len; - /* indicates the amount of circular buffer used. */ - - circular_buffer_t **cb; - void (*destroy_buffer_data) (void *data); - pthread_mutex_t lock; + unsigned int w_index; + size_t size_buffer; + gf_boolean_t use_once; + /* This variable is assigned the proper value at the time of initing */ + /* the buffer. It indicates, whether the buffer should be used once */ + /* it becomes full. */ + + int used_len; + /* indicates the amount of circular buffer used. */ + + circular_buffer_t **cb; + void (*destroy_buffer_data)(void *data); + pthread_mutex_t lock; }; typedef struct _buffer buffer_t; int -cb_add_entry_buffer (buffer_t *buffer, void *item); +cb_add_entry_buffer(buffer_t *buffer, void *item); void -cb_buffer_show (buffer_t *buffer); +cb_buffer_show(buffer_t *buffer); buffer_t * -cb_buffer_new (size_t buffer_size,gf_boolean_t use_buffer_once, - void (*destroy_data) (void *data)); +cb_buffer_new(size_t buffer_size, gf_boolean_t use_buffer_once, + void (*destroy_data)(void *data)); void -cb_buffer_destroy (buffer_t *buffer); +cb_buffer_destroy(buffer_t *buffer); void -cb_buffer_dump (buffer_t *buffer, void *data, - int (fn) (circular_buffer_t *buffer, void *data)); +cb_buffer_dump(buffer_t *buffer, void *data, + int(fn)(circular_buffer_t *buffer, void *data)); #endif /* _CB_H */ diff --git a/libglusterfs/src/client_t.h b/libglusterfs/src/client_t.h index 66db3e86499..57241a00d5f 100644 --- a/libglusterfs/src/client_t.h +++ b/libglusterfs/src/client_t.h @@ -12,128 +12,128 @@ #define _CLIENT_T_H #include "glusterfs.h" -#include "locking.h" /* for gf_lock_t, not included by glusterfs.h */ -#include "atomic.h" /* for gf_atomic_t */ +#include "locking.h" /* for gf_lock_t, not included by glusterfs.h */ +#include "atomic.h" /* for gf_atomic_t */ struct client_ctx { - void *ctx_key; - void *ctx_value; + void *ctx_key; + void *ctx_value; }; typedef struct _client { - struct { - /* e.g. protocol/server stashes its ctx here */ - gf_lock_t lock; - unsigned short count; - struct client_ctx *ctx; - } scratch_ctx; - gf_atomic_t bind; - gf_atomic_t count; - xlator_t *bound_xl; - xlator_t *this; - int tbl_index; - char *client_uid; - char *client_name; - struct { - int flavour; - size_t len; - char *data; - char *username; - char *passwd; - } auth; - - /* subdir_mount */ - char *subdir_mount; - inode_t *subdir_inode; - uuid_t subdir_gfid; - int32_t opversion; + struct { + /* e.g. protocol/server stashes its ctx here */ + gf_lock_t lock; + unsigned short count; + struct client_ctx *ctx; + } scratch_ctx; + gf_atomic_t bind; + gf_atomic_t count; + xlator_t *bound_xl; + xlator_t *this; + int tbl_index; + char *client_uid; + char *client_name; + struct { + int flavour; + size_t len; + char *data; + char *username; + char *passwd; + } auth; + + /* subdir_mount */ + char *subdir_mount; + inode_t *subdir_inode; + uuid_t subdir_gfid; + int32_t opversion; } client_t; #define GF_CLIENTCTX_INITIAL_SIZE 8 struct client_table_entry { - client_t *client; - int next_free; + client_t *client; + int next_free; }; typedef struct client_table_entry cliententry_t; struct clienttable { - unsigned int max_clients; - gf_lock_t lock; - cliententry_t *cliententries; - int first_free; - client_t *local; + unsigned int max_clients; + gf_lock_t lock; + cliententry_t *cliententries; + int first_free; + client_t *local; }; typedef struct clienttable clienttable_t; #define GF_CLIENTTABLE_INITIAL_SIZE 128 /* Signifies no more entries in the client table. */ -#define GF_CLIENTTABLE_END -1 +#define GF_CLIENTTABLE_END -1 /* This is used to invalidate * the next_free value in an cliententry that has been allocated */ -#define GF_CLIENTENTRY_ALLOCATED -2 +#define GF_CLIENTENTRY_ALLOCATED -2 struct rpcsvc_auth_data; client_t * -gf_client_get (xlator_t *this, struct rpcsvc_auth_data *cred, - char *client_uid, char *subdir_mount); +gf_client_get(xlator_t *this, struct rpcsvc_auth_data *cred, char *client_uid, + char *subdir_mount); void -gf_client_put (client_t *client, gf_boolean_t *detached); +gf_client_put(client_t *client, gf_boolean_t *detached); clienttable_t * -gf_clienttable_alloc (void); +gf_clienttable_alloc(void); void -gf_client_clienttable_destroy (clienttable_t *clienttable); +gf_client_clienttable_destroy(clienttable_t *clienttable); client_t * -gf_client_ref (client_t *client); +gf_client_ref(client_t *client); void -gf_client_unref (client_t *client); +gf_client_unref(client_t *client); int -gf_client_dump_fdtable_to_dict (xlator_t *this, dict_t *dict); +gf_client_dump_fdtable_to_dict(xlator_t *this, dict_t *dict); int -gf_client_dump_fdtable (xlator_t *this); +gf_client_dump_fdtable(xlator_t *this); int -gf_client_dump_inodes_to_dict (xlator_t *this, dict_t *dict); +gf_client_dump_inodes_to_dict(xlator_t *this, dict_t *dict); int -gf_client_dump_inodes (xlator_t *this); +gf_client_dump_inodes(xlator_t *this); void * -client_ctx_set (client_t *client, void *key, void *value); +client_ctx_set(client_t *client, void *key, void *value); int -client_ctx_get (client_t *client, void *key, void **value); +client_ctx_get(client_t *client, void *key, void **value); int -client_ctx_del (client_t *client, void *key, void **value); +client_ctx_del(client_t *client, void *key, void **value); void -client_ctx_dump (client_t *client, char *prefix); +client_ctx_dump(client_t *client, char *prefix); int -gf_client_dump_fdtables_to_dict (xlator_t *this, dict_t *dict); +gf_client_dump_fdtables_to_dict(xlator_t *this, dict_t *dict); int -gf_client_dump_fdtables (xlator_t *this); +gf_client_dump_fdtables(xlator_t *this); int -gf_client_dump_inodes_to_dict (xlator_t *this, dict_t *dict); +gf_client_dump_inodes_to_dict(xlator_t *this, dict_t *dict); int -gf_client_dump_inodes (xlator_t *this); +gf_client_dump_inodes(xlator_t *this); int -gf_client_disconnect (client_t *client); +gf_client_disconnect(client_t *client); #endif /* _CLIENT_T_H */ diff --git a/libglusterfs/src/cluster-syncop.h b/libglusterfs/src/cluster-syncop.h index 9127dde6dfb..10388db74cc 100644 --- a/libglusterfs/src/cluster-syncop.h +++ b/libglusterfs/src/cluster-syncop.h @@ -8,7 +8,6 @@ cases as published by the Free Software Foundation. */ - #ifndef _CLUSTER_SYNCOP_H #define _CLUSTER_SYNCOP_H @@ -28,200 +27,201 @@ * functionality. * ********************************************************************/ -#define PARALLEL_FOP_ONLIST(subvols, on, numsubvols, replies, frame, \ - func, args ...) \ -do { \ - int __i = 0; \ - int __count = 0; \ - cluster_local_t __local = {0,}; \ - void *__old_local = frame->local; \ - \ - __local.replies = replies; \ - cluster_replies_wipe (replies, numsubvols); \ - for (__i = 0; __i < numsubvols; __i++) \ - INIT_LIST_HEAD (&replies[__i].entries.list); \ - if (syncbarrier_init (&__local.barrier)) \ - break; \ - frame->local = &__local; \ - for (__i = 0; __i < numsubvols; __i++) { \ - if (on[__i]) { \ - __count++; \ - } \ - } \ - __local.barrier.waitfor = __count; \ - for (__i = 0; __i < numsubvols; __i++) { \ - if (on[__i]) { \ - func (frame, subvols[__i], __i, ## args); \ - } \ - } \ - syncbarrier_wait (&__local.barrier, __count); \ - syncbarrier_destroy (&__local.barrier); \ - frame->local = __old_local; \ - STACK_RESET (frame->root); \ -} while (0) +#define PARALLEL_FOP_ONLIST(subvols, on, numsubvols, replies, frame, func, \ + args...) \ + do { \ + int __i = 0; \ + int __count = 0; \ + cluster_local_t __local = { \ + 0, \ + }; \ + void *__old_local = frame->local; \ + \ + __local.replies = replies; \ + cluster_replies_wipe(replies, numsubvols); \ + for (__i = 0; __i < numsubvols; __i++) \ + INIT_LIST_HEAD(&replies[__i].entries.list); \ + if (syncbarrier_init(&__local.barrier)) \ + break; \ + frame->local = &__local; \ + for (__i = 0; __i < numsubvols; __i++) { \ + if (on[__i]) { \ + __count++; \ + } \ + } \ + __local.barrier.waitfor = __count; \ + for (__i = 0; __i < numsubvols; __i++) { \ + if (on[__i]) { \ + func(frame, subvols[__i], __i, ##args); \ + } \ + } \ + syncbarrier_wait(&__local.barrier, __count); \ + syncbarrier_destroy(&__local.barrier); \ + frame->local = __old_local; \ + STACK_RESET(frame->root); \ + } while (0) typedef struct cluster_local_ { - default_args_cbk_t *replies; - syncbarrier_t barrier; + default_args_cbk_t *replies; + syncbarrier_t barrier; } cluster_local_t; int32_t -cluster_lookup (xlator_t **subvols, unsigned char *on, int numsubvols, +cluster_lookup(xlator_t **subvols, unsigned char *on, int numsubvols, + default_args_cbk_t *replies, unsigned char *output, + call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata); +int32_t +cluster_setattr(xlator_t **subvols, unsigned char *on, int numsubvols, default_args_cbk_t *replies, unsigned char *output, - call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata); + call_frame_t *frame, xlator_t *this, loc_t *loc, + struct iatt *stbuf, int32_t valid, dict_t *xdata); int32_t -cluster_setattr (xlator_t **subvols, unsigned char *on, int numsubvols, +cluster_getxattr(xlator_t **subvols, unsigned char *on, int numsubvols, default_args_cbk_t *replies, unsigned char *output, call_frame_t *frame, xlator_t *this, loc_t *loc, - struct iatt *stbuf, int32_t valid, dict_t *xdata); + const char *name, dict_t *xdata); int32_t -cluster_getxattr (xlator_t **subvols, unsigned char *on, int numsubvols, - default_args_cbk_t *replies, unsigned char *output, - call_frame_t *frame, xlator_t *this, loc_t *loc, - const char *name, dict_t *xdata); -int32_t -cluster_setxattr (xlator_t **subvols, unsigned char *on, int numsubvols, - default_args_cbk_t *replies, unsigned char *output, - call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *dict, - int32_t flags, dict_t *xdata); +cluster_setxattr(xlator_t **subvols, unsigned char *on, int numsubvols, + default_args_cbk_t *replies, unsigned char *output, + call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *dict, + int32_t flags, dict_t *xdata); int -cluster_inodelk (xlator_t **subvols, unsigned char *on, int numsubvols, - default_args_cbk_t *replies, unsigned char *locked_on, - call_frame_t *frame, xlator_t *this, char *dom, - inode_t *inode, off_t off, size_t size); +cluster_inodelk(xlator_t **subvols, unsigned char *on, int numsubvols, + default_args_cbk_t *replies, unsigned char *locked_on, + call_frame_t *frame, xlator_t *this, char *dom, inode_t *inode, + off_t off, size_t size); int -cluster_uninodelk (xlator_t **subvols, unsigned char *locked_on, int numsubvols, - default_args_cbk_t *replies, unsigned char *output, - call_frame_t *frame, xlator_t *this, char *dom, - inode_t *inode, off_t off, size_t size); +cluster_uninodelk(xlator_t **subvols, unsigned char *locked_on, int numsubvols, + default_args_cbk_t *replies, unsigned char *output, + call_frame_t *frame, xlator_t *this, char *dom, + inode_t *inode, off_t off, size_t size); int -cluster_entrylk (xlator_t **subvols, unsigned char *on, int numsubvols, - default_args_cbk_t *replies, unsigned char *locked_on, - call_frame_t *frame, xlator_t *this, char *dom, - inode_t *inode, const char *name); +cluster_entrylk(xlator_t **subvols, unsigned char *on, int numsubvols, + default_args_cbk_t *replies, unsigned char *locked_on, + call_frame_t *frame, xlator_t *this, char *dom, inode_t *inode, + const char *name); int32_t -cluster_rmdir (xlator_t **subvols, unsigned char *on, int numsubvols, - default_args_cbk_t *replies, unsigned char *output, - call_frame_t *frame, xlator_t *this, loc_t *loc, int flags, - dict_t *xdata); +cluster_rmdir(xlator_t **subvols, unsigned char *on, int numsubvols, + default_args_cbk_t *replies, unsigned char *output, + call_frame_t *frame, xlator_t *this, loc_t *loc, int flags, + dict_t *xdata); int32_t -cluster_unlink (xlator_t **subvols, unsigned char *on, int numsubvols, - default_args_cbk_t *replies, unsigned char *output, - call_frame_t *frame, xlator_t *this, loc_t *loc, int xflag, - dict_t *xdata); +cluster_unlink(xlator_t **subvols, unsigned char *on, int numsubvols, + default_args_cbk_t *replies, unsigned char *output, + call_frame_t *frame, xlator_t *this, loc_t *loc, int xflag, + dict_t *xdata); int -cluster_mkdir (xlator_t **subvols, unsigned char *on, int numsubvols, - default_args_cbk_t *replies, unsigned char *output, - call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, - mode_t umask, dict_t *xdata); +cluster_mkdir(xlator_t **subvols, unsigned char *on, int numsubvols, + default_args_cbk_t *replies, unsigned char *output, + call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, + mode_t umask, dict_t *xdata); int32_t -cluster_readlink (xlator_t **subvols, unsigned char *on, int numsubvols, - default_args_cbk_t *replies, unsigned char *output, - call_frame_t *frame, xlator_t *this, loc_t *loc, size_t size, - dict_t *xdata); +cluster_readlink(xlator_t **subvols, unsigned char *on, int numsubvols, + default_args_cbk_t *replies, unsigned char *output, + call_frame_t *frame, xlator_t *this, loc_t *loc, size_t size, + dict_t *xdata); int -cluster_symlink (xlator_t **subvols, unsigned char *on, int numsubvols, - default_args_cbk_t *replies, unsigned char *output, - call_frame_t *frame, xlator_t *this, const char *linkpath, - loc_t *loc, mode_t umask, dict_t *xdata); +cluster_symlink(xlator_t **subvols, unsigned char *on, int numsubvols, + default_args_cbk_t *replies, unsigned char *output, + call_frame_t *frame, xlator_t *this, const char *linkpath, + loc_t *loc, mode_t umask, dict_t *xdata); int32_t -cluster_link (xlator_t **subvols, unsigned char *on, int numsubvols, +cluster_link(xlator_t **subvols, unsigned char *on, int numsubvols, + default_args_cbk_t *replies, unsigned char *output, + call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc, + dict_t *xdata); + +int +cluster_mknod(xlator_t **subvols, unsigned char *on, int numsubvols, default_args_cbk_t *replies, unsigned char *output, - call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc, - dict_t *xdata); + call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, + dev_t rdev, mode_t umask, dict_t *xdata); int -cluster_mknod (xlator_t **subvols, unsigned char *on, int numsubvols, - default_args_cbk_t *replies, unsigned char *output, - call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, - dev_t rdev, mode_t umask, dict_t *xdata); +cluster_unentrylk(xlator_t **subvols, unsigned char *locked_on, int numsubvols, + default_args_cbk_t *replies, unsigned char *output, + call_frame_t *frame, xlator_t *this, char *dom, + inode_t *inode, const char *name); int -cluster_unentrylk (xlator_t **subvols, unsigned char *locked_on, int numsubvols, - default_args_cbk_t *replies, unsigned char *output, +cluster_tryentrylk(xlator_t **subvols, unsigned char *on, int numsubvols, + default_args_cbk_t *replies, unsigned char *locked_on, call_frame_t *frame, xlator_t *this, char *dom, inode_t *inode, const char *name); -int -cluster_tryentrylk (xlator_t **subvols, unsigned char *on, int numsubvols, - default_args_cbk_t *replies, unsigned char *locked_on, - call_frame_t *frame, xlator_t *this, char *dom, - inode_t *inode, const char *name); - int32_t -cluster_fxattrop (xlator_t **subvols, unsigned char *on, int numsubvols, - default_args_cbk_t *replies, unsigned char *output, - call_frame_t *frame, xlator_t *this, fd_t *fd, - gf_xattrop_flags_t flags, dict_t *dict, dict_t *xdata); - -int32_t -cluster_xattrop (xlator_t **subvols, unsigned char *on, int numsubvols, +cluster_fxattrop(xlator_t **subvols, unsigned char *on, int numsubvols, default_args_cbk_t *replies, unsigned char *output, - call_frame_t *frame, xlator_t *this, loc_t *loc, + call_frame_t *frame, xlator_t *this, fd_t *fd, gf_xattrop_flags_t flags, dict_t *dict, dict_t *xdata); int32_t -cluster_fstat (xlator_t **subvols, unsigned char *on, int numsubvols, - default_args_cbk_t *replies, unsigned char *output, - call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata); +cluster_xattrop(xlator_t **subvols, unsigned char *on, int numsubvols, + default_args_cbk_t *replies, unsigned char *output, + call_frame_t *frame, xlator_t *this, loc_t *loc, + gf_xattrop_flags_t flags, dict_t *dict, dict_t *xdata); int32_t -cluster_ftruncate (xlator_t **subvols, unsigned char *on, int numsubvols, - default_args_cbk_t *replies, unsigned char *output, - call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, - dict_t *xdata); +cluster_fstat(xlator_t **subvols, unsigned char *on, int numsubvols, + default_args_cbk_t *replies, unsigned char *output, + call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata); int32_t -cluster_open (xlator_t **subvols, unsigned char *on, int numsubvols, - default_args_cbk_t *replies, unsigned char *output, - call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags, - fd_t *fd, dict_t *xdata); +cluster_ftruncate(xlator_t **subvols, unsigned char *on, int numsubvols, + default_args_cbk_t *replies, unsigned char *output, + call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, + dict_t *xdata); + +int32_t +cluster_open(xlator_t **subvols, unsigned char *on, int numsubvols, + default_args_cbk_t *replies, unsigned char *output, + call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags, + fd_t *fd, dict_t *xdata); int -cluster_tryinodelk (xlator_t **subvols, unsigned char *on, int numsubvols, - default_args_cbk_t *replies, unsigned char *locked_on, - call_frame_t *frame, xlator_t *this, char *dom, - inode_t *inode, off_t off, size_t size); +cluster_tryinodelk(xlator_t **subvols, unsigned char *on, int numsubvols, + default_args_cbk_t *replies, unsigned char *locked_on, + call_frame_t *frame, xlator_t *this, char *dom, + inode_t *inode, off_t off, size_t size); int32_t -cluster_fsetattr (xlator_t **subvols, unsigned char *on, int numsubvols, - default_args_cbk_t *replies, unsigned char *output, - call_frame_t *frame, xlator_t *this, fd_t *fd, - struct iatt *stbuf, int32_t valid, dict_t *xdata); +cluster_fsetattr(xlator_t **subvols, unsigned char *on, int numsubvols, + default_args_cbk_t *replies, unsigned char *output, + call_frame_t *frame, xlator_t *this, fd_t *fd, + struct iatt *stbuf, int32_t valid, dict_t *xdata); int32_t -cluster_put (xlator_t **subvols, unsigned char *on, int numsubvols, - default_args_cbk_t *replies, unsigned char *output, - call_frame_t *frame, xlator_t *this, loc_t *loc, - mode_t mode, mode_t umask, uint32_t flags, struct iovec *vector, - int32_t count, off_t offset, struct iobref *iobref, dict_t *xattr, - dict_t *xdata); +cluster_put(xlator_t **subvols, unsigned char *on, int numsubvols, + default_args_cbk_t *replies, unsigned char *output, + call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, + mode_t umask, uint32_t flags, struct iovec *vector, int32_t count, + off_t offset, struct iobref *iobref, dict_t *xattr, dict_t *xdata); void -cluster_replies_wipe (default_args_cbk_t *replies, int num_subvols); +cluster_replies_wipe(default_args_cbk_t *replies, int num_subvols); int32_t -cluster_fop_success_fill (default_args_cbk_t *replies, int numsubvols, - unsigned char *success); +cluster_fop_success_fill(default_args_cbk_t *replies, int numsubvols, + unsigned char *success); int32_t -cluster_xattrop_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, dict_t *dict, - dict_t *xdata); +cluster_xattrop_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *dict, + dict_t *xdata); int -cluster_tiebreaker_inodelk (xlator_t **subvols, unsigned char *on, - int numsubvols, default_args_cbk_t *replies, - unsigned char *locked_on, call_frame_t *frame, - xlator_t *this, char *dom, inode_t *inode, - off_t off, size_t size); +cluster_tiebreaker_inodelk(xlator_t **subvols, unsigned char *on, + int numsubvols, default_args_cbk_t *replies, + unsigned char *locked_on, call_frame_t *frame, + xlator_t *this, char *dom, inode_t *inode, off_t off, + size_t size); #endif /* !_CLUSTER_SYNCOP_H */ diff --git a/libglusterfs/src/common-utils.h b/libglusterfs/src/common-utils.h index ef09ca5a337..84733dffa85 100644 --- a/libglusterfs/src/common-utils.h +++ b/libglusterfs/src/common-utils.h @@ -29,12 +29,13 @@ #define ffsll(x) __builtin_ffsll(x) #endif -void trap (void); +void +trap(void); -#define GF_UNIVERSAL_ANSWER 42 /* :O */ +#define GF_UNIVERSAL_ANSWER 42 /* :O */ /* To solve type punned error */ -#define VOID(ptr) ((void **) ((void *) ptr)) +#define VOID(ptr) ((void **)((void *)ptr)) #include "logging.h" #include "glusterfs.h" @@ -47,34 +48,38 @@ void trap (void); #include "protocol-common.h" #include "iobuf.h" - #define STRINGIFY(val) #val #define TOSTRING(val) STRINGIFY(val) -#define alloca0(size) ({void *__ptr; __ptr = alloca(size); memset(__ptr, 0, size); __ptr; }) +#define alloca0(size) \ + ({ \ + void *__ptr; \ + __ptr = alloca(size); \ + memset(__ptr, 0, size); \ + __ptr; \ + }) -#define min(a,b) ((a)<(b)?(a):(b)) -#define max(a,b) ((a)>(b)?(a):(b)) -#define roof(a,b) ((((a)+(b)-1)/((b!=0)?(b):1))*(b)) -#define floor(a,b) (((a)/((b!=0)?(b):1))*(b)) +#define min(a, b) ((a) < (b) ? (a) : (b)) +#define max(a, b) ((a) > (b) ? (a) : (b)) +#define roof(a, b) ((((a) + (b)-1) / ((b != 0) ? (b) : 1)) * (b)) +#define floor(a, b) (((a) / ((b != 0) ? (b) : 1)) * (b)) #define IPv4_ADDR_SIZE 32 +#define GF_UNIT_KB 1024ULL +#define GF_UNIT_MB 1048576ULL +#define GF_UNIT_GB 1073741824ULL +#define GF_UNIT_TB 1099511627776ULL +#define GF_UNIT_PB 1125899906842624ULL -#define GF_UNIT_KB 1024ULL -#define GF_UNIT_MB 1048576ULL -#define GF_UNIT_GB 1073741824ULL -#define GF_UNIT_TB 1099511627776ULL -#define GF_UNIT_PB 1125899906842624ULL - -#define GF_UNIT_B_STRING "B" -#define GF_UNIT_KB_STRING "KB" -#define GF_UNIT_MB_STRING "MB" -#define GF_UNIT_GB_STRING "GB" -#define GF_UNIT_TB_STRING "TB" -#define GF_UNIT_PB_STRING "PB" +#define GF_UNIT_B_STRING "B" +#define GF_UNIT_KB_STRING "KB" +#define GF_UNIT_MB_STRING "MB" +#define GF_UNIT_GB_STRING "GB" +#define GF_UNIT_TB_STRING "TB" +#define GF_UNIT_PB_STRING "PB" -#define GF_UNIT_PERCENT_STRING "%" +#define GF_UNIT_PERCENT_STRING "%" #define GEOREP "geo-replication" #define GHADOOP "glusterfs-hadoop" @@ -82,22 +87,28 @@ void trap (void); #define GF_SELINUX_XATTR_KEY "security.selinux" -#define WIPE(statp) do { typeof(*statp) z = {0,}; if (statp) *statp = z; } while (0) +#define WIPE(statp) \ + do { \ + typeof(*statp) z = { \ + 0, \ + }; \ + if (statp) \ + *statp = z; \ + } while (0) -#define IS_EXT_FS(fs_name) \ - (!strcmp (fs_name, "ext2") || \ - !strcmp (fs_name, "ext3") || \ - !strcmp (fs_name, "ext4")) +#define IS_EXT_FS(fs_name) \ + (!strcmp(fs_name, "ext2") || !strcmp(fs_name, "ext3") || \ + !strcmp(fs_name, "ext4")) /* process mode definitions */ -#define GF_SERVER_PROCESS 0 -#define GF_CLIENT_PROCESS 1 +#define GF_SERVER_PROCESS 0 +#define GF_CLIENT_PROCESS 1 #define GF_GLUSTERD_PROCESS 2 /* Defining this here as it is needed by glusterd for setting * nfs port in volume status. */ -#define GF_NFS3_PORT 2049 +#define GF_NFS3_PORT 2049 #define GF_CLIENT_PORT_CEILING 1024 #define GF_IANA_PRIV_PORTS_START 49152 /* RFC 6335 */ @@ -106,9 +117,9 @@ void trap (void); #define GF_PORT_ARRAY_SIZE ((GF_PORT_MAX + 7) / 8) #define GF_LOCK_TIMER 180 #define GF_MINUTE_IN_SECONDS 60 -#define GF_HOUR_IN_SECONDS (60*60) -#define GF_DAY_IN_SECONDS (24*60*60) -#define GF_WEEK_IN_SECONDS (7*24*60*60) +#define GF_HOUR_IN_SECONDS (60 * 60) +#define GF_DAY_IN_SECONDS (24 * 60 * 60) +#define GF_WEEK_IN_SECONDS (7 * 24 * 60 * 60) /* Default timeout for both barrier and changelog translator */ #define BARRIER_TIMEOUT "120" @@ -121,7 +132,7 @@ void trap (void); #define GF_XXHSUM64_DEFAULT_SEED 0 /* Shard */ -#define GF_XATTR_SHARD_FILE_SIZE "trusted.glusterfs.shard.file-size" +#define GF_XATTR_SHARD_FILE_SIZE "trusted.glusterfs.shard.file-size" #define SHARD_ROOT_GFID "be318638-e8a0-4c6d-977d-7a937aa84806" #define DOT_SHARD_REMOVE_ME_GFID "77dd5a45-dbf5-4592-b31b-b440382302e9" @@ -129,10 +140,9 @@ void trap (void); * Format: 4hexnum-4hexnum-4hexnum-4hexnum-4hexnum-4hexnum-4hexnum-4hexnum * Eg:6c69-6431-2d63-6c6e-7431-0000-0000-0000 */ -#define GF_LEASE_ID_BUF_SIZE ((LEASE_ID_SIZE * 2) + \ - (LEASE_ID_SIZE / 2)) +#define GF_LEASE_ID_BUF_SIZE ((LEASE_ID_SIZE * 2) + (LEASE_ID_SIZE / 2)) -#define GF_PERCENTAGE(val, total) (((val)*100)/(total)) +#define GF_PERCENTAGE(val, total) (((val)*100) / (total)) /* pthread related */ /* as per the man page, thread-name should be at max 16 bytes */ @@ -142,9 +152,9 @@ void trap (void); #define GF_THREAD_NAME_PREFIX_LEN 5 #include <stdbool.h> -#define gf_boolean_t bool -#define _gf_false false -#define _gf_true true +#define gf_boolean_t bool +#define _gf_false false +#define _gf_true true /* * we could have initialized these as +ve values and treated @@ -152,26 +162,25 @@ void trap (void); * saved us with the pain of assigning values), but since we * only have a few clients that use this feature, it's okay. */ -enum _gf_special_pid -{ - GF_CLIENT_PID_MAX = 0, - GF_CLIENT_PID_GSYNCD = -1, - GF_CLIENT_PID_HADOOP = -2, - GF_CLIENT_PID_DEFRAG = -3, - GF_CLIENT_PID_NO_ROOT_SQUASH = -4, - GF_CLIENT_PID_QUOTA_MOUNT = -5, - GF_CLIENT_PID_SELF_HEALD = -6, - GF_CLIENT_PID_GLFS_HEAL = -7, - GF_CLIENT_PID_BITD = -8, - GF_CLIENT_PID_SCRUB = -9, - GF_CLIENT_PID_TIER_DEFRAG = -10, - GF_SERVER_PID_TRASH = -11 +enum _gf_special_pid { + GF_CLIENT_PID_MAX = 0, + GF_CLIENT_PID_GSYNCD = -1, + GF_CLIENT_PID_HADOOP = -2, + GF_CLIENT_PID_DEFRAG = -3, + GF_CLIENT_PID_NO_ROOT_SQUASH = -4, + GF_CLIENT_PID_QUOTA_MOUNT = -5, + GF_CLIENT_PID_SELF_HEALD = -6, + GF_CLIENT_PID_GLFS_HEAL = -7, + GF_CLIENT_PID_BITD = -8, + GF_CLIENT_PID_SCRUB = -9, + GF_CLIENT_PID_TIER_DEFRAG = -10, + GF_SERVER_PID_TRASH = -11 }; enum _gf_xlator_ipc_targets { - GF_IPC_TARGET_CHANGELOG = 0, - GF_IPC_TARGET_CTR = 1, - GF_IPC_TARGET_UPCALL = 2 + GF_IPC_TARGET_CHANGELOG = 0, + GF_IPC_TARGET_CTR = 1, + GF_IPC_TARGET_UPCALL = 2 }; typedef enum _gf_special_pid gf_special_pid_t; @@ -193,785 +202,861 @@ typedef enum _gf_xlator_ipc_targets _gf_xlator_ipc_targets_t; * not have such restrictions */ typedef struct dht_changelog_rename_info { - uuid_t old_pargfid; - uuid_t new_pargfid; - int32_t oldname_len; - int32_t newname_len; - char buffer[1]; - } dht_changelog_rename_info_t; - + uuid_t old_pargfid; + uuid_t new_pargfid; + int32_t oldname_len; + int32_t newname_len; + char buffer[1]; +} dht_changelog_rename_info_t; -typedef int (*gf_cmp) (void *, void *); +typedef int (*gf_cmp)(void *, void *); struct _dict; struct dnscache { - struct _dict *cache_dict; - time_t ttl; + struct _dict *cache_dict; + time_t ttl; }; struct dnscache_entry { - char *ip; - char *fqdn; - time_t timestamp; + char *ip; + char *fqdn; + time_t timestamp; }; struct dnscache6 { - struct addrinfo *first; - struct addrinfo *next; + struct addrinfo *first; + struct addrinfo *next; }; struct list_node { - void *ptr; - struct list_head list; + void *ptr; + struct list_head list; }; extern char *vol_type_str[]; -struct list_node *list_node_add (void *ptr, struct list_head *list); -struct list_node *list_node_add_order (void *ptr, struct list_head *list, - int (*compare)(struct list_head *, - struct list_head *)); -void list_node_del (struct list_node *node); +struct list_node * +list_node_add(void *ptr, struct list_head *list); +struct list_node * +list_node_add_order(void *ptr, struct list_head *list, + int (*compare)(struct list_head *, struct list_head *)); +void +list_node_del(struct list_node *node); -struct dnscache *gf_dnscache_init (time_t ttl); -struct dnscache_entry *gf_dnscache_entry_init (void); -void gf_dnscache_entry_deinit (struct dnscache_entry *entry); -char *gf_rev_dns_lookup_cached (const char *ip, struct dnscache *dnscache); +struct dnscache * +gf_dnscache_init(time_t ttl); +struct dnscache_entry * +gf_dnscache_entry_init(void); +void +gf_dnscache_entry_deinit(struct dnscache_entry *entry); +char * +gf_rev_dns_lookup_cached(const char *ip, struct dnscache *dnscache); -char *gf_resolve_path_parent (const char *path); +char * +gf_resolve_path_parent(const char *path); -void gf_global_variable_init(void); +void +gf_global_variable_init(void); -int32_t gf_resolve_ip6 (const char *hostname, uint16_t port, int family, - void **dnscache, struct addrinfo **addr_info); +int32_t +gf_resolve_ip6(const char *hostname, uint16_t port, int family, void **dnscache, + struct addrinfo **addr_info); -void gf_log_dump_graph (FILE *specfp, glusterfs_graph_t *graph); -void gf_print_trace (int32_t signal, glusterfs_ctx_t *ctx); -int gf_set_log_file_path (cmd_args_t *cmd_args, glusterfs_ctx_t *ctx); -int gf_set_log_ident (cmd_args_t *cmd_args); +void +gf_log_dump_graph(FILE *specfp, glusterfs_graph_t *graph); +void +gf_print_trace(int32_t signal, glusterfs_ctx_t *ctx); +int +gf_set_log_file_path(cmd_args_t *cmd_args, glusterfs_ctx_t *ctx); +int +gf_set_log_ident(cmd_args_t *cmd_args); -int gf_process_getspec_servers_list(cmd_args_t *cmd_args, - const char *servers_list); -int gf_set_volfile_server_common (cmd_args_t *cmd_args, const char *host, - const char *transport, int port); +int +gf_process_getspec_servers_list(cmd_args_t *cmd_args, const char *servers_list); +int +gf_set_volfile_server_common(cmd_args_t *cmd_args, const char *host, + const char *transport, int port); static inline void -BIT_SET (unsigned char *array, unsigned int index) +BIT_SET(unsigned char *array, unsigned int index) { - unsigned int offset = index / 8; - unsigned int shift = index % 8; + unsigned int offset = index / 8; + unsigned int shift = index % 8; - array[offset] |= (1 << shift); + array[offset] |= (1 << shift); } static inline void -BIT_CLEAR (unsigned char *array, unsigned int index) +BIT_CLEAR(unsigned char *array, unsigned int index) { - unsigned int offset = index / 8; - unsigned int shift = index % 8; + unsigned int offset = index / 8; + unsigned int shift = index % 8; - array[offset] &= ~(1 << shift); + array[offset] &= ~(1 << shift); } static inline unsigned int -BIT_VALUE (unsigned char *array, unsigned int index) +BIT_VALUE(unsigned char *array, unsigned int index) { - unsigned int offset = index / 8; - unsigned int shift = index % 8; + unsigned int offset = index / 8; + unsigned int shift = index % 8; - return (array[offset] >> shift) & 0x1; + return (array[offset] >> shift) & 0x1; } -#define VECTORSIZE(count) (count * (sizeof (struct iovec))) +#define VECTORSIZE(count) (count * (sizeof(struct iovec))) #define STRLEN_0(str) (strlen(str) + 1) -#define VALIDATE_OR_GOTO(arg,label) do { \ - if (!arg) { \ - errno = EINVAL; \ - gf_msg_callingfn ((this ? (this->name) : \ - "(Govinda! Govinda!)"), \ - GF_LOG_WARNING, EINVAL, \ - LG_MSG_INVALID_ARG, \ - "invalid argument: " #arg); \ - goto label; \ - } \ - } while (0) - -#define GF_VALIDATE_OR_GOTO(name,arg,label) do { \ - if (!arg) { \ - errno = EINVAL; \ - gf_msg_callingfn (name, GF_LOG_ERROR, errno, \ - LG_MSG_INVALID_ARG, \ - "invalid argument: " #arg); \ - goto label; \ - } \ - } while (0) - -#define GF_VALIDATE_OR_GOTO_WITH_ERROR(name, arg, label, errno, error) do { \ - if (!arg) { \ - errno = error; \ - gf_msg_callingfn (name, GF_LOG_ERROR, EINVAL, \ - LG_MSG_INVALID_ARG, \ - "invalid argument: " #arg); \ - goto label; \ - } \ - }while (0) - -#define GF_CHECK_ALLOC(arg, retval, label) do { \ - if (!(arg)) { \ - retval = -ENOMEM; \ - goto label; \ - } \ - } while (0) \ - -#define GF_CHECK_ALLOC_AND_LOG(name, item, retval, msg, errlabel) do { \ - if (!(item)) { \ - (retval) = -ENOMEM; \ - gf_msg (name, GF_LOG_CRITICAL, ENOMEM, \ - LG_MSG_NO_MEMORY, (msg)); \ - goto errlabel; \ - } \ - } while (0) - -#define GF_ASSERT_AND_GOTO_WITH_ERROR(name, arg, label, errno, error) do { \ - if (!arg) { \ - GF_ASSERT (0); \ - errno = error; \ - goto label; \ - } \ - }while (0) - -#define GF_VALIDATE_ABSOLUTE_PATH_OR_GOTO(name,arg,label) \ - do { \ - GF_VALIDATE_OR_GOTO (name, arg, label); \ - if ((arg[0]) != '/') { \ - errno = EINVAL; \ - gf_msg_callingfn (name, GF_LOG_ERROR, EINVAL, \ - LG_MSG_INVALID_ARG, \ - "invalid argument: " #arg); \ - goto label; \ - } \ - } while (0) - -#define GF_REMOVE_SLASH_FROM_PATH(path, string) \ - do { \ - int i = 0; \ - for (i = 1; i < strlen (path); i++) { \ - string[i-1] = path[i]; \ - if (string[i-1] == '/') \ - string[i-1] = '-'; \ - } \ - } while (0) - -#define GF_REMOVE_INTERNAL_XATTR(pattern, dict) \ - do { \ - if (!dict) { \ - gf_msg (this->name, GF_LOG_ERROR, 0, \ - LG_MSG_DICT_NULL, "dict is null"); \ - break; \ - } \ - dict_foreach_fnmatch (dict, pattern, \ - dict_remove_foreach_fn, \ - NULL); \ - } while (0) - -#define GF_IF_INTERNAL_XATTR_GOTO(pattern, dict, op_errno, label) \ - do { \ - if (!dict) { \ - gf_msg (this->name, GF_LOG_ERROR, 0, \ - LG_MSG_DICT_NULL, \ - "setxattr dict is null"); \ - goto label; \ - } \ - if (dict_foreach_fnmatch (dict, pattern, \ - dict_null_foreach_fn, \ - NULL) > 0) { \ - op_errno = EPERM; \ - gf_msg (this->name, GF_LOG_ERROR, op_errno, \ - LG_MSG_NO_PERM, \ - "attempt to set internal" \ - " xattr: %s", pattern); \ - goto label; \ - } \ - } while (0) - -#define GF_IF_NATIVE_XATTR_GOTO(pattern, key, op_errno, label) \ - do { \ - if (!key) { \ - gf_msg (this->name, GF_LOG_ERROR, 0, \ - LG_MSG_NO_KEY, \ - "no key for removexattr"); \ - goto label; \ - } \ - if (!fnmatch (pattern, key, 0)) { \ - op_errno = EPERM; \ - gf_msg (this->name, GF_LOG_ERROR, op_errno, \ - LG_MSG_NO_PERM, \ - "attempt to remove internal " \ - "xattr: %s", key); \ - goto label; \ - } \ - } while (0) - - -#define GF_FILE_CONTENT_REQUESTED(_xattr_req,_content_limit) \ - (dict_get_uint64 (_xattr_req, "glusterfs.content", _content_limit) == 0) +#define VALIDATE_OR_GOTO(arg, label) \ + do { \ + if (!arg) { \ + errno = EINVAL; \ + gf_msg_callingfn((this ? (this->name) : "(Govinda! Govinda!)"), \ + GF_LOG_WARNING, EINVAL, LG_MSG_INVALID_ARG, \ + "invalid argument: " #arg); \ + goto label; \ + } \ + } while (0) + +#define GF_VALIDATE_OR_GOTO(name, arg, label) \ + do { \ + if (!arg) { \ + errno = EINVAL; \ + gf_msg_callingfn(name, GF_LOG_ERROR, errno, LG_MSG_INVALID_ARG, \ + "invalid argument: " #arg); \ + goto label; \ + } \ + } while (0) + +#define GF_VALIDATE_OR_GOTO_WITH_ERROR(name, arg, label, errno, error) \ + do { \ + if (!arg) { \ + errno = error; \ + gf_msg_callingfn(name, GF_LOG_ERROR, EINVAL, LG_MSG_INVALID_ARG, \ + "invalid argument: " #arg); \ + goto label; \ + } \ + } while (0) + +#define GF_CHECK_ALLOC(arg, retval, label) \ + do { \ + if (!(arg)) { \ + retval = -ENOMEM; \ + goto label; \ + } \ + } while (0) + +#define GF_CHECK_ALLOC_AND_LOG(name, item, retval, msg, errlabel) \ + do { \ + if (!(item)) { \ + (retval) = -ENOMEM; \ + gf_msg(name, GF_LOG_CRITICAL, ENOMEM, LG_MSG_NO_MEMORY, (msg)); \ + goto errlabel; \ + } \ + } while (0) + +#define GF_ASSERT_AND_GOTO_WITH_ERROR(name, arg, label, errno, error) \ + do { \ + if (!arg) { \ + GF_ASSERT(0); \ + errno = error; \ + goto label; \ + } \ + } while (0) + +#define GF_VALIDATE_ABSOLUTE_PATH_OR_GOTO(name, arg, label) \ + do { \ + GF_VALIDATE_OR_GOTO(name, arg, label); \ + if ((arg[0]) != '/') { \ + errno = EINVAL; \ + gf_msg_callingfn(name, GF_LOG_ERROR, EINVAL, LG_MSG_INVALID_ARG, \ + "invalid argument: " #arg); \ + goto label; \ + } \ + } while (0) + +#define GF_REMOVE_SLASH_FROM_PATH(path, string) \ + do { \ + int i = 0; \ + for (i = 1; i < strlen(path); i++) { \ + string[i - 1] = path[i]; \ + if (string[i - 1] == '/') \ + string[i - 1] = '-'; \ + } \ + } while (0) + +#define GF_REMOVE_INTERNAL_XATTR(pattern, dict) \ + do { \ + if (!dict) { \ + gf_msg(this->name, GF_LOG_ERROR, 0, LG_MSG_DICT_NULL, \ + "dict is null"); \ + break; \ + } \ + dict_foreach_fnmatch(dict, pattern, dict_remove_foreach_fn, NULL); \ + } while (0) + +#define GF_IF_INTERNAL_XATTR_GOTO(pattern, dict, op_errno, label) \ + do { \ + if (!dict) { \ + gf_msg(this->name, GF_LOG_ERROR, 0, LG_MSG_DICT_NULL, \ + "setxattr dict is null"); \ + goto label; \ + } \ + if (dict_foreach_fnmatch(dict, pattern, dict_null_foreach_fn, NULL) > \ + 0) { \ + op_errno = EPERM; \ + gf_msg(this->name, GF_LOG_ERROR, op_errno, LG_MSG_NO_PERM, \ + "attempt to set internal" \ + " xattr: %s", \ + pattern); \ + goto label; \ + } \ + } while (0) + +#define GF_IF_NATIVE_XATTR_GOTO(pattern, key, op_errno, label) \ + do { \ + if (!key) { \ + gf_msg(this->name, GF_LOG_ERROR, 0, LG_MSG_NO_KEY, \ + "no key for removexattr"); \ + goto label; \ + } \ + if (!fnmatch(pattern, key, 0)) { \ + op_errno = EPERM; \ + gf_msg(this->name, GF_LOG_ERROR, op_errno, LG_MSG_NO_PERM, \ + "attempt to remove internal " \ + "xattr: %s", \ + key); \ + goto label; \ + } \ + } while (0) + +#define GF_FILE_CONTENT_REQUESTED(_xattr_req, _content_limit) \ + (dict_get_uint64(_xattr_req, "glusterfs.content", _content_limit) == 0) #ifdef DEBUG -#define GF_ASSERT(x) assert (x); +#define GF_ASSERT(x) assert(x); #else -#define GF_ASSERT(x) \ - do { \ - if (!(x)) { \ - gf_msg_callingfn ("", GF_LOG_ERROR, 0, \ - LG_MSG_ASSERTION_FAILED, \ - "Assertion failed: " #x); \ - } \ - } while (0) +#define GF_ASSERT(x) \ + do { \ + if (!(x)) { \ + gf_msg_callingfn("", GF_LOG_ERROR, 0, LG_MSG_ASSERTION_FAILED, \ + "Assertion failed: " #x); \ + } \ + } while (0) #endif -#define GF_ABORT(msg) \ - do { \ - gf_msg_callingfn ("", GF_LOG_CRITICAL, 0, \ - LG_MSG_ASSERTION_FAILED, \ - "Assertion failed: " msg); \ - abort(); \ - } while (0) +#define GF_ABORT(msg) \ + do { \ + gf_msg_callingfn("", GF_LOG_CRITICAL, 0, LG_MSG_ASSERTION_FAILED, \ + "Assertion failed: " msg); \ + abort(); \ + } while (0) -#define GF_UUID_ASSERT(u) \ - if (gf_uuid_is_null (u))\ - GF_ASSERT (!"uuid null"); +#define GF_UUID_ASSERT(u) \ + if (gf_uuid_is_null(u)) \ + GF_ASSERT(!"uuid null"); -#define GF_IGNORE_IF_GSYNCD_SAFE_ERROR(frame, op_errno) \ - (((frame->root->pid == GF_CLIENT_PID_GSYNCD) && \ - (op_errno == EEXIST || op_errno == ENOENT))?0:1) \ +#define GF_IGNORE_IF_GSYNCD_SAFE_ERROR(frame, op_errno) \ + (((frame->root->pid == GF_CLIENT_PID_GSYNCD) && \ + (op_errno == EEXIST || op_errno == ENOENT)) \ + ? 0 \ + : 1) union gf_sock_union { - struct sockaddr_storage storage; - struct sockaddr_in6 sin6; - struct sockaddr_in sin; - struct sockaddr sa; + struct sockaddr_storage storage; + struct sockaddr_in6 sin6; + struct sockaddr_in sin; + struct sockaddr sa; }; #define GF_HIDDEN_PATH ".glusterfs" -#define GF_UNLINK_PATH GF_HIDDEN_PATH"/unlink" -#define GF_LANDFILL_PATH GF_HIDDEN_PATH"/landfill" - -#define IOV_MIN(n) min(IOV_MAX,n) - -#define GF_SKIP_IRRELEVANT_ENTRIES(entry, dir, scr) \ - do {\ - entry = NULL;\ - if (dir) { \ - entry = sys_readdir (dir, scr); \ - while (entry && (!strcmp (entry->d_name, ".") || \ - !fnmatch ("*.tmp", entry->d_name, 0) || \ - !strcmp (entry->d_name, ".."))) { \ - entry = sys_readdir (dir, scr); \ - } \ - } \ - } while (0) +#define GF_UNLINK_PATH GF_HIDDEN_PATH "/unlink" +#define GF_LANDFILL_PATH GF_HIDDEN_PATH "/landfill" + +#define IOV_MIN(n) min(IOV_MAX, n) + +#define GF_SKIP_IRRELEVANT_ENTRIES(entry, dir, scr) \ + do { \ + entry = NULL; \ + if (dir) { \ + entry = sys_readdir(dir, scr); \ + while (entry && (!strcmp(entry->d_name, ".") || \ + !fnmatch("*.tmp", entry->d_name, 0) || \ + !strcmp(entry->d_name, ".."))) { \ + entry = sys_readdir(dir, scr); \ + } \ + } \ + } while (0) static inline void -iov_free (struct iovec *vector, int count) +iov_free(struct iovec *vector, int count) { - int i; + int i; - for (i = 0; i < count; i++) - FREE (vector[i].iov_base); + for (i = 0; i < count; i++) + FREE(vector[i].iov_base); - GF_FREE (vector); + GF_FREE(vector); } - static inline int -iov_length (const struct iovec *vector, int count) +iov_length(const struct iovec *vector, int count) { - int i = 0; - size_t size = 0; + int i = 0; + size_t size = 0; - for (i = 0; i < count; i++) - size += vector[i].iov_len; + for (i = 0; i < count; i++) + size += vector[i].iov_len; - return size; + return size; } - static inline struct iovec * -iov_dup (const struct iovec *vector, int count) +iov_dup(const struct iovec *vector, int count) { - int bytecount = 0; - int i; - struct iovec *newvec = NULL; + int bytecount = 0; + int i; + struct iovec *newvec = NULL; - bytecount = (count * sizeof (struct iovec)); - newvec = GF_MALLOC (bytecount, gf_common_mt_iovec); - if (!newvec) - return NULL; + bytecount = (count * sizeof(struct iovec)); + newvec = GF_MALLOC(bytecount, gf_common_mt_iovec); + if (!newvec) + return NULL; - for (i = 0; i < count; i++) { - newvec[i].iov_len = vector[i].iov_len; - newvec[i].iov_base = vector[i].iov_base; - } + for (i = 0; i < count; i++) { + newvec[i].iov_len = vector[i].iov_len; + newvec[i].iov_base = vector[i].iov_base; + } - return newvec; + return newvec; } - static inline int -iov_subset (struct iovec *orig, int orig_count, - off_t src_offset, off_t dst_offset, - struct iovec *new) +iov_subset(struct iovec *orig, int orig_count, off_t src_offset, + off_t dst_offset, struct iovec *new) { - int new_count = 0; - int i; - off_t offset = 0; - size_t start_offset = 0; - size_t end_offset = 0, origin_iov_len = 0; - + int new_count = 0; + int i; + off_t offset = 0; + size_t start_offset = 0; + size_t end_offset = 0, origin_iov_len = 0; - for (i = 0; i < orig_count; i++) { - origin_iov_len = orig[i].iov_len; + for (i = 0; i < orig_count; i++) { + origin_iov_len = orig[i].iov_len; - if ((offset + orig[i].iov_len < src_offset) - || (offset > dst_offset)) { - goto not_subset; - } + if ((offset + orig[i].iov_len < src_offset) || (offset > dst_offset)) { + goto not_subset; + } - if (!new) { - goto count_only; - } + if (!new) { + goto count_only; + } - start_offset = 0; - end_offset = orig[i].iov_len; + start_offset = 0; + end_offset = orig[i].iov_len; - if (src_offset >= offset) { - start_offset = (src_offset - offset); - } + if (src_offset >= offset) { + start_offset = (src_offset - offset); + } - if (dst_offset <= (offset + orig[i].iov_len)) { - end_offset = (dst_offset - offset); - } + if (dst_offset <= (offset + orig[i].iov_len)) { + end_offset = (dst_offset - offset); + } - new[new_count].iov_base = orig[i].iov_base + start_offset; - new[new_count].iov_len = end_offset - start_offset; + new[new_count].iov_base = orig[i].iov_base + start_offset; + new[new_count].iov_len = end_offset - start_offset; - count_only: - new_count++; + count_only: + new_count++; - not_subset: - offset += origin_iov_len; - } + not_subset: + offset += origin_iov_len; + } - return new_count; + return new_count; } - static inline void -iov_unload (char *buf, const struct iovec *vector, int count) +iov_unload(char *buf, const struct iovec *vector, int count) { - int i; - int copied = 0; + int i; + int copied = 0; - for (i = 0; i < count; i++) { - memcpy (buf + copied, vector[i].iov_base, vector[i].iov_len); - copied += vector[i].iov_len; - } + for (i = 0; i < count; i++) { + memcpy(buf + copied, vector[i].iov_base, vector[i].iov_len); + copied += vector[i].iov_len; + } } - static inline size_t -iov_load (const struct iovec *vector, int count, char *buf, int size) +iov_load(const struct iovec *vector, int count, char *buf, int size) { - size_t left = size; - size_t cp = 0; - int ret = 0; - int i = 0; - - while (left && i < count) { - cp = min (vector[i].iov_len, left); - if (vector[i].iov_base != buf + (size - left)) - memcpy (vector[i].iov_base, buf + (size - left), cp); - ret += cp; - left -= cp; - if (left) - i++; - } - - return ret; + size_t left = size; + size_t cp = 0; + int ret = 0; + int i = 0; + + while (left && i < count) { + cp = min(vector[i].iov_len, left); + if (vector[i].iov_base != buf + (size - left)) + memcpy(vector[i].iov_base, buf + (size - left), cp); + ret += cp; + left -= cp; + if (left) + i++; + } + + return ret; } - static inline size_t -iov_copy (const struct iovec *dst, int dcnt, - const struct iovec *src, int scnt) +iov_copy(const struct iovec *dst, int dcnt, const struct iovec *src, int scnt) { - size_t ret = 0; - size_t left = 0; - size_t min_i = 0; - int s_i = 0, s_ii = 0; - int d_i = 0, d_ii = 0; - - ret = min (iov_length (dst, dcnt), iov_length (src, scnt)); - left = ret; - - while (left) { - min_i = min (dst[d_i].iov_len - d_ii, src[s_i].iov_len - s_ii); - memcpy (dst[d_i].iov_base + d_ii, src[s_i].iov_base + s_ii, - min_i); - - d_ii += min_i; - if (d_ii == dst[d_i].iov_len) { - d_ii = 0; - d_i++; - } - - s_ii += min_i; - if (s_ii == src[s_i].iov_len) { - s_ii = 0; - s_i++; - } - - left -= min_i; - } - - return ret; -} + size_t ret = 0; + size_t left = 0; + size_t min_i = 0; + int s_i = 0, s_ii = 0; + int d_i = 0, d_ii = 0; + + ret = min(iov_length(dst, dcnt), iov_length(src, scnt)); + left = ret; + + while (left) { + min_i = min(dst[d_i].iov_len - d_ii, src[s_i].iov_len - s_ii); + memcpy(dst[d_i].iov_base + d_ii, src[s_i].iov_base + s_ii, min_i); + + d_ii += min_i; + if (d_ii == dst[d_i].iov_len) { + d_ii = 0; + d_i++; + } + + s_ii += min_i; + if (s_ii == src[s_i].iov_len) { + s_ii = 0; + s_i++; + } + + left -= min_i; + } + return ret; +} static inline int -mem_0filled (const char *buf, size_t size) +mem_0filled(const char *buf, size_t size) { - int i = 0; - int ret = 0; + int i = 0; + int ret = 0; - for (i = 0; i < size; i++) { - ret = buf[i]; - if (ret) - break; - } + for (i = 0; i < size; i++) { + ret = buf[i]; + if (ret) + break; + } - return ret; + return ret; } - static inline int -iov_0filled (struct iovec *vector, int count) +iov_0filled(struct iovec *vector, int count) { - int i = 0; - int ret = 0; + int i = 0; + int ret = 0; - for (i = 0; i < count; i++) { - ret = mem_0filled (vector[i].iov_base, vector[i].iov_len); - if (ret) - break; - } + for (i = 0; i < count; i++) { + ret = mem_0filled(vector[i].iov_base, vector[i].iov_len); + if (ret) + break; + } - return ret; + return ret; } - static inline void * -memdup (const void *ptr, size_t size) +memdup(const void *ptr, size_t size) { - void *newptr = NULL; + void *newptr = NULL; - newptr = GF_MALLOC (size, gf_common_mt_memdup); - if (!newptr) - return NULL; + newptr = GF_MALLOC(size, gf_common_mt_memdup); + if (!newptr) + return NULL; - memcpy (newptr, ptr, size); - return newptr; + memcpy(newptr, ptr, size); + return newptr; } typedef enum { - gf_timefmt_default = 0, - gf_timefmt_FT = 0, /* YYYY-MM-DD hh:mm:ss */ - gf_timefmt_Ymd_T, /* YYYY/MM-DD-hh:mm:ss */ - gf_timefmt_bdT, /* MMM DD hh:mm:ss */ - gf_timefmt_F_HMS, /* YYYY-MM-DD hhmmss */ - gf_timefmt_dirent, - gf_timefmt_s, - gf_timefmt_last + gf_timefmt_default = 0, + gf_timefmt_FT = 0, /* YYYY-MM-DD hh:mm:ss */ + gf_timefmt_Ymd_T, /* YYYY/MM-DD-hh:mm:ss */ + gf_timefmt_bdT, /* MMM DD hh:mm:ss */ + gf_timefmt_F_HMS, /* YYYY-MM-DD hhmmss */ + gf_timefmt_dirent, + gf_timefmt_s, + gf_timefmt_last } gf_timefmts; static inline char * -gf_time_fmt (char *dst, size_t sz_dst, time_t utime, unsigned int fmt) +gf_time_fmt(char *dst, size_t sz_dst, time_t utime, unsigned int fmt) { - extern void _gf_timestuff (const char ***, const char ***); - static gf_timefmts timefmt_last = (gf_timefmts) - 1; - static const char **fmts; - static const char **zeros; - struct tm tm, *res; - int localtime = 0; - - if (timefmt_last == ((gf_timefmts)-1)) { - _gf_timestuff (&fmts, &zeros); - timefmt_last = gf_timefmt_last; - } - if (timefmt_last <= fmt) { - fmt = gf_timefmt_default; - } - localtime = gf_log_get_localtime (); - res = localtime ? localtime_r (&utime, &tm) : gmtime_r (&utime, &tm); - if (utime && (res != NULL)) { - strftime (dst, sz_dst, fmts[fmt], &tm); - } else { - strncpy (dst, "N/A", sz_dst); - } - return dst; + extern void _gf_timestuff(const char ***, const char ***); + static gf_timefmts timefmt_last = (gf_timefmts)-1; + static const char **fmts; + static const char **zeros; + struct tm tm, *res; + int localtime = 0; + + if (timefmt_last == ((gf_timefmts)-1)) { + _gf_timestuff(&fmts, &zeros); + timefmt_last = gf_timefmt_last; + } + if (timefmt_last <= fmt) { + fmt = gf_timefmt_default; + } + localtime = gf_log_get_localtime(); + res = localtime ? localtime_r(&utime, &tm) : gmtime_r(&utime, &tm); + if (utime && (res != NULL)) { + strftime(dst, sz_dst, fmts[fmt], &tm); + } else { + strncpy(dst, "N/A", sz_dst); + } + return dst; } /* This function helps us use gfid (unique identity) to generate inode's unique * number in glusterfs. */ ino_t -gfid_to_ino (uuid_t gfid); +gfid_to_ino(uuid_t gfid); int -mkdir_p (char *path, mode_t mode, gf_boolean_t allow_symlinks); +mkdir_p(char *path, mode_t mode, gf_boolean_t allow_symlinks); /* * rounds up nr to power of two. If nr is already a power of two, just returns * nr */ int -gf_lstat_dir (const char *path, struct stat *stbuf_in); +gf_lstat_dir(const char *path, struct stat *stbuf_in); -int32_t gf_roundup_power_of_two (int32_t nr); +int32_t +gf_roundup_power_of_two(int32_t nr); /* * rounds up nr to next power of two. If nr is already a power of two, next * power of two is returned. */ -int32_t gf_roundup_next_power_of_two (int32_t nr); - -char *gf_trim (char *string); -int gf_volume_name_validate (const char *volume_name); - -int gf_string2long (const char *str, long *n); -int gf_string2ulong (const char *str, unsigned long *n); -int gf_string2int (const char *str, int *n); -int gf_string2uint (const char *str, unsigned int *n); -int gf_string2double (const char *str, double *n); -int gf_string2longlong (const char *str, long long *n); -int gf_string2ulonglong (const char *str, unsigned long long *n); - -int gf_string2int8 (const char *str, int8_t *n); -int gf_string2int16 (const char *str, int16_t *n); -int gf_string2int32 (const char *str, int32_t *n); -int gf_string2int64 (const char *str, int64_t *n); -int gf_string2uint8 (const char *str, uint8_t *n); -int gf_string2uint16 (const char *str, uint16_t *n); -int gf_string2uint32 (const char *str, uint32_t *n); -int gf_string2uint64 (const char *str, uint64_t *n); - -int gf_strstr (const char *str, const char *delim, const char *match); - -int gf_string2ulong_base10 (const char *str, unsigned long *n); -int gf_string2uint_base10 (const char *str, unsigned int *n); -int gf_string2uint8_base10 (const char *str, uint8_t *n); -int gf_string2uint16_base10 (const char *str, uint16_t *n); -int gf_string2uint32_base10 (const char *str, uint32_t *n); -int gf_string2uint64_base10 (const char *str, uint64_t *n); -int gf_string2bytesize (const char *str, uint64_t *n); -int gf_string2bytesize_size (const char *str, size_t *n); -int gf_string2bytesize_uint64 (const char *str, uint64_t *n); -int gf_string2bytesize_int64 (const char *str, int64_t *n); -int gf_string2percent_or_bytesize (const char *str, double *n, - gf_boolean_t *is_percent); - -int gf_string2boolean (const char *str, gf_boolean_t *b); -int gf_string2percent (const char *str, double *n); -int gf_string2time (const char *str, uint32_t *n); - -int gf_lockfd (int fd); -int gf_unlockfd (int fd); - -int get_checksum_for_file (int fd, uint32_t *checksum); -int log_base2 (unsigned long x); - -int get_checksum_for_path (char *path, uint32_t *checksum); -int get_file_mtime (const char *path, time_t *stamp); -char *gf_resolve_path_parent (const char *path); - -char *strtail (char *str, const char *pattern); -void skipwhite (char **s); -char *nwstrtail (char *str, char *pattern); +int32_t +gf_roundup_next_power_of_two(int32_t nr); + +char * +gf_trim(char *string); +int +gf_volume_name_validate(const char *volume_name); + +int +gf_string2long(const char *str, long *n); +int +gf_string2ulong(const char *str, unsigned long *n); +int +gf_string2int(const char *str, int *n); +int +gf_string2uint(const char *str, unsigned int *n); +int +gf_string2double(const char *str, double *n); +int +gf_string2longlong(const char *str, long long *n); +int +gf_string2ulonglong(const char *str, unsigned long long *n); + +int +gf_string2int8(const char *str, int8_t *n); +int +gf_string2int16(const char *str, int16_t *n); +int +gf_string2int32(const char *str, int32_t *n); +int +gf_string2int64(const char *str, int64_t *n); +int +gf_string2uint8(const char *str, uint8_t *n); +int +gf_string2uint16(const char *str, uint16_t *n); +int +gf_string2uint32(const char *str, uint32_t *n); +int +gf_string2uint64(const char *str, uint64_t *n); + +int +gf_strstr(const char *str, const char *delim, const char *match); + +int +gf_string2ulong_base10(const char *str, unsigned long *n); +int +gf_string2uint_base10(const char *str, unsigned int *n); +int +gf_string2uint8_base10(const char *str, uint8_t *n); +int +gf_string2uint16_base10(const char *str, uint16_t *n); +int +gf_string2uint32_base10(const char *str, uint32_t *n); +int +gf_string2uint64_base10(const char *str, uint64_t *n); +int +gf_string2bytesize(const char *str, uint64_t *n); +int +gf_string2bytesize_size(const char *str, size_t *n); +int +gf_string2bytesize_uint64(const char *str, uint64_t *n); +int +gf_string2bytesize_int64(const char *str, int64_t *n); +int +gf_string2percent_or_bytesize(const char *str, double *n, + gf_boolean_t *is_percent); + +int +gf_string2boolean(const char *str, gf_boolean_t *b); +int +gf_string2percent(const char *str, double *n); +int +gf_string2time(const char *str, uint32_t *n); + +int +gf_lockfd(int fd); +int +gf_unlockfd(int fd); + +int +get_checksum_for_file(int fd, uint32_t *checksum); +int +log_base2(unsigned long x); + +int +get_checksum_for_path(char *path, uint32_t *checksum); +int +get_file_mtime(const char *path, time_t *stamp); +char * +gf_resolve_path_parent(const char *path); + +char * +strtail(char *str, const char *pattern); +void +skipwhite(char **s); +char * +nwstrtail(char *str, char *pattern); /* returns a new string with nth word of given string. n>=1 */ typedef struct token_iter { - char *end; - char sep; + char *end; + char sep; } token_iter_t; -char *token_iter_init (char *str, char sep, token_iter_t *tit); -gf_boolean_t next_token (char **tokenp, token_iter_t *tit); -void drop_token (char *token, token_iter_t *tit); - -gf_boolean_t mask_match (const uint32_t a, const uint32_t b, const uint32_t m); -gf_boolean_t gf_is_ip_in_net (const char *network, const char *ip_str); -char valid_host_name (char *address, int length); -char valid_ipv4_address (char *address, int length, gf_boolean_t wildcard_acc); -char valid_ipv6_address (char *address, int length, gf_boolean_t wildcard_acc); -char valid_internet_address (char *address, gf_boolean_t wildcard_acc); -gf_boolean_t valid_mount_auth_address (char *address); -gf_boolean_t valid_ipv4_subnetwork (const char *address); -gf_boolean_t gf_sock_union_equal_addr (union gf_sock_union *a, - union gf_sock_union *b); -char *gf_rev_dns_lookup (const char *ip); - -char *uuid_utoa (uuid_t uuid); -char *uuid_utoa_r (uuid_t uuid, char *dst); -char *lkowner_utoa (gf_lkowner_t *lkowner); -char *lkowner_utoa_r (gf_lkowner_t *lkowner, char *dst, int len); -char *leaseid_utoa (const char *lease_id); -gf_boolean_t is_valid_lease_id (const char *lease_id); -char *gf_leaseid_get (void); -char *gf_existing_leaseid (void); - -void gf_array_insertionsort (void *a, int l, int r, size_t elem_size, - gf_cmp cmp); -int gf_is_str_int (const char *value); - -char *gf_uint64_2human_readable (uint64_t); -int get_vol_type (int type, int dist_count, int brick_count); -int validate_brick_name (char *brick); -char *get_host_name (char *word, char **host); -char *get_path_name (char *word, char **path); -void gf_path_strip_trailing_slashes (char *path); -uint64_t get_mem_size (void); -int gf_strip_whitespace (char *str, int len); -int gf_canonicalize_path (char *path); -char *generate_glusterfs_ctx_id (void); -char *gf_get_reserved_ports(void); -int gf_process_reserved_ports (unsigned char *ports, uint32_t ceiling); +char * +token_iter_init(char *str, char sep, token_iter_t *tit); +gf_boolean_t +next_token(char **tokenp, token_iter_t *tit); +void +drop_token(char *token, token_iter_t *tit); + +gf_boolean_t +mask_match(const uint32_t a, const uint32_t b, const uint32_t m); +gf_boolean_t +gf_is_ip_in_net(const char *network, const char *ip_str); +char +valid_host_name(char *address, int length); +char +valid_ipv4_address(char *address, int length, gf_boolean_t wildcard_acc); +char +valid_ipv6_address(char *address, int length, gf_boolean_t wildcard_acc); +char +valid_internet_address(char *address, gf_boolean_t wildcard_acc); +gf_boolean_t +valid_mount_auth_address(char *address); +gf_boolean_t +valid_ipv4_subnetwork(const char *address); +gf_boolean_t +gf_sock_union_equal_addr(union gf_sock_union *a, union gf_sock_union *b); +char * +gf_rev_dns_lookup(const char *ip); + +char * +uuid_utoa(uuid_t uuid); +char * +uuid_utoa_r(uuid_t uuid, char *dst); +char * +lkowner_utoa(gf_lkowner_t *lkowner); +char * +lkowner_utoa_r(gf_lkowner_t *lkowner, char *dst, int len); +char * +leaseid_utoa(const char *lease_id); gf_boolean_t -gf_ports_reserved (char *blocked_port, unsigned char *ports, uint32_t ceiling); -int gf_get_hostname_from_ip (char *client_ip, char **hostname); -gf_boolean_t gf_is_local_addr (char *hostname); -gf_boolean_t gf_is_same_address (char *host1, char *host2); -void gf_xxh64_wrapper(const unsigned char *data, size_t const len, - unsigned long long const seed, char *xxh64); -int gf_gfid_generate_from_xxh64 (uuid_t gfid, char *key); - -int gf_set_timestamp (const char *src, const char* dest); - -int gf_thread_create (pthread_t *thread, const pthread_attr_t *attr, - void *(*start_routine)(void *), void *arg, - const char *name); -int gf_thread_create_detached (pthread_t *thread, - void *(*start_routine)(void *), void *arg, - const char *name); +is_valid_lease_id(const char *lease_id); +char * +gf_leaseid_get(void); +char * +gf_existing_leaseid(void); + +void +gf_array_insertionsort(void *a, int l, int r, size_t elem_size, gf_cmp cmp); +int +gf_is_str_int(const char *value); + +char *gf_uint64_2human_readable(uint64_t); +int +get_vol_type(int type, int dist_count, int brick_count); +int +validate_brick_name(char *brick); +char * +get_host_name(char *word, char **host); +char * +get_path_name(char *word, char **path); +void +gf_path_strip_trailing_slashes(char *path); +uint64_t +get_mem_size(void); +int +gf_strip_whitespace(char *str, int len); +int +gf_canonicalize_path(char *path); +char * +generate_glusterfs_ctx_id(void); +char * +gf_get_reserved_ports(void); +int +gf_process_reserved_ports(unsigned char *ports, uint32_t ceiling); gf_boolean_t -gf_is_pid_running (int pid); +gf_ports_reserved(char *blocked_port, unsigned char *ports, uint32_t ceiling); +int +gf_get_hostname_from_ip(char *client_ip, char **hostname); gf_boolean_t -gf_is_service_running (char *pidfile, int *pid); +gf_is_local_addr(char *hostname); gf_boolean_t -gf_valid_pid (const char *pid, int length); +gf_is_same_address(char *host1, char *host2); +void +gf_xxh64_wrapper(const unsigned char *data, size_t const len, + unsigned long long const seed, char *xxh64); int -gf_skip_header_section (int fd, int header_len); +gf_gfid_generate_from_xxh64(uuid_t gfid, char *key); + +int +gf_set_timestamp(const char *src, const char *dest); + +int +gf_thread_create(pthread_t *thread, const pthread_attr_t *attr, + void *(*start_routine)(void *), void *arg, const char *name); +int +gf_thread_create_detached(pthread_t *thread, void *(*start_routine)(void *), + void *arg, const char *name); +gf_boolean_t +gf_is_pid_running(int pid); +gf_boolean_t +gf_is_service_running(char *pidfile, int *pid); +gf_boolean_t +gf_valid_pid(const char *pid, int length); +int +gf_skip_header_section(int fd, int header_len); struct iatt; struct _dict; gf_boolean_t -dht_is_linkfile (struct iatt *buf, struct _dict *dict); +dht_is_linkfile(struct iatt *buf, struct _dict *dict); int -gf_check_log_format (const char *value); +gf_check_log_format(const char *value); int -gf_check_logger (const char *value); +gf_check_logger(const char *value); gf_boolean_t -gf_compare_sockaddr (const struct sockaddr *addr1, - const struct sockaddr *addr2); +gf_compare_sockaddr(const struct sockaddr *addr1, const struct sockaddr *addr2); char * -gf_backtrace_save (char *buf); +gf_backtrace_save(char *buf); void -gf_backtrace_done (char *buf); +gf_backtrace_done(char *buf); gf_loglevel_t -fop_log_level (glusterfs_fop_t fop, int op_errno); +fop_log_level(glusterfs_fop_t fop, int op_errno); int32_t -gf_build_absolute_path (char *current_path, char *relative_path, char **path); +gf_build_absolute_path(char *current_path, char *relative_path, char **path); int -recursive_rmdir (const char *delete_path); +recursive_rmdir(const char *delete_path); int -gf_get_index_by_elem (char **array, char *elem); +gf_get_index_by_elem(char **array, char *elem); int -glusterfs_is_local_pathinfo (char *pathinfo, gf_boolean_t *local); +glusterfs_is_local_pathinfo(char *pathinfo, gf_boolean_t *local); int -gf_thread_cleanup_xint (pthread_t thread); +gf_thread_cleanup_xint(pthread_t thread); ssize_t -gf_nread (int fd, void *buf, size_t count); +gf_nread(int fd, void *buf, size_t count); ssize_t -gf_nwrite (int fd, const void *buf, size_t count); +gf_nwrite(int fd, const void *buf, size_t count); -void _mask_cancellation (void); -void _unmask_cancellation (void); +void +_mask_cancellation(void); +void +_unmask_cancellation(void); gf_boolean_t -gf_is_zero_filled_stat (struct iatt *buf); +gf_is_zero_filled_stat(struct iatt *buf); void -gf_zero_fill_stat (struct iatt *buf); +gf_zero_fill_stat(struct iatt *buf); gf_boolean_t -gf_is_valid_xattr_namespace (char *k); +gf_is_valid_xattr_namespace(char *k); const char * -gf_inode_type_to_str (ia_type_t type); +gf_inode_type_to_str(ia_type_t type); int32_t -gf_bits_count (uint64_t n); +gf_bits_count(uint64_t n); int32_t -gf_bits_index (uint64_t n); +gf_bits_index(uint64_t n); -const char* -gf_fop_string (glusterfs_fop_t fop); +const char * +gf_fop_string(glusterfs_fop_t fop); int -gf_fop_int (char *fop); +gf_fop_int(char *fop); char * -get_ip_from_addrinfo (struct addrinfo *addr, char **ip); +get_ip_from_addrinfo(struct addrinfo *addr, char **ip); int -close_fds_except (int *fdv, size_t count); +close_fds_except(int *fdv, size_t count); int -gf_getgrouplist (const char *user, gid_t group, gid_t **groups); +gf_getgrouplist(const char *user, gid_t group, gid_t **groups); int -glusterfs_compute_sha256 (const unsigned char *content, size_t size, - char *sha256_hash); -char* -get_struct_variable (int mem_num, gf_gsync_status_t *sts_val); +glusterfs_compute_sha256(const unsigned char *content, size_t size, + char *sha256_hash); +char * +get_struct_variable(int mem_num, gf_gsync_status_t *sts_val); char * -gf_strncpy (char *dest, const char *src, const size_t dest_size); +gf_strncpy(char *dest, const char *src, const size_t dest_size); void -gf_strTrim (char **s); +gf_strTrim(char **s); int -gf_replace_old_iatt_in_dict (struct _dict *); +gf_replace_old_iatt_in_dict(struct _dict *); int -gf_replace_new_iatt_in_dict (struct _dict *); +gf_replace_new_iatt_in_dict(struct _dict *); #endif /* _COMMON_UTILS_H */ diff --git a/libglusterfs/src/compat-errno.h b/libglusterfs/src/compat-errno.h index 5ee1d18f823..c4ab09ab0d5 100644 --- a/libglusterfs/src/compat-errno.h +++ b/libglusterfs/src/compat-errno.h @@ -13,196 +13,201 @@ #include <errno.h> -#define GF_ERROR_CODE_SUCCESS 0 -#define GF_ERROR_CODE_UNKNOWN 1024 -#define GF_ERRNO_UNKNOWN 1024 - -#define GF_ERROR_CODE_PERM 1 /* Operation not permitted */ -#define GF_ERROR_CODE_NOENT 2 /* No such file or directory */ -#define GF_ERROR_CODE_SRCH 3 /* No such process */ -#define GF_ERROR_CODE_INTR 4 /* Interrupted system call */ -#define GF_ERROR_CODE_IO 5 /* I/O error */ -#define GF_ERROR_CODE_NXIO 6 /* No such device or address */ -#define GF_ERROR_CODE_2BIG 7 /* Argument list too long */ -#define GF_ERROR_CODE_NOEXEC 8 /* Exec format error */ -#define GF_ERROR_CODE_BADF 9 /* Bad file number */ -#define GF_ERROR_CODE_CHILD 10 /* No child processes */ -#define GF_ERROR_CODE_AGAIN 11 /* Try again */ -#define GF_ERROR_CODE_NOMEM 12 /* Out of memory */ -#define GF_ERROR_CODE_ACCES 13 /* Permission denied */ -#define GF_ERROR_CODE_FAULT 14 /* Bad address */ -#define GF_ERROR_CODE_NOTBLK 15 /* Block device required */ -#define GF_ERROR_CODE_BUSY 16 /* Device or resource busy */ -#define GF_ERROR_CODE_EXIST 17 /* File exists */ -#define GF_ERROR_CODE_XDEV 18 /* Cross-device link */ -#define GF_ERROR_CODE_NODEV 19 /* No such device */ -#define GF_ERROR_CODE_NOTDIR 20 /* Not a directory */ -#define GF_ERROR_CODE_ISDIR 21 /* Is a directory */ -#define GF_ERROR_CODE_INVAL 22 /* Invalid argument */ -#define GF_ERROR_CODE_NFILE 23 /* File table overflow */ -#define GF_ERROR_CODE_MFILE 24 /* Too many open files */ -#define GF_ERROR_CODE_NOTTY 25 /* Not a typewriter */ -#define GF_ERROR_CODE_TXTBSY 26 /* Text file busy */ -#define GF_ERROR_CODE_FBIG 27 /* File too large */ -#define GF_ERROR_CODE_NOSPC 28 /* No space left on device */ -#define GF_ERROR_CODE_SPIPE 29 /* Illegal seek */ -#define GF_ERROR_CODE_ROFS 30 /* Read-only file system */ -#define GF_ERROR_CODE_MLINK 31 /* Too many links */ -#define GF_ERROR_CODE_PIPE 32 /* Broken pipe */ -#define GF_ERROR_CODE_DOM 33 /* Math argument out of domain of func */ -#define GF_ERROR_CODE_RANGE 34 /* Math result not representable */ -#define GF_ERROR_CODE_DEADLK 35 /* Resource deadlock would occur */ -#define GF_ERROR_CODE_NAMETOOLONG 36 /* File name too long */ -#define GF_ERROR_CODE_NOLCK 37 /* No record locks available */ -#define GF_ERROR_CODE_NOSYS 38 /* Function not implemented */ -#define GF_ERROR_CODE_NOTEMPTY 39 /* Directory not empty */ -#define GF_ERROR_CODE_LOOP 40 /* Too many symbolic links encountered */ - -#define GF_ERROR_CODE_NOMSG 42 /* No message of desired type */ -#define GF_ERROR_CODE_IDRM 43 /* Identifier removed */ -#define GF_ERROR_CODE_CHRNG 44 /* Channel number out of range */ -#define GF_ERROR_CODE_L2NSYNC 45 /* Level 2 not synchronized */ -#define GF_ERROR_CODE_L3HLT 46 /* Level 3 halted */ -#define GF_ERROR_CODE_L3RST 47 /* Level 3 reset */ -#define GF_ERROR_CODE_LNRNG 48 /* Link number out of range */ -#define GF_ERROR_CODE_UNATCH 49 /* Protocol driver not attached */ -#define GF_ERROR_CODE_NOCSI 50 /* No CSI structure available */ -#define GF_ERROR_CODE_L2HLT 51 /* Level 2 halted */ -#define GF_ERROR_CODE_BADE 52 /* Invalid exchange */ -#define GF_ERROR_CODE_BADR 53 /* Invalid request descriptor */ -#define GF_ERROR_CODE_XFULL 54 /* Exchange full */ -#define GF_ERROR_CODE_NOANO 55 /* No anode */ -#define GF_ERROR_CODE_BADRQC 56 /* Invalid request code */ -#define GF_ERROR_CODE_BADSLT 57 /* Invalid slot */ -#define GF_ERROR_CODE_BFONT 59 /* Bad font file format */ -#define GF_ERROR_CODE_NOSTR 60 /* Device not a stream */ -#define GF_ERROR_CODE_NODATA 61 /* No data available */ -#define GF_ERROR_CODE_TIME 62 /* Timer expired */ -#define GF_ERROR_CODE_NOSR 63 /* Out of streams resources */ -#define GF_ERROR_CODE_NONET 64 /* Machine is not on the network */ -#define GF_ERROR_CODE_NOPKG 65 /* Package not installed */ -#define GF_ERROR_CODE_REMOTE 66 /* Object is remote */ -#define GF_ERROR_CODE_NOLINK 67 /* Link has been severed */ -#define GF_ERROR_CODE_ADV 68 /* Advertise error */ -#define GF_ERROR_CODE_SRMNT 69 /* Srmount error */ -#define GF_ERROR_CODE_COMM 70 /* Communication error on send */ -#define GF_ERROR_CODE_PROTO 71 /* Protocol error */ -#define GF_ERROR_CODE_MULTIHOP 72 /* Multihop attempted */ -#define GF_ERROR_CODE_DOTDOT 73 /* RFS specific error */ -#define GF_ERROR_CODE_BADMSG 74 /* Not a data message */ -#define GF_ERROR_CODE_OVERFLOW 75 /* Value too large for defined data type */ -#define GF_ERROR_CODE_NOTUNIQ 76 /* Name not unique on network */ -#define GF_ERROR_CODE_BADFD 77 /* File descriptor in bad state */ -#define GF_ERROR_CODE_REMCHG 78 /* Remote address changed */ -#define GF_ERROR_CODE_LIBACC 79 /* Can not access a needed shared library */ -#define GF_ERROR_CODE_LIBBAD 80 /* Accessing a corrupted shared library */ -#define GF_ERROR_CODE_LIBSCN 81 /* .lib section in a.out corrupted */ -#define GF_ERROR_CODE_LIBMAX 82 /* Attempting to link in too many shared libraries */ -#define GF_ERROR_CODE_LIBEXEC 83 /* Cannot exec a shared library directly */ -#define GF_ERROR_CODE_ILSEQ 84 /* Illegal byte sequence */ -#define GF_ERROR_CODE_RESTART 85 /* Interrupted system call should be restarted */ -#define GF_ERROR_CODE_STRPIPE 86 /* Streams pipe error */ -#define GF_ERROR_CODE_USERS 87 /* Too many users */ -#define GF_ERROR_CODE_NOTSOCK 88 /* Socket operation on non-socket */ -#define GF_ERROR_CODE_DESTADDRREQ 89 /* Destination address required */ -#define GF_ERROR_CODE_MSGSIZE 90 /* Message too long */ -#define GF_ERROR_CODE_PROTOTYPE 91 /* Protocol wrong type for socket */ -#define GF_ERROR_CODE_NOPROTOOPT 92 /* Protocol not available */ -#define GF_ERROR_CODE_PROTONOSUPPORT 93 /* Protocol not supported */ -#define GF_ERROR_CODE_SOCKTNOSUPPORT 94 /* Socket type not supported */ -#define GF_ERROR_CODE_OPNOTSUPP 95 /* Operation not supported on transport endpoint */ -#define GF_ERROR_CODE_PFNOSUPPORT 96 /* Protocol family not supported */ -#define GF_ERROR_CODE_AFNOSUPPORT 97 /* Address family not supported by protocol */ -#define GF_ERROR_CODE_ADDRINUSE 98 /* Address already in use */ -#define GF_ERROR_CODE_ADDRNOTAVAIL 99 /* Cannot assign requested address */ -#define GF_ERROR_CODE_NETDOWN 100 /* Network is down */ -#define GF_ERROR_CODE_NETUNREACH 101 /* Network is unreachable */ -#define GF_ERROR_CODE_NETRESET 102 /* Network dropped connection because of reset */ -#define GF_ERROR_CODE_CONNABORTED 103 /* Software caused connection abort */ -#define GF_ERROR_CODE_CONNRESET 104 /* Connection reset by peer */ -#define GF_ERROR_CODE_NOBUFS 105 /* No buffer space available */ -#define GF_ERROR_CODE_ISCONN 106 /* Transport endpoint is already connected */ -#define GF_ERROR_CODE_NOTCONN 107 /* Transport endpoint is not connected */ -#define GF_ERROR_CODE_SHUTDOWN 108 /* Cannot send after transport endpoint shutdown */ -#define GF_ERROR_CODE_TOOMANYREFS 109 /* Too many references: cannot splice */ -#define GF_ERROR_CODE_TIMEDOUT 110 /* Connection timed out */ -#define GF_ERROR_CODE_CONNREFUSED 111 /* Connection refused */ -#define GF_ERROR_CODE_HOSTDOWN 112 /* Host is down */ -#define GF_ERROR_CODE_HOSTUNREACH 113 /* No route to host */ -#define GF_ERROR_CODE_ALREADY 114 /* Operation already in progress */ -#define GF_ERROR_CODE_INPROGRESS 115 /* Operation now in progress */ -#define GF_ERROR_CODE_ALREADY 114 /* Operation already in progress */ -#define GF_ERROR_CODE_INPROGRESS 115 /* Operation now in progress */ -#define GF_ERROR_CODE_STALE 116 /* Stale NFS file handle */ -#define GF_ERROR_CODE_UCLEAN 117 /* Structure needs cleaning */ -#define GF_ERROR_CODE_NOTNAM 118 /* Not a XENIX named type file */ -#define GF_ERROR_CODE_NAVAIL 119 /* No XENIX semaphores available */ -#define GF_ERROR_CODE_ISNAM 120 /* Is a named type file */ -#define GF_ERROR_CODE_REMOTEIO 121 /* Remote I/O error */ -#define GF_ERROR_CODE_DQUOT 122 /* Quota exceeded */ -#define GF_ERROR_CODE_NOMEDIUM 123 /* No medium found */ -#define GF_ERROR_CODE_MEDIUMTYPE 124 /* Wrong medium type */ -#define GF_ERROR_CODE_CANCELED 125 /* Operation Canceled */ -#define GF_ERROR_CODE_NOKEY 126 /* Required key not available */ -#define GF_ERROR_CODE_KEYEXPIRED 127 /* Key has expired */ -#define GF_ERROR_CODE_KEYREVOKED 128 /* Key has been revoked */ -#define GF_ERROR_CODE_KEYREJECTED 129 /* Key was rejected by service */ +#define GF_ERROR_CODE_SUCCESS 0 +#define GF_ERROR_CODE_UNKNOWN 1024 +#define GF_ERRNO_UNKNOWN 1024 + +#define GF_ERROR_CODE_PERM 1 /* Operation not permitted */ +#define GF_ERROR_CODE_NOENT 2 /* No such file or directory */ +#define GF_ERROR_CODE_SRCH 3 /* No such process */ +#define GF_ERROR_CODE_INTR 4 /* Interrupted system call */ +#define GF_ERROR_CODE_IO 5 /* I/O error */ +#define GF_ERROR_CODE_NXIO 6 /* No such device or address */ +#define GF_ERROR_CODE_2BIG 7 /* Argument list too long */ +#define GF_ERROR_CODE_NOEXEC 8 /* Exec format error */ +#define GF_ERROR_CODE_BADF 9 /* Bad file number */ +#define GF_ERROR_CODE_CHILD 10 /* No child processes */ +#define GF_ERROR_CODE_AGAIN 11 /* Try again */ +#define GF_ERROR_CODE_NOMEM 12 /* Out of memory */ +#define GF_ERROR_CODE_ACCES 13 /* Permission denied */ +#define GF_ERROR_CODE_FAULT 14 /* Bad address */ +#define GF_ERROR_CODE_NOTBLK 15 /* Block device required */ +#define GF_ERROR_CODE_BUSY 16 /* Device or resource busy */ +#define GF_ERROR_CODE_EXIST 17 /* File exists */ +#define GF_ERROR_CODE_XDEV 18 /* Cross-device link */ +#define GF_ERROR_CODE_NODEV 19 /* No such device */ +#define GF_ERROR_CODE_NOTDIR 20 /* Not a directory */ +#define GF_ERROR_CODE_ISDIR 21 /* Is a directory */ +#define GF_ERROR_CODE_INVAL 22 /* Invalid argument */ +#define GF_ERROR_CODE_NFILE 23 /* File table overflow */ +#define GF_ERROR_CODE_MFILE 24 /* Too many open files */ +#define GF_ERROR_CODE_NOTTY 25 /* Not a typewriter */ +#define GF_ERROR_CODE_TXTBSY 26 /* Text file busy */ +#define GF_ERROR_CODE_FBIG 27 /* File too large */ +#define GF_ERROR_CODE_NOSPC 28 /* No space left on device */ +#define GF_ERROR_CODE_SPIPE 29 /* Illegal seek */ +#define GF_ERROR_CODE_ROFS 30 /* Read-only file system */ +#define GF_ERROR_CODE_MLINK 31 /* Too many links */ +#define GF_ERROR_CODE_PIPE 32 /* Broken pipe */ +#define GF_ERROR_CODE_DOM 33 /* Math argument out of domain of func */ +#define GF_ERROR_CODE_RANGE 34 /* Math result not representable */ +#define GF_ERROR_CODE_DEADLK 35 /* Resource deadlock would occur */ +#define GF_ERROR_CODE_NAMETOOLONG 36 /* File name too long */ +#define GF_ERROR_CODE_NOLCK 37 /* No record locks available */ +#define GF_ERROR_CODE_NOSYS 38 /* Function not implemented */ +#define GF_ERROR_CODE_NOTEMPTY 39 /* Directory not empty */ +#define GF_ERROR_CODE_LOOP 40 /* Too many symbolic links encountered */ + +#define GF_ERROR_CODE_NOMSG 42 /* No message of desired type */ +#define GF_ERROR_CODE_IDRM 43 /* Identifier removed */ +#define GF_ERROR_CODE_CHRNG 44 /* Channel number out of range */ +#define GF_ERROR_CODE_L2NSYNC 45 /* Level 2 not synchronized */ +#define GF_ERROR_CODE_L3HLT 46 /* Level 3 halted */ +#define GF_ERROR_CODE_L3RST 47 /* Level 3 reset */ +#define GF_ERROR_CODE_LNRNG 48 /* Link number out of range */ +#define GF_ERROR_CODE_UNATCH 49 /* Protocol driver not attached */ +#define GF_ERROR_CODE_NOCSI 50 /* No CSI structure available */ +#define GF_ERROR_CODE_L2HLT 51 /* Level 2 halted */ +#define GF_ERROR_CODE_BADE 52 /* Invalid exchange */ +#define GF_ERROR_CODE_BADR 53 /* Invalid request descriptor */ +#define GF_ERROR_CODE_XFULL 54 /* Exchange full */ +#define GF_ERROR_CODE_NOANO 55 /* No anode */ +#define GF_ERROR_CODE_BADRQC 56 /* Invalid request code */ +#define GF_ERROR_CODE_BADSLT 57 /* Invalid slot */ +#define GF_ERROR_CODE_BFONT 59 /* Bad font file format */ +#define GF_ERROR_CODE_NOSTR 60 /* Device not a stream */ +#define GF_ERROR_CODE_NODATA 61 /* No data available */ +#define GF_ERROR_CODE_TIME 62 /* Timer expired */ +#define GF_ERROR_CODE_NOSR 63 /* Out of streams resources */ +#define GF_ERROR_CODE_NONET 64 /* Machine is not on the network */ +#define GF_ERROR_CODE_NOPKG 65 /* Package not installed */ +#define GF_ERROR_CODE_REMOTE 66 /* Object is remote */ +#define GF_ERROR_CODE_NOLINK 67 /* Link has been severed */ +#define GF_ERROR_CODE_ADV 68 /* Advertise error */ +#define GF_ERROR_CODE_SRMNT 69 /* Srmount error */ +#define GF_ERROR_CODE_COMM 70 /* Communication error on send */ +#define GF_ERROR_CODE_PROTO 71 /* Protocol error */ +#define GF_ERROR_CODE_MULTIHOP 72 /* Multihop attempted */ +#define GF_ERROR_CODE_DOTDOT 73 /* RFS specific error */ +#define GF_ERROR_CODE_BADMSG 74 /* Not a data message */ +#define GF_ERROR_CODE_OVERFLOW 75 /* Value too large for defined data type */ +#define GF_ERROR_CODE_NOTUNIQ 76 /* Name not unique on network */ +#define GF_ERROR_CODE_BADFD 77 /* File descriptor in bad state */ +#define GF_ERROR_CODE_REMCHG 78 /* Remote address changed */ +#define GF_ERROR_CODE_LIBACC 79 /* Can not access a needed shared library */ +#define GF_ERROR_CODE_LIBBAD 80 /* Accessing a corrupted shared library */ +#define GF_ERROR_CODE_LIBSCN 81 /* .lib section in a.out corrupted */ +#define GF_ERROR_CODE_LIBMAX \ + 82 /* Attempting to link in too many shared libraries */ +#define GF_ERROR_CODE_LIBEXEC 83 /* Cannot exec a shared library directly */ +#define GF_ERROR_CODE_ILSEQ 84 /* Illegal byte sequence */ +#define GF_ERROR_CODE_RESTART \ + 85 /* Interrupted system call should be restarted */ +#define GF_ERROR_CODE_STRPIPE 86 /* Streams pipe error */ +#define GF_ERROR_CODE_USERS 87 /* Too many users */ +#define GF_ERROR_CODE_NOTSOCK 88 /* Socket operation on non-socket */ +#define GF_ERROR_CODE_DESTADDRREQ 89 /* Destination address required */ +#define GF_ERROR_CODE_MSGSIZE 90 /* Message too long */ +#define GF_ERROR_CODE_PROTOTYPE 91 /* Protocol wrong type for socket */ +#define GF_ERROR_CODE_NOPROTOOPT 92 /* Protocol not available */ +#define GF_ERROR_CODE_PROTONOSUPPORT 93 /* Protocol not supported */ +#define GF_ERROR_CODE_SOCKTNOSUPPORT 94 /* Socket type not supported */ +#define GF_ERROR_CODE_OPNOTSUPP \ + 95 /* Operation not supported on transport endpoint */ +#define GF_ERROR_CODE_PFNOSUPPORT 96 /* Protocol family not supported */ +#define GF_ERROR_CODE_AFNOSUPPORT \ + 97 /* Address family not supported by protocol */ +#define GF_ERROR_CODE_ADDRINUSE 98 /* Address already in use */ +#define GF_ERROR_CODE_ADDRNOTAVAIL 99 /* Cannot assign requested address */ +#define GF_ERROR_CODE_NETDOWN 100 /* Network is down */ +#define GF_ERROR_CODE_NETUNREACH 101 /* Network is unreachable */ +#define GF_ERROR_CODE_NETRESET \ + 102 /* Network dropped connection because of reset */ +#define GF_ERROR_CODE_CONNABORTED 103 /* Software caused connection abort */ +#define GF_ERROR_CODE_CONNRESET 104 /* Connection reset by peer */ +#define GF_ERROR_CODE_NOBUFS 105 /* No buffer space available */ +#define GF_ERROR_CODE_ISCONN 106 /* Transport endpoint is already connected */ +#define GF_ERROR_CODE_NOTCONN 107 /* Transport endpoint is not connected */ +#define GF_ERROR_CODE_SHUTDOWN \ + 108 /* Cannot send after transport endpoint shutdown */ +#define GF_ERROR_CODE_TOOMANYREFS 109 /* Too many references: cannot splice */ +#define GF_ERROR_CODE_TIMEDOUT 110 /* Connection timed out */ +#define GF_ERROR_CODE_CONNREFUSED 111 /* Connection refused */ +#define GF_ERROR_CODE_HOSTDOWN 112 /* Host is down */ +#define GF_ERROR_CODE_HOSTUNREACH 113 /* No route to host */ +#define GF_ERROR_CODE_ALREADY 114 /* Operation already in progress */ +#define GF_ERROR_CODE_INPROGRESS 115 /* Operation now in progress */ +#define GF_ERROR_CODE_ALREADY 114 /* Operation already in progress */ +#define GF_ERROR_CODE_INPROGRESS 115 /* Operation now in progress */ +#define GF_ERROR_CODE_STALE 116 /* Stale NFS file handle */ +#define GF_ERROR_CODE_UCLEAN 117 /* Structure needs cleaning */ +#define GF_ERROR_CODE_NOTNAM 118 /* Not a XENIX named type file */ +#define GF_ERROR_CODE_NAVAIL 119 /* No XENIX semaphores available */ +#define GF_ERROR_CODE_ISNAM 120 /* Is a named type file */ +#define GF_ERROR_CODE_REMOTEIO 121 /* Remote I/O error */ +#define GF_ERROR_CODE_DQUOT 122 /* Quota exceeded */ +#define GF_ERROR_CODE_NOMEDIUM 123 /* No medium found */ +#define GF_ERROR_CODE_MEDIUMTYPE 124 /* Wrong medium type */ +#define GF_ERROR_CODE_CANCELED 125 /* Operation Canceled */ +#define GF_ERROR_CODE_NOKEY 126 /* Required key not available */ +#define GF_ERROR_CODE_KEYEXPIRED 127 /* Key has expired */ +#define GF_ERROR_CODE_KEYREVOKED 128 /* Key has been revoked */ +#define GF_ERROR_CODE_KEYREJECTED 129 /* Key was rejected by service */ /* for robust mutexes */ -#define GF_ERROR_CODE_OWNERDEAD 130 /* Owner died */ -#define GF_ERROR_CODE_NOTRECOVERABLE 131 /* State not recoverable */ - - +#define GF_ERROR_CODE_OWNERDEAD 130 /* Owner died */ +#define GF_ERROR_CODE_NOTRECOVERABLE 131 /* State not recoverable */ /* Should never be seen by user programs */ -#define GF_ERROR_CODE_RESTARTSYS 512 -#define GF_ERROR_CODE_RESTARTNOINTR 513 -#define GF_ERROR_CODE_RESTARTNOHAND 514 /* restart if no handler.. */ -#define GF_ERROR_CODE_NOIOCTLCMD 515 /* No ioctl command */ -#define GF_ERROR_CODE_RESTART_RESTARTBLOCK 516 /* restart by calling sys_restart_syscall */ +#define GF_ERROR_CODE_RESTARTSYS 512 +#define GF_ERROR_CODE_RESTARTNOINTR 513 +#define GF_ERROR_CODE_RESTARTNOHAND 514 /* restart if no handler.. */ +#define GF_ERROR_CODE_NOIOCTLCMD 515 /* No ioctl command */ +#define GF_ERROR_CODE_RESTART_RESTARTBLOCK \ + 516 /* restart by calling sys_restart_syscall */ /* Defined for the NFSv3 protocol */ -#define GF_ERROR_CODE_BADHANDLE 521 /* Illegal NFS file handle */ -#define GF_ERROR_CODE_NOTSYNC 522 /* Update synchronization mismatch */ -#define GF_ERROR_CODE_BADCOOKIE 523 /* Cookie is stale */ -#define GF_ERROR_CODE_NOTSUPP 524 /* Operation is not supported */ -#define GF_ERROR_CODE_TOOSMALL 525 /* Buffer or request is too small */ -#define GF_ERROR_CODE_SERVERFAULT 526 /* An untranslatable error occurred */ -#define GF_ERROR_CODE_BADTYPE 527 /* Type not supported by server */ -#define GF_ERROR_CODE_JUKEBOX 528 /* Request initiated, but will not complete before timeout */ -#define GF_ERROR_CODE_IOCBQUEUED 529 /* iocb queued, will get completion event */ -#define GF_ERROR_CODE_IOCBRETRY 530 /* iocb queued, will trigger a retry */ +#define GF_ERROR_CODE_BADHANDLE 521 /* Illegal NFS file handle */ +#define GF_ERROR_CODE_NOTSYNC 522 /* Update synchronization mismatch */ +#define GF_ERROR_CODE_BADCOOKIE 523 /* Cookie is stale */ +#define GF_ERROR_CODE_NOTSUPP 524 /* Operation is not supported */ +#define GF_ERROR_CODE_TOOSMALL 525 /* Buffer or request is too small */ +#define GF_ERROR_CODE_SERVERFAULT 526 /* An untranslatable error occurred */ +#define GF_ERROR_CODE_BADTYPE 527 /* Type not supported by server */ +#define GF_ERROR_CODE_JUKEBOX \ + 528 /* Request initiated, but will not complete before timeout */ +#define GF_ERROR_CODE_IOCBQUEUED \ + 529 /* iocb queued, will get completion event */ +#define GF_ERROR_CODE_IOCBRETRY 530 /* iocb queued, will trigger a retry */ /* Darwin OS X */ -#define GF_ERROR_CODE_NOPOLICY 701 -#define GF_ERROR_CODE_BADMACHO 702 -#define GF_ERROR_CODE_PWROFF 703 -#define GF_ERROR_CODE_DEVERR 704 -#define GF_ERROR_CODE_BADARCH 705 -#define GF_ERROR_CODE_BADEXEC 706 -#define GF_ERROR_CODE_SHLIBVERS 707 - - +#define GF_ERROR_CODE_NOPOLICY 701 +#define GF_ERROR_CODE_BADMACHO 702 +#define GF_ERROR_CODE_PWROFF 703 +#define GF_ERROR_CODE_DEVERR 704 +#define GF_ERROR_CODE_BADARCH 705 +#define GF_ERROR_CODE_BADEXEC 706 +#define GF_ERROR_CODE_SHLIBVERS 707 /* Solaris */ /* ENOTACTIVE 73 / * Facility is not active */ -#define GF_ERROR_CODE_NOTACTIVE 801 +#define GF_ERROR_CODE_NOTACTIVE 801 /* ELOCKUNMAPPED 72 / * locked lock was unmapped */ #define GF_ERROR_CODE_LOCKUNMAPPED 802 /* BSD system */ -#define GF_ERROR_CODE_PROCLIM 901 /* Too many processes */ -#define GF_ERROR_CODE_BADRPC 902 /* RPC struct is bad */ -#define GF_ERROR_CODE_RPCMISMATCH 903 /* RPC version wrong */ -#define GF_ERROR_CODE_PROGUNAVAIL 904 /* RPC prog. not avail */ -#define GF_ERROR_CODE_PROGMISMATCH 905 /* Program version wrong */ -#define GF_ERROR_CODE_PROCUNAVAIL 905 /* Bad procedure for program */ -#define GF_ERROR_CODE_FTYPE 906 /* Inappropriate file type or format */ -#define GF_ERROR_CODE_AUTH 907 /* Authentication error */ -#define GF_ERROR_CODE_NEEDAUTH 908 /* Need authenticator */ -#define GF_ERROR_CODE_DOOFUS 909 /* Programming error */ - -#define GF_ERROR_CODE_NOATTR GF_ERROR_CODE_NODATA /* Attribute not found */ +#define GF_ERROR_CODE_PROCLIM 901 /* Too many processes */ +#define GF_ERROR_CODE_BADRPC 902 /* RPC struct is bad */ +#define GF_ERROR_CODE_RPCMISMATCH 903 /* RPC version wrong */ +#define GF_ERROR_CODE_PROGUNAVAIL 904 /* RPC prog. not avail */ +#define GF_ERROR_CODE_PROGMISMATCH 905 /* Program version wrong */ +#define GF_ERROR_CODE_PROCUNAVAIL 905 /* Bad procedure for program */ +#define GF_ERROR_CODE_FTYPE 906 /* Inappropriate file type or format */ +#define GF_ERROR_CODE_AUTH 907 /* Authentication error */ +#define GF_ERROR_CODE_NEEDAUTH 908 /* Need authenticator */ +#define GF_ERROR_CODE_DOOFUS 909 /* Programming error */ + +#define GF_ERROR_CODE_NOATTR GF_ERROR_CODE_NODATA /* Attribute not found */ /* Either one of enodata or enoattr will be there in system */ #ifndef ENOATTR @@ -225,7 +230,9 @@ /* These functions are defined for all the OS flags, but content will * be different for each OS flag. */ -int32_t gf_errno_to_error (int32_t op_errno); -int32_t gf_error_to_errno (int32_t error); +int32_t +gf_errno_to_error(int32_t op_errno); +int32_t +gf_error_to_errno(int32_t error); #endif /* __COMPAT_ERRNO_H__ */ diff --git a/libglusterfs/src/compat-uuid.h b/libglusterfs/src/compat-uuid.h index 2e66117ce1f..6bce6d033d0 100644 --- a/libglusterfs/src/compat-uuid.h +++ b/libglusterfs/src/compat-uuid.h @@ -16,45 +16,45 @@ #include <uuid.h> static inline void -gf_uuid_clear (uuid_t uuid) +gf_uuid_clear(uuid_t uuid) { - uuid_clear (uuid); + uuid_clear(uuid); } static inline int -gf_uuid_compare (uuid_t u1, uuid_t u2) +gf_uuid_compare(uuid_t u1, uuid_t u2) { - return uuid_compare (u1, u2); + return uuid_compare(u1, u2); } static inline void -gf_uuid_copy (uuid_t dst, const uuid_t src) +gf_uuid_copy(uuid_t dst, const uuid_t src) { - uuid_copy (dst, src); + uuid_copy(dst, src); } static inline void -gf_uuid_generate (uuid_t uuid) +gf_uuid_generate(uuid_t uuid) { - uuid_generate (uuid); + uuid_generate(uuid); } static inline int -gf_uuid_is_null (uuid_t uuid) +gf_uuid_is_null(uuid_t uuid) { - return uuid_is_null (uuid); + return uuid_is_null(uuid); } static inline int -gf_uuid_parse (const char *in, uuid_t uuid) +gf_uuid_parse(const char *in, uuid_t uuid) { - return uuid_parse (in, uuid); + return uuid_parse(in, uuid); } static inline void -gf_uuid_unparse (const uuid_t uuid, char *out) +gf_uuid_unparse(const uuid_t uuid, char *out) { - uuid_unparse (uuid, out); + uuid_unparse(uuid, out); } #elif defined(__FreeBSD__) diff --git a/libglusterfs/src/compat.h b/libglusterfs/src/compat.h index e0ffe73926a..38c07b5ae7c 100644 --- a/libglusterfs/src/compat.h +++ b/libglusterfs/src/compat.h @@ -15,8 +15,7 @@ #ifndef LLONG_MAX #define LLONG_MAX __LONG_LONG_MAX__ /* compat with old gcc */ -#endif /* LLONG_MAX */ - +#endif /* LLONG_MAX */ #ifdef GF_LINUX_HOST_OS @@ -38,7 +37,7 @@ #ifndef _PATH_UMOUNT #define _PATH_UMOUNT "/bin/umount" #endif -#define GF_XATTR_NAME_MAX XATTR_NAME_MAX +#define GF_XATTR_NAME_MAX XATTR_NAME_MAX #endif /* GF_LINUX_HOST_OS */ #ifdef HAVE_XATTR_H @@ -51,19 +50,19 @@ */ #ifndef FALLOC_FL_KEEP_SIZE -#define FALLOC_FL_KEEP_SIZE 0x01 /* default is extend size */ +#define FALLOC_FL_KEEP_SIZE 0x01 /* default is extend size */ #endif #ifndef FALLOC_FL_PUNCH_HOLE -#define FALLOC_FL_PUNCH_HOLE 0x02 /* de-allocates range */ +#define FALLOC_FL_PUNCH_HOLE 0x02 /* de-allocates range */ #endif #ifndef FALLOC_FL_ZERO_RANGE -#define FALLOC_FL_ZERO_RANGE 0x10 /* zeroes out range */ +#define FALLOC_FL_ZERO_RANGE 0x10 /* zeroes out range */ #endif #ifndef FALLOC_FL_COLLAPSE_RANGE -#define FALLOC_FL_COLLAPSE_RANGE 0x08 /* reduces the size */ +#define FALLOC_FL_COLLAPSE_RANGE 0x08 /* reduces the size */ #endif #ifndef FALLOC_FL_INSERT_RANGE -#define FALLOC_FL_INSERT_RANGE 0x20 /* expands the size */ +#define FALLOC_FL_INSERT_RANGE 0x20 /* expands the size */ #endif #ifndef HAVE_LLISTXATTR @@ -72,14 +71,14 @@ * 'llistxattr()' system calls. */ -#define lremovexattr(path,key) removexattr(path,key) -#define llistxattr(path,key,size) listxattr(path,key,size) -#define lgetxattr(path, key, value, size) getxattr(path,key,value,size) -#define lsetxattr(path,key,value,size,flags) setxattr(path,key,value,size,flags) +#define lremovexattr(path, key) removexattr(path, key) +#define llistxattr(path, key, size) listxattr(path, key, size) +#define lgetxattr(path, key, value, size) getxattr(path, key, value, size) +#define lsetxattr(path, key, value, size, flags) \ + setxattr(path, key, value, size, flags) #endif /* HAVE_LLISTXATTR */ - #ifdef GF_DARWIN_HOST_OS #include <machine/endian.h> #include <libkern/OSByteOrder.h> @@ -102,7 +101,6 @@ #endif - #ifdef GF_BSD_HOST_OS /* In case of FreeBSD and NetBSD */ @@ -121,14 +119,13 @@ #ifndef XATTR_CREATE enum { - ATTR_CREATE = 1, + ATTR_CREATE = 1, #define XATTR_CREATE ATTR_CREATE - ATTR_REPLACE = 2 + ATTR_REPLACE = 2 #define XATTR_REPLACE ATTR_REPLACE }; #endif /* XATTR_CREATE */ - #ifndef sighandler_t #define sighandler_t sig_t #endif @@ -141,11 +138,11 @@ enum { /* Using NAME_MAX since EXTATTR_MAXNAMELEN is inside a preprocessor conditional * for the kernel */ -#define GF_XATTR_NAME_MAX NAME_MAX +#define GF_XATTR_NAME_MAX NAME_MAX #endif /* __FreeBSD__ */ #ifdef __NetBSD__ -#define GF_XATTR_NAME_MAX XATTR_NAME_MAX +#define GF_XATTR_NAME_MAX XATTR_NAME_MAX #endif #ifndef ino64_t @@ -169,28 +166,29 @@ enum { #endif /* Posix dictates NAME_MAX to be used */ -# ifndef NAME_MAX -# ifdef MAXNAMLEN -# define NAME_MAX MAXNAMLEN -# else -# define NAME_MAX 255 -# endif -# endif - -#define F_GETLK64 F_GETLK -#define F_SETLK64 F_SETLK -#define F_SETLKW64 F_SETLKW -#define FALLOC_FL_KEEP_SIZE 0x01 /* default is extend size */ -#define FALLOC_FL_PUNCH_HOLE 0x02 /* de-allocates range */ -#define FALLOC_FL_ZERO_RANGE 0x10 /* zeroes out range */ -#define FALLOC_FL_INSERT_RANGE 0x20 /* Expands the size */ +#ifndef NAME_MAX +#ifdef MAXNAMLEN +#define NAME_MAX MAXNAMLEN +#else +#define NAME_MAX 255 +#endif +#endif + +#define F_GETLK64 F_GETLK +#define F_SETLK64 F_SETLK +#define F_SETLKW64 F_SETLKW +#define FALLOC_FL_KEEP_SIZE 0x01 /* default is extend size */ +#define FALLOC_FL_PUNCH_HOLE 0x02 /* de-allocates range */ +#define FALLOC_FL_ZERO_RANGE 0x10 /* zeroes out range */ +#define FALLOC_FL_INSERT_RANGE 0x20 /* Expands the size */ #define FALLOC_FL_COLLAPSE_RANGE 0x08 /* Reduces the size */ #ifndef _PATH_UMOUNT - #define _PATH_UMOUNT "/sbin/umount" +#define _PATH_UMOUNT "/sbin/umount" #endif -void gf_extattr_list_reshape(char *list, ssize_t size); +void +gf_extattr_list_reshape(char *list, ssize_t size); #endif /* GF_BSD_HOST_OS */ @@ -226,14 +224,12 @@ void gf_extattr_list_reshape(char *list, ssize_t size); #include <libgen.h> - #if __DARWIN_64_BIT_INO_T == 0 -# error '64 bit ino_t is must for GlusterFS to work, Compile with "CFLAGS=-D__DARWIN_64_BIT_INO_T"' +#error '64 bit ino_t is must for GlusterFS to work, Compile with "CFLAGS=-D__DARWIN_64_BIT_INO_T"' #endif /* __DARWIN_64_BIT_INO_T */ - #if __DARWIN_64_BIT_INO_T == 0 -# error '64 bit ino_t is must for GlusterFS to work, Compile with "CFLAGS=-D__DARWIN_64_BIT_INO_T"' +#error '64 bit ino_t is must for GlusterFS to work, Compile with "CFLAGS=-D__DARWIN_64_BIT_INO_T"' #endif /* __DARWIN_64_BIT_INO_T */ #ifndef sighandler_t @@ -253,24 +249,24 @@ void gf_extattr_list_reshape(char *list, ssize_t size); #endif /* Posix dictates NAME_MAX to be used */ -# ifndef NAME_MAX -# ifdef MAXNAMLEN -# define NAME_MAX MAXNAMLEN -# else -# define NAME_MAX 255 -# endif -# endif - -#define F_GETLK64 F_GETLK -#define F_SETLK64 F_SETLK -#define F_SETLKW64 F_SETLKW +#ifndef NAME_MAX +#ifdef MAXNAMLEN +#define NAME_MAX MAXNAMLEN +#else +#define NAME_MAX 255 +#endif +#endif + +#define F_GETLK64 F_GETLK +#define F_SETLK64 F_SETLK +#define F_SETLKW64 F_SETLKW #ifndef FTW_CONTINUE - #define FTW_CONTINUE 0 +#define FTW_CONTINUE 0 #endif #ifndef _PATH_UMOUNT - #define _PATH_UMOUNT "/sbin/umount" +#define _PATH_UMOUNT "/sbin/umount" #endif #endif /* GF_DARWIN_HOST_OS */ @@ -291,107 +287,120 @@ void gf_extattr_list_reshape(char *list, ssize_t size); #define lchmod chmod #endif -#define lgetxattr(path, key, value, size) solaris_getxattr(path,key,value,size) +#define lgetxattr(path, key, value, size) \ + solaris_getxattr(path, key, value, size) enum { - ATTR_CREATE = 1, + ATTR_CREATE = 1, #define XATTR_CREATE ATTR_CREATE - ATTR_REPLACE = 2 + ATTR_REPLACE = 2 #define XATTR_REPLACE ATTR_REPLACE }; /* This patch is not present in Solaris 10 and before */ #ifndef dirfd -#define dirfd(dirp) ((dirp)->dd_fd) +#define dirfd(dirp) ((dirp)->dd_fd) #endif /* Posix dictates NAME_MAX to be used */ -# ifndef NAME_MAX -# ifdef MAXNAMLEN -# define NAME_MAX MAXNAMLEN -# else -# define NAME_MAX 255 -# endif -# endif +#ifndef NAME_MAX +#ifdef MAXNAMLEN +#define NAME_MAX MAXNAMLEN +#else +#define NAME_MAX 255 +#endif +#endif #include <netinet/in.h> #ifndef s6_addr16 -#define S6_ADDR16(x) ((uint16_t*) ((char*)&(x).s6_addr)) +#define S6_ADDR16(x) ((uint16_t *)((char *)&(x).s6_addr)) #endif #ifndef s6_addr32 -#define s6_addr32 _S6_un._S6_u32 +#define s6_addr32 _S6_un._S6_u32 #endif -#define lutimes(filename,times) utimes(filename,times) +#define lutimes(filename, times) utimes(filename, times) #ifndef SEEK_SET #define SEEK_SET 0 #endif enum { - DT_UNKNOWN = 0, -# define DT_UNKNOWN DT_UNKNOWN - DT_FIFO = 1, -# define DT_FIFO DT_FIFO - DT_CHR = 2, -# define DT_CHR DT_CHR - DT_DIR = 4, -# define DT_DIR DT_DIR - DT_BLK = 6, -# define DT_BLK DT_BLK - DT_REG = 8, -# define DT_REG DT_REG - DT_LNK = 10, -# define DT_LNK DT_LNK - DT_SOCK = 12, -# define DT_SOCK DT_SOCK - DT_WHT = 14 -# define DT_WHT DT_WHT + DT_UNKNOWN = 0, +#define DT_UNKNOWN DT_UNKNOWN + DT_FIFO = 1, +#define DT_FIFO DT_FIFO + DT_CHR = 2, +#define DT_CHR DT_CHR + DT_DIR = 4, +#define DT_DIR DT_DIR + DT_BLK = 6, +#define DT_BLK DT_BLK + DT_REG = 8, +#define DT_REG DT_REG + DT_LNK = 10, +#define DT_LNK DT_LNK + DT_SOCK = 12, +#define DT_SOCK DT_SOCK + DT_WHT = 14 +#define DT_WHT DT_WHT }; #ifndef _PATH_MOUNTED - #define _PATH_MOUNTED "/etc/mtab" +#define _PATH_MOUNTED "/etc/mtab" #endif #ifndef _PATH_UMOUNT - #define _PATH_UMOUNT "/sbin/umount" +#define _PATH_UMOUNT "/sbin/umount" #endif #ifndef O_ASYNC - #ifdef FASYNC - #define O_ASYNC FASYNC - #else - #define O_ASYNC 0 - #endif +#ifdef FASYNC +#define O_ASYNC FASYNC +#else +#define O_ASYNC 0 #endif - -#ifndef FTW_CONTINUE - #define FTW_CONTINUE 0 #endif -int asprintf(char **string_ptr, const char *format, ...); - -int vasprintf (char **result, const char *format, va_list args); -char* strsep(char** str, const char* delims); -int solaris_listxattr(const char *path, char *list, size_t size); -int solaris_removexattr(const char *path, const char* key); -int solaris_getxattr(const char *path, const char* key, - char *value, size_t size); -int solaris_setxattr(const char *path, const char* key, const char *value, - size_t size, int flags); -int solaris_fgetxattr(int fd, const char* key, - char *value, size_t size); -int solaris_fsetxattr(int fd, const char* key, const char *value, - size_t size, int flags); -int solaris_flistxattr(int fd, char *list, size_t size); - -int solaris_rename (const char *oldpath, const char *newpath); - -int solaris_unlink (const char *pathname); - -char *mkdtemp (char *temp); +#ifndef FTW_CONTINUE +#define FTW_CONTINUE 0 +#endif + +int +asprintf(char **string_ptr, const char *format, ...); + +int +vasprintf(char **result, const char *format, va_list args); +char * +strsep(char **str, const char *delims); +int +solaris_listxattr(const char *path, char *list, size_t size); +int +solaris_removexattr(const char *path, const char *key); +int +solaris_getxattr(const char *path, const char *key, char *value, size_t size); +int +solaris_setxattr(const char *path, const char *key, const char *value, + size_t size, int flags); +int +solaris_fgetxattr(int fd, const char *key, char *value, size_t size); +int +solaris_fsetxattr(int fd, const char *key, const char *value, size_t size, + int flags); +int +solaris_flistxattr(int fd, char *list, size_t size); + +int +solaris_rename(const char *oldpath, const char *newpath); + +int +solaris_unlink(const char *pathname); + +char * +mkdtemp(char *temp); #define GF_SOLARIS_XATTR_DIR ".glusterfs_xattr_inode" -int solaris_xattr_resolve_path (const char *real_path, char **path); +int +solaris_xattr_resolve_path(const char *real_path, char **path); #endif /* GF_SOLARIS_HOST_OS */ @@ -402,52 +411,54 @@ int solaris_xattr_resolve_path (const char *real_path, char **path); #endif /* HAVE_ARGP */ #ifndef HAVE_STRNLEN -size_t strnlen(const char *string, size_t maxlen); +size_t +strnlen(const char *string, size_t maxlen); #endif /* STRNLEN */ #ifndef strdupa -#define strdupa(s) \ - (__extension__ \ - ({ \ - __const char *__old = (s); \ - size_t __len = strlen (__old) + 1; \ - char *__new = (char *) __builtin_alloca (__len); \ - (char *) memcpy (__new, __old, __len); \ - })) +#define strdupa(s) \ + (__extension__({ \ + __const char *__old = (s); \ + size_t __len = strlen(__old) + 1; \ + char *__new = (char *)__builtin_alloca(__len); \ + (char *)memcpy(__new, __old, __len); \ + })) #endif -#define GF_DIR_ALIGN(x) (((x) + sizeof (uint64_t) - 1) & ~(sizeof (uint64_t) - 1)) +#define GF_DIR_ALIGN(x) (((x) + sizeof(uint64_t) - 1) & ~(sizeof(uint64_t) - 1)) #include <sys/types.h> #include <dirent.h> static inline int32_t -dirent_size (struct dirent *entry) +dirent_size(struct dirent *entry) { - int32_t size = -1; + int32_t size = -1; #ifdef GF_BSD_HOST_OS - size = GF_DIR_ALIGN (24 /* FIX MEEEE!!! */ + entry->d_namlen); + size = GF_DIR_ALIGN(24 /* FIX MEEEE!!! */ + entry->d_namlen); #endif #ifdef GF_DARWIN_HOST_OS - size = GF_DIR_ALIGN (24 /* FIX MEEEE!!! */ + entry->d_namlen); + size = GF_DIR_ALIGN(24 /* FIX MEEEE!!! */ + entry->d_namlen); #endif #ifdef GF_LINUX_HOST_OS - size = GF_DIR_ALIGN (24 /* FIX MEEEE!!! */ + entry->d_reclen); + size = GF_DIR_ALIGN(24 /* FIX MEEEE!!! */ + entry->d_reclen); #endif #ifdef GF_SOLARIS_HOST_OS - size = GF_DIR_ALIGN (24 /* FIX MEEEE!!! */ + entry->d_reclen); + size = GF_DIR_ALIGN(24 /* FIX MEEEE!!! */ + entry->d_reclen); #endif - return size; + return size; } #ifdef THREAD_UNSAFE_BASENAME -char *basename_r(const char *); +char * +basename_r(const char *); #define basename(path) basename_r(path) #endif /* THREAD_UNSAFE_BASENAME */ #ifdef THREAD_UNSAFE_DIRNAME -char *dirname_r(char *path); +char * +dirname_r(char *path); #define dirname(path) dirname_r(path) #endif /* THREAD_UNSAFE_DIRNAME */ @@ -483,9 +494,15 @@ char *dirname_r(char *path); #define ST_ATIM_NSEC(stbuf) (0) #define ST_CTIM_NSEC(stbuf) (0) #define ST_MTIM_NSEC(stbuf) (0) -#define ST_ATIM_NSEC_SET(stbuf, val) do { } while (0); -#define ST_MTIM_NSEC_SET(stbuf, val) do { } while (0); -#define ST_CTIM_NSEC_SET(stbuf, val) do { } while (0); +#define ST_ATIM_NSEC_SET(stbuf, val) \ + do { \ + } while (0); +#define ST_MTIM_NSEC_SET(stbuf, val) \ + do { \ + } while (0); +#define ST_CTIM_NSEC_SET(stbuf, val) \ + do { \ + } while (0); #endif #ifdef GF_BSD_HOST_OS @@ -495,11 +512,12 @@ char *dirname_r(char *path); #if defined(__GNUC__) && !defined(RELAX_POISONING) /* Use run API, see run.h */ #include <stdlib.h> /* system(), mkostemp() */ -#include <stdio.h> /* popen() */ +#include <stdio.h> /* popen() */ #pragma GCC poison system mkostemp popen #endif -int gf_umount_lazy(char *xlname, char *path, int rmdir); +int +gf_umount_lazy(char *xlname, char *path, int rmdir); #ifndef GF_XATTR_NAME_MAX #error 'Please define GF_XATTR_NAME_MAX for your OS distribution.' diff --git a/libglusterfs/src/compound-fop-utils.h b/libglusterfs/src/compound-fop-utils.h index bfd0649aef2..23a2f0df3fd 100644 --- a/libglusterfs/src/compound-fop-utils.h +++ b/libglusterfs/src/compound-fop-utils.h @@ -16,20 +16,21 @@ #include "mem-types.h" #include "dict.h" -#define COMPOUND_PACK_ARGS(fop, fop_enum, args, counter, params ...) do { \ - args->enum_list[counter] = fop_enum; \ - args_##fop##_store (&args->req_list[counter], params); \ -} while (0) +#define COMPOUND_PACK_ARGS(fop, fop_enum, args, counter, params...) \ + do { \ + args->enum_list[counter] = fop_enum; \ + args_##fop##_store(&args->req_list[counter], params); \ + } while (0) -compound_args_t* -compound_fop_alloc (int length, glusterfs_compound_fop_t fop, dict_t *xdata); +compound_args_t * +compound_fop_alloc(int length, glusterfs_compound_fop_t fop, dict_t *xdata); void -compound_args_cleanup (compound_args_t *args); +compound_args_cleanup(compound_args_t *args); void -compound_args_cbk_cleanup (compound_args_cbk_t *args_cbk); +compound_args_cbk_cleanup(compound_args_cbk_t *args_cbk); -compound_args_cbk_t* -compound_args_cbk_alloc (int length, dict_t *xdata); +compound_args_cbk_t * +compound_args_cbk_alloc(int length, dict_t *xdata); #endif /* __COMPOUND_FOP_UTILS_H__ */ diff --git a/libglusterfs/src/daemon.h b/libglusterfs/src/daemon.h index 95e134b78b0..48850800b5e 100644 --- a/libglusterfs/src/daemon.h +++ b/libglusterfs/src/daemon.h @@ -13,6 +13,8 @@ #define DEVNULLPATH "/dev/null" -int os_daemon_return(int nochdir, int noclose); -int os_daemon(int nochdir, int noclose); +int +os_daemon_return(int nochdir, int noclose); +int +os_daemon(int nochdir, int noclose); #endif /*_DAEMON_H */ diff --git a/libglusterfs/src/default-args.h b/libglusterfs/src/default-args.h index 7d46fefa663..e5915c4c05e 100644 --- a/libglusterfs/src/default-args.h +++ b/libglusterfs/src/default-args.h @@ -18,484 +18,427 @@ #include "xlator.h" int -args_lookup_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, - inode_t *inode, struct iatt *buf, - dict_t *xdata, struct iatt *postparent); - - -int -args_stat_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, - struct iatt *buf, dict_t *xdata); +args_lookup_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, inode_t *inode, struct iatt *buf, + dict_t *xdata, struct iatt *postparent); int -args_fstat_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, +args_stat_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno, struct iatt *buf, dict_t *xdata); int -args_truncate_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, struct iatt *prebuf, - struct iatt *postbuf, dict_t *xdata); - +args_fstat_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno, + struct iatt *buf, dict_t *xdata); int -args_ftruncate_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, struct iatt *prebuf, +args_truncate_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, struct iatt *prebuf, struct iatt *postbuf, dict_t *xdata); +int +args_ftruncate_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, struct iatt *prebuf, + struct iatt *postbuf, dict_t *xdata); int -args_access_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, dict_t *xdata); +args_access_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, dict_t *xdata); +int +args_readlink_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, const char *path, struct iatt *stbuf, + dict_t *xdata); int -args_readlink_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, - const char *path, struct iatt *stbuf, dict_t *xdata); +args_mknod_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno, + inode_t *inode, struct iatt *buf, struct iatt *preparent, + struct iatt *postparent, dict_t *xdata); int -args_mknod_cbk_store (default_args_cbk_t *args, int32_t op_ret, - int32_t op_errno, inode_t *inode, struct iatt *buf, - struct iatt *preparent, struct iatt *postparent, - dict_t *xdata); +args_mkdir_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno, + inode_t *inode, struct iatt *buf, struct iatt *preparent, + struct iatt *postparent, dict_t *xdata); int -args_mkdir_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, inode_t *inode, - struct iatt *buf, struct iatt *preparent, - struct iatt *postparent, dict_t *xdata); +args_unlink_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, struct iatt *preparent, + struct iatt *postparent, dict_t *xdata); int -args_unlink_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, +args_rmdir_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno, struct iatt *preparent, struct iatt *postparent, dict_t *xdata); int -args_rmdir_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, - struct iatt *preparent, struct iatt *postparent, - dict_t *xdata); +args_symlink_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, inode_t *inode, struct iatt *buf, + struct iatt *preparent, struct iatt *postparent, + dict_t *xdata); int -args_symlink_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, - inode_t *inode, struct iatt *buf, - struct iatt *preparent, struct iatt *postparent, +args_rename_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, struct iatt *buf, + struct iatt *preoldparent, struct iatt *postoldparent, + struct iatt *prenewparent, struct iatt *postnewparent, dict_t *xdata); - int -args_rename_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, struct iatt *buf, - struct iatt *preoldparent, struct iatt *postoldparent, - struct iatt *prenewparent, struct iatt *postnewparent, - dict_t *xdata); +args_link_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno, + inode_t *inode, struct iatt *buf, struct iatt *preparent, + struct iatt *postparent, dict_t *xdata); int -args_link_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, - inode_t *inode, struct iatt *buf, - struct iatt *preparent, struct iatt *postparent, - dict_t *xdata); +args_create_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, fd_t *fd, inode_t *inode, + struct iatt *buf, struct iatt *preparent, + struct iatt *postparent, dict_t *xdata); int -args_create_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, - fd_t *fd, inode_t *inode, struct iatt *buf, - struct iatt *preparent, struct iatt *postparent, - dict_t *xdata); +args_open_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno, + fd_t *fd, dict_t *xdata); int -args_open_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, - fd_t *fd, dict_t *xdata); +args_readv_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno, + struct iovec *vector, int32_t count, struct iatt *stbuf, + struct iobref *iobref, dict_t *xdata); int -args_readv_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, struct iovec *vector, - int32_t count, struct iatt *stbuf, - struct iobref *iobref, dict_t *xdata); +args_writev_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, struct iatt *prebuf, + struct iatt *postbuf, dict_t *xdata); int -args_writev_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, - struct iatt *prebuf, struct iatt *postbuf, dict_t *xdata); +args_put_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno, + inode_t *inode, struct iatt *buf, struct iatt *preparent, + struct iatt *postparent, dict_t *xdata); int -args_put_cbk_store (default_args_cbk_t *args, int32_t op_ret, int32_t op_errno, - inode_t *inode, struct iatt *buf, struct iatt *preparent, - struct iatt *postparent, dict_t *xdata); +args_flush_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno, + dict_t *xdata); int -args_flush_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, dict_t *xdata); - +args_fsync_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno, + struct iatt *prebuf, struct iatt *postbuf, dict_t *xdata); int -args_fsync_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, - struct iatt *prebuf, struct iatt *postbuf, dict_t *xdata); +args_opendir_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, fd_t *fd, dict_t *xdata); int -args_opendir_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, - fd_t *fd, dict_t *xdata); +args_fsyncdir_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, dict_t *xdata); int -args_fsyncdir_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, dict_t *xdata); +args_statfs_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, struct statvfs *buf, dict_t *xdata); int -args_statfs_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, - struct statvfs *buf, dict_t *xdata); +args_setxattr_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, dict_t *xdata); int -args_setxattr_cbk_store (default_args_cbk_t *args, - int32_t op_ret, - int32_t op_errno, dict_t *xdata); +args_getxattr_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, dict_t *dict, dict_t *xdata); int -args_getxattr_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, - dict_t *dict, dict_t *xdata); +args_fsetxattr_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, dict_t *xdata); int -args_fsetxattr_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, dict_t *xdata); +args_fgetxattr_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, dict_t *dict, dict_t *xdata); int -args_fgetxattr_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, - dict_t *dict, dict_t *xdata); +args_removexattr_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, dict_t *xdata); int -args_removexattr_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, dict_t *xdata); +args_fremovexattr_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, dict_t *xdata); int -args_fremovexattr_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, dict_t *xdata); +args_lk_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno, + struct gf_flock *lock, dict_t *xdata); int -args_lk_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, - struct gf_flock *lock, dict_t *xdata); - +args_inodelk_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, dict_t *xdata); int -args_inodelk_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, dict_t *xdata); +args_finodelk_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, dict_t *xdata); int -args_finodelk_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, dict_t *xdata); +args_entrylk_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, dict_t *xdata); int -args_entrylk_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, dict_t *xdata); +args_fentrylk_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, dict_t *xdata); int -args_fentrylk_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, dict_t *xdata); - +args_readdirp_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, gf_dirent_t *entries, dict_t *xdata); int -args_readdirp_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, - gf_dirent_t *entries, dict_t *xdata); - +args_readdir_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, gf_dirent_t *entries, dict_t *xdata); int -args_readdir_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, - gf_dirent_t *entries, dict_t *xdata); - +args_rchecksum_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, uint32_t weak_checksum, + uint8_t *strong_checksum, dict_t *xdata); int -args_rchecksum_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, - uint32_t weak_checksum, uint8_t *strong_checksum, - dict_t *xdata); - +args_xattrop_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, dict_t *xattr, dict_t *xdata); int -args_xattrop_cbk_store (default_args_cbk_t *args, int32_t op_ret, +args_fxattrop_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno, dict_t *xattr, dict_t *xdata); - int -args_fxattrop_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, - dict_t *xattr, dict_t *xdata); +args_setattr_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, struct iatt *statpre, + struct iatt *statpost, dict_t *xdata); int -args_setattr_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, - struct iatt *statpre, struct iatt *statpost, - dict_t *xdata); - - -int -args_fsetattr_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, - struct iatt *statpre, struct iatt *statpost, - dict_t *xdata); +args_fsetattr_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, struct iatt *statpre, + struct iatt *statpost, dict_t *xdata); int -args_fallocate_cbk_store(default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, - struct iatt *statpre, struct iatt *statpost, - dict_t *xdata); +args_fallocate_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, struct iatt *statpre, + struct iatt *statpost, dict_t *xdata); int -args_discard_cbk_store(default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, - struct iatt *statpre, struct iatt *statpost, - dict_t *xdata); +args_discard_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, struct iatt *statpre, + struct iatt *statpost, dict_t *xdata); int -args_zerofill_cbk_store(default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, - struct iatt *statpre, struct iatt *statpost, - dict_t *xdata); +args_zerofill_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, struct iatt *statpre, + struct iatt *statpost, dict_t *xdata); int -args_ipc_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, dict_t *xdata); +args_ipc_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno, + dict_t *xdata); int -args_seek_cbk_store (default_args_cbk_t *args, int32_t op_ret, - int32_t op_errno, off_t offset, dict_t *xdata); +args_seek_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno, + off_t offset, dict_t *xdata); void -args_lease_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, +args_lease_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno, struct gf_lease *lease, dict_t *xdata); void -args_cbk_wipe (default_args_cbk_t *args_cbk); +args_cbk_wipe(default_args_cbk_t *args_cbk); void -args_wipe (default_args_t *args); +args_wipe(default_args_t *args); int -args_lookup_store (default_args_t *args, loc_t *loc, - dict_t *xdata); +args_lookup_store(default_args_t *args, loc_t *loc, dict_t *xdata); int -args_stat_store (default_args_t *args, loc_t *loc, dict_t *xdata); +args_stat_store(default_args_t *args, loc_t *loc, dict_t *xdata); int -args_fstat_store (default_args_t *args, fd_t *fd, dict_t *xdata); +args_fstat_store(default_args_t *args, fd_t *fd, dict_t *xdata); int -args_truncate_store (default_args_t *args, loc_t *loc, off_t off, - dict_t *xdata); +args_truncate_store(default_args_t *args, loc_t *loc, off_t off, dict_t *xdata); int -args_ftruncate_store (default_args_t *args, fd_t *fd, off_t off, - dict_t *xdata); +args_ftruncate_store(default_args_t *args, fd_t *fd, off_t off, dict_t *xdata); int -args_access_store (default_args_t *args, loc_t *loc, int32_t mask, - dict_t *xdata); +args_access_store(default_args_t *args, loc_t *loc, int32_t mask, + dict_t *xdata); int -args_readlink_store (default_args_t *args, loc_t *loc, size_t size, - dict_t *xdata); +args_readlink_store(default_args_t *args, loc_t *loc, size_t size, + dict_t *xdata); int -args_mknod_store (default_args_t *args, loc_t *loc, mode_t mode, - dev_t rdev, mode_t umask, dict_t *xdata); +args_mknod_store(default_args_t *args, loc_t *loc, mode_t mode, dev_t rdev, + mode_t umask, dict_t *xdata); int -args_mkdir_store (default_args_t *args, loc_t *loc, mode_t mode, - mode_t umask, dict_t *xdata); +args_mkdir_store(default_args_t *args, loc_t *loc, mode_t mode, mode_t umask, + dict_t *xdata); int -args_unlink_store (default_args_t *args, loc_t *loc, int xflag, dict_t *xdata); +args_unlink_store(default_args_t *args, loc_t *loc, int xflag, dict_t *xdata); int -args_rmdir_store (default_args_t *args, loc_t *loc, int flags, dict_t *xdata); +args_rmdir_store(default_args_t *args, loc_t *loc, int flags, dict_t *xdata); int -args_symlink_store (default_args_t *args, const char *linkname, loc_t *loc, +args_symlink_store(default_args_t *args, const char *linkname, loc_t *loc, mode_t umask, dict_t *xdata); int -args_rename_store (default_args_t *args, loc_t *oldloc, loc_t *newloc, - dict_t *xdata); +args_rename_store(default_args_t *args, loc_t *oldloc, loc_t *newloc, + dict_t *xdata); int -args_link_store (default_args_t *args, loc_t *oldloc, loc_t *newloc, - dict_t *xdata); +args_link_store(default_args_t *args, loc_t *oldloc, loc_t *newloc, + dict_t *xdata); int -args_create_store (default_args_t *args, - loc_t *loc, int32_t flags, mode_t mode, +args_create_store(default_args_t *args, loc_t *loc, int32_t flags, mode_t mode, mode_t umask, fd_t *fd, dict_t *xdata); int -args_open_store (default_args_t *args, loc_t *loc, int32_t flags, - fd_t *fd, dict_t *xdata); +args_open_store(default_args_t *args, loc_t *loc, int32_t flags, fd_t *fd, + dict_t *xdata); int -args_readv_store (default_args_t *args, fd_t *fd, size_t size, off_t off, - uint32_t flags, dict_t *xdata); +args_readv_store(default_args_t *args, fd_t *fd, size_t size, off_t off, + uint32_t flags, dict_t *xdata); int -args_writev_store (default_args_t *args, fd_t *fd, struct iovec *vector, - int32_t count, off_t off, uint32_t flags, - struct iobref *iobref, dict_t *xdata); +args_writev_store(default_args_t *args, fd_t *fd, struct iovec *vector, + int32_t count, off_t off, uint32_t flags, + struct iobref *iobref, dict_t *xdata); int -args_put_store (default_args_t *args, loc_t *loc, mode_t mode, mode_t umask, - uint32_t flags, struct iovec *vector, int32_t count, off_t off, - struct iobref *iobref, dict_t *xattr, dict_t *xdata); +args_put_store(default_args_t *args, loc_t *loc, mode_t mode, mode_t umask, + uint32_t flags, struct iovec *vector, int32_t count, off_t off, + struct iobref *iobref, dict_t *xattr, dict_t *xdata); int -args_flush_store (default_args_t *args, fd_t *fd, dict_t *xdata); +args_flush_store(default_args_t *args, fd_t *fd, dict_t *xdata); int -args_fsync_store (default_args_t *args, fd_t *fd, int32_t datasync, - dict_t *xdata); +args_fsync_store(default_args_t *args, fd_t *fd, int32_t datasync, + dict_t *xdata); int -args_opendir_store (default_args_t *args, loc_t *loc, fd_t *fd, dict_t *xdata); +args_opendir_store(default_args_t *args, loc_t *loc, fd_t *fd, dict_t *xdata); int -args_fsyncdir_store (default_args_t *args, fd_t *fd, int32_t datasync, - dict_t *xdata); +args_fsyncdir_store(default_args_t *args, fd_t *fd, int32_t datasync, + dict_t *xdata); int -args_statfs_store (default_args_t *args, loc_t *loc, dict_t *xdata); +args_statfs_store(default_args_t *args, loc_t *loc, dict_t *xdata); int -args_setxattr_store (default_args_t *args, - loc_t *loc, dict_t *dict, - int32_t flags, dict_t *xdata); +args_setxattr_store(default_args_t *args, loc_t *loc, dict_t *dict, + int32_t flags, dict_t *xdata); int -args_getxattr_store (default_args_t *args, - loc_t *loc, const char *name, dict_t *xdata); +args_getxattr_store(default_args_t *args, loc_t *loc, const char *name, + dict_t *xdata); int -args_fsetxattr_store (default_args_t *args, - fd_t *fd, dict_t *dict, int32_t flags, dict_t *xdata); +args_fsetxattr_store(default_args_t *args, fd_t *fd, dict_t *dict, + int32_t flags, dict_t *xdata); int -args_fgetxattr_store (default_args_t *args, - fd_t *fd, const char *name, dict_t *xdata); +args_fgetxattr_store(default_args_t *args, fd_t *fd, const char *name, + dict_t *xdata); int -args_removexattr_store (default_args_t *args, - loc_t *loc, const char *name, dict_t *xdata); +args_removexattr_store(default_args_t *args, loc_t *loc, const char *name, + dict_t *xdata); int -args_fremovexattr_store (default_args_t *args, - fd_t *fd, const char *name, dict_t *xdata); +args_fremovexattr_store(default_args_t *args, fd_t *fd, const char *name, + dict_t *xdata); int -args_lk_store (default_args_t *args, - fd_t *fd, int32_t cmd, - struct gf_flock *lock, dict_t *xdata); +args_lk_store(default_args_t *args, fd_t *fd, int32_t cmd, + struct gf_flock *lock, dict_t *xdata); int -args_inodelk_store (default_args_t *args, - const char *volume, loc_t *loc, int32_t cmd, - struct gf_flock *lock, dict_t *xdata); +args_inodelk_store(default_args_t *args, const char *volume, loc_t *loc, + int32_t cmd, struct gf_flock *lock, dict_t *xdata); int -args_finodelk_store (default_args_t *args, - const char *volume, fd_t *fd, int32_t cmd, - struct gf_flock *lock, dict_t *xdata); +args_finodelk_store(default_args_t *args, const char *volume, fd_t *fd, + int32_t cmd, struct gf_flock *lock, dict_t *xdata); int -args_entrylk_store (default_args_t *args, - const char *volume, loc_t *loc, const char *name, - entrylk_cmd cmd, entrylk_type type, dict_t *xdata); +args_entrylk_store(default_args_t *args, const char *volume, loc_t *loc, + const char *name, entrylk_cmd cmd, entrylk_type type, + dict_t *xdata); int -args_fentrylk_store (default_args_t *args, - const char *volume, fd_t *fd, const char *name, - entrylk_cmd cmd, entrylk_type type, dict_t *xdata); +args_fentrylk_store(default_args_t *args, const char *volume, fd_t *fd, + const char *name, entrylk_cmd cmd, entrylk_type type, + dict_t *xdata); int -args_readdirp_store (default_args_t *args, - fd_t *fd, size_t size, off_t off, dict_t *xdata); +args_readdirp_store(default_args_t *args, fd_t *fd, size_t size, off_t off, + dict_t *xdata); int -args_readdir_store (default_args_t *args, - fd_t *fd, size_t size, - off_t off, dict_t *xdata); +args_readdir_store(default_args_t *args, fd_t *fd, size_t size, off_t off, + dict_t *xdata); int -args_rchecksum_store (default_args_t *args, - fd_t *fd, off_t offset, int32_t len, dict_t *xdata); +args_rchecksum_store(default_args_t *args, fd_t *fd, off_t offset, int32_t len, + dict_t *xdata); int -args_xattrop_store (default_args_t *args, - loc_t *loc, gf_xattrop_flags_t optype, - dict_t *xattr, dict_t *xdata); +args_xattrop_store(default_args_t *args, loc_t *loc, gf_xattrop_flags_t optype, + dict_t *xattr, dict_t *xdata); int -args_fxattrop_store (default_args_t *args, - fd_t *fd, gf_xattrop_flags_t optype, - dict_t *xattr, dict_t *xdata); +args_fxattrop_store(default_args_t *args, fd_t *fd, gf_xattrop_flags_t optype, + dict_t *xattr, dict_t *xdata); int -args_setattr_store (default_args_t *args, - loc_t *loc, struct iatt *stbuf, - int32_t valid, dict_t *xdata); +args_setattr_store(default_args_t *args, loc_t *loc, struct iatt *stbuf, + int32_t valid, dict_t *xdata); int -args_fsetattr_store (default_args_t *args, - fd_t *fd, struct iatt *stbuf, - int32_t valid, dict_t *xdata); +args_fsetattr_store(default_args_t *args, fd_t *fd, struct iatt *stbuf, + int32_t valid, dict_t *xdata); int -args_fallocate_store (default_args_t *args, fd_t *fd, - int32_t mode, off_t offset, size_t len, dict_t *xdata); +args_fallocate_store(default_args_t *args, fd_t *fd, int32_t mode, off_t offset, + size_t len, dict_t *xdata); int -args_discard_store (default_args_t *args, fd_t *fd, - off_t offset, size_t len, dict_t *xdata); +args_discard_store(default_args_t *args, fd_t *fd, off_t offset, size_t len, + dict_t *xdata); int -args_zerofill_store (default_args_t *args, fd_t *fd, - off_t offset, off_t len, dict_t *xdata); +args_zerofill_store(default_args_t *args, fd_t *fd, off_t offset, off_t len, + dict_t *xdata); int -args_ipc_store (default_args_t *args, - int32_t op, dict_t *xdata); +args_ipc_store(default_args_t *args, int32_t op, dict_t *xdata); int -args_seek_store (default_args_t *args, fd_t *fd, - off_t offset, gf_seek_what_t what, dict_t *xdata); +args_seek_store(default_args_t *args, fd_t *fd, off_t offset, + gf_seek_what_t what, dict_t *xdata); void -args_lease_store (default_args_t *args, loc_t *loc, struct gf_lease *lease, - dict_t *xdata); +args_lease_store(default_args_t *args, loc_t *loc, struct gf_lease *lease, + dict_t *xdata); int -args_getactivelk_cbk_store (default_args_cbk_t *args, - int32_t op_ret, int32_t op_errno, - lock_migration_info_t *locklist, dict_t *xdata); +args_getactivelk_cbk_store(default_args_cbk_t *args, int32_t op_ret, + int32_t op_errno, lock_migration_info_t *locklist, + dict_t *xdata); int -args_setactivelk_store (default_args_t *args, loc_t *loc, - lock_migration_info_t *locklist, dict_t *xdata); +args_setactivelk_store(default_args_t *args, loc_t *loc, + lock_migration_info_t *locklist, dict_t *xdata); int -args_icreate_store (default_args_t *args, - loc_t *loc, mode_t mode, dict_t *xdata); +args_icreate_store(default_args_t *args, loc_t *loc, mode_t mode, + dict_t *xdata); int -args_namelink_store (default_args_t *args, loc_t *loc, dict_t *xdata); +args_namelink_store(default_args_t *args, loc_t *loc, dict_t *xdata); void -args_cbk_init (default_args_cbk_t *args_cbk); +args_cbk_init(default_args_cbk_t *args_cbk); #endif /* _DEFAULT_ARGS_H */ diff --git a/libglusterfs/src/defaults.h b/libglusterfs/src/defaults.h index 5e56cc2c9f9..8583935e069 100644 --- a/libglusterfs/src/defaults.h +++ b/libglusterfs/src/defaults.h @@ -18,1344 +18,1222 @@ #include "xlator.h" typedef struct { - int op_ret; - int op_errno; - inode_t *inode; - struct iatt stat; - struct iatt prestat; - struct iatt poststat; - struct iatt preparent; /* @preoldparent in rename_cbk */ - struct iatt postparent; /* @postoldparent in rename_cbk */ - struct iatt preparent2; /* @prenewparent in rename_cbk */ - struct iatt postparent2; /* @postnewparent in rename_cbk */ - const char *buf; - struct iovec *vector; - int count; - struct iobref *iobref; - fd_t *fd; - struct statvfs statvfs; - dict_t *xattr; - struct gf_flock lock; - uint32_t weak_checksum; - uint8_t *strong_checksum; - dict_t *xdata; - gf_dirent_t entries; - off_t offset; /* seek hole/data */ - int valid; /* If the response is valid or not. For call-stub it is - always valid irrespective of this */ - struct gf_lease lease; - lock_migration_info_t locklist; + int op_ret; + int op_errno; + inode_t *inode; + struct iatt stat; + struct iatt prestat; + struct iatt poststat; + struct iatt preparent; /* @preoldparent in rename_cbk */ + struct iatt postparent; /* @postoldparent in rename_cbk */ + struct iatt preparent2; /* @prenewparent in rename_cbk */ + struct iatt postparent2; /* @postnewparent in rename_cbk */ + const char *buf; + struct iovec *vector; + int count; + struct iobref *iobref; + fd_t *fd; + struct statvfs statvfs; + dict_t *xattr; + struct gf_flock lock; + uint32_t weak_checksum; + uint8_t *strong_checksum; + dict_t *xdata; + gf_dirent_t entries; + off_t offset; /* seek hole/data */ + int valid; /* If the response is valid or not. For call-stub it is + always valid irrespective of this */ + struct gf_lease lease; + lock_migration_info_t locklist; } default_args_cbk_t; typedef struct { - loc_t loc; /* @old in rename(), link() */ - loc_t loc2; /* @new in rename(), link() */ - fd_t *fd; - off_t offset; - int mask; - size_t size; - mode_t mode; - dev_t rdev; - mode_t umask; - int xflag; - int flags; - const char *linkname; - struct iovec *vector; - int count; - struct iobref *iobref; - int datasync; - dict_t *xattr; - const char *name; - int cmd; - struct gf_flock lock; - const char *volume; - entrylk_cmd entrylkcmd; - entrylk_type entrylktype; - gf_xattrop_flags_t optype; - int valid; - struct iatt stat; - gf_seek_what_t what; - dict_t *xdata; - struct gf_lease lease; - lock_migration_info_t locklist; + loc_t loc; /* @old in rename(), link() */ + loc_t loc2; /* @new in rename(), link() */ + fd_t *fd; + off_t offset; + int mask; + size_t size; + mode_t mode; + dev_t rdev; + mode_t umask; + int xflag; + int flags; + const char *linkname; + struct iovec *vector; + int count; + struct iobref *iobref; + int datasync; + dict_t *xattr; + const char *name; + int cmd; + struct gf_flock lock; + const char *volume; + entrylk_cmd entrylkcmd; + entrylk_type entrylktype; + gf_xattrop_flags_t optype; + int valid; + struct iatt stat; + gf_seek_what_t what; + dict_t *xdata; + struct gf_lease lease; + lock_migration_info_t locklist; } default_args_t; typedef struct { - int fop_enum; - unsigned int fop_length; - int *enum_list; - default_args_t *req_list; - dict_t *xdata; + int fop_enum; + unsigned int fop_length; + int *enum_list; + default_args_t *req_list; + dict_t *xdata; } compound_args_t; typedef struct { - int fop_enum; - unsigned int fop_length; - int *enum_list; - default_args_cbk_t *rsp_list; - dict_t *xdata; + int fop_enum; + unsigned int fop_length; + int *enum_list; + default_args_cbk_t *rsp_list; + dict_t *xdata; } compound_args_cbk_t; -int32_t default_notify (xlator_t *this, - int32_t event, - void *data, - ...); - -int32_t default_forget (xlator_t *this, inode_t *inode); +int32_t +default_notify(xlator_t *this, int32_t event, void *data, ...); -int32_t default_release (xlator_t *this, fd_t *fd); +int32_t +default_forget(xlator_t *this, inode_t *inode); -int32_t default_releasedir (xlator_t *this, fd_t *fd); +int32_t +default_release(xlator_t *this, fd_t *fd); +int32_t +default_releasedir(xlator_t *this, fd_t *fd); extern struct xlator_fops *default_fops; /* Management Operations */ -int32_t default_getspec (call_frame_t *frame, - xlator_t *this, - const char *key, - int32_t flag); +int32_t +default_getspec(call_frame_t *frame, xlator_t *this, const char *key, + int32_t flag); -int32_t default_rchecksum (call_frame_t *frame, - xlator_t *this, - fd_t *fd, off_t offset, - int32_t len, dict_t *xdata); +int32_t +default_rchecksum(call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, + int32_t len, dict_t *xdata); /* FileSystem operations */ -int32_t default_lookup (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - dict_t *xdata); - -int32_t default_stat (call_frame_t *frame, - xlator_t *this, - loc_t *loc, dict_t *xdata); - -int32_t default_fstat (call_frame_t *frame, - xlator_t *this, - fd_t *fd, dict_t *xdata); - -int32_t default_truncate (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - off_t offset, dict_t *xdata); +int32_t +default_lookup(call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata); -int32_t default_ftruncate (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - off_t offset, dict_t *xdata); +int32_t +default_stat(call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata); -int32_t default_access (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - int32_t mask, dict_t *xdata); +int32_t +default_fstat(call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata); -int32_t default_readlink (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - size_t size, dict_t *xdata); +int32_t +default_truncate(call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset, + dict_t *xdata); -int32_t default_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc, - mode_t mode, dev_t rdev, mode_t umask, dict_t *xdata); +int32_t +default_ftruncate(call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, + dict_t *xdata); -int32_t default_mkdir (call_frame_t *frame, xlator_t *this, - loc_t *loc, mode_t mode, mode_t umask, dict_t *xdata); +int32_t +default_access(call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t mask, + dict_t *xdata); -int32_t default_unlink (call_frame_t *frame, - xlator_t *this, - loc_t *loc, int xflag, dict_t *xdata); +int32_t +default_readlink(call_frame_t *frame, xlator_t *this, loc_t *loc, size_t size, + dict_t *xdata); -int32_t default_rmdir (call_frame_t *frame, xlator_t *this, - loc_t *loc, int xflag, dict_t *xdata); +int32_t +default_mknod(call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, + dev_t rdev, mode_t umask, dict_t *xdata); -int32_t default_symlink (call_frame_t *frame, xlator_t *this, - const char *linkpath, loc_t *loc, mode_t umask, - dict_t *xdata); +int32_t +default_mkdir(call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, + mode_t umask, dict_t *xdata); -int32_t default_rename (call_frame_t *frame, - xlator_t *this, - loc_t *oldloc, - loc_t *newloc, dict_t *xdata); +int32_t +default_unlink(call_frame_t *frame, xlator_t *this, loc_t *loc, int xflag, + dict_t *xdata); -int32_t default_link (call_frame_t *frame, - xlator_t *this, - loc_t *oldloc, - loc_t *newloc, dict_t *xdata); +int32_t +default_rmdir(call_frame_t *frame, xlator_t *this, loc_t *loc, int xflag, + dict_t *xdata); -int32_t default_create (call_frame_t *frame, xlator_t *this, - loc_t *loc, int32_t flags, mode_t mode, - mode_t umask, fd_t *fd, dict_t *xdata); +int32_t +default_symlink(call_frame_t *frame, xlator_t *this, const char *linkpath, + loc_t *loc, mode_t umask, dict_t *xdata); -int32_t default_open (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - int32_t flags, fd_t *fd, - dict_t *xdata); +int32_t +default_rename(call_frame_t *frame, xlator_t *this, loc_t *oldloc, + loc_t *newloc, dict_t *xdata); -int32_t default_readv (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - size_t size, - off_t offset, - uint32_t flags, dict_t *xdata); - -int32_t default_writev (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - struct iovec *vector, - int32_t count, - off_t offset, - uint32_t flags, - struct iobref *iobref, dict_t *xdata); - -int32_t default_flush (call_frame_t *frame, - xlator_t *this, - fd_t *fd, dict_t *xdata); +int32_t +default_link(call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc, + dict_t *xdata); -int32_t default_fsync (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - int32_t datasync, dict_t *xdata); - -int32_t default_opendir (call_frame_t *frame, - xlator_t *this, - loc_t *loc, fd_t *fd, dict_t *xdata); - -int32_t default_fsyncdir (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - int32_t datasync, dict_t *xdata); - -int32_t default_statfs (call_frame_t *frame, - xlator_t *this, - loc_t *loc, dict_t *xdata); - -int32_t default_setxattr (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - dict_t *dict, - int32_t flags, dict_t *xdata); - -int32_t default_getxattr (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - const char *name, dict_t *xdata); - -int32_t default_fsetxattr (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - dict_t *dict, - int32_t flags, dict_t *xdata); - -int32_t default_fgetxattr (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - const char *name, dict_t *xdata); +int32_t +default_create(call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags, + mode_t mode, mode_t umask, fd_t *fd, dict_t *xdata); -int32_t default_removexattr (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - const char *name, dict_t *xdata); - -int32_t default_fremovexattr (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - const char *name, dict_t *xdata); - -int32_t default_lk (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - int32_t cmd, - struct gf_flock *flock, dict_t *xdata); - -int32_t default_inodelk (call_frame_t *frame, xlator_t *this, - const char *volume, loc_t *loc, int32_t cmd, - struct gf_flock *flock, dict_t *xdata); - -int32_t default_finodelk (call_frame_t *frame, xlator_t *this, - const char *volume, fd_t *fd, int32_t cmd, - struct gf_flock *flock, dict_t *xdata); - -int32_t default_entrylk (call_frame_t *frame, xlator_t *this, - const char *volume, loc_t *loc, const char *basename, - entrylk_cmd cmd, entrylk_type type, dict_t *xdata); - -int32_t default_fentrylk (call_frame_t *frame, xlator_t *this, - const char *volume, fd_t *fd, const char *basename, - entrylk_cmd cmd, entrylk_type type, dict_t *xdata); - -int32_t default_readdir (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - size_t size, off_t off, dict_t *xdata); - -int32_t default_readdirp (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - size_t size, off_t off, dict_t *xdata); - -int32_t default_xattrop (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - gf_xattrop_flags_t flags, - dict_t *dict, dict_t *xdata); - -int32_t default_fxattrop (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - gf_xattrop_flags_t flags, - dict_t *dict, dict_t *xdata); - -int32_t default_setattr (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - struct iatt *stbuf, - int32_t valid, dict_t *xdata); - -int32_t default_fsetattr (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - struct iatt *stbuf, - int32_t valid, dict_t *xdata); - -int32_t default_fallocate(call_frame_t *frame, - xlator_t *this, - fd_t *fd, - int32_t keep_size, off_t offset, - size_t len, dict_t *xdata); - -int32_t default_discard(call_frame_t *frame, - xlator_t *this, - fd_t *fd, - off_t offset, - size_t len, dict_t *xdata); - -int32_t default_zerofill(call_frame_t *frame, - xlator_t *this, - fd_t *fd, - off_t offset, - off_t len, dict_t *xdata); - -int32_t default_ipc (call_frame_t *frame, xlator_t *this, int32_t op, - dict_t *xdata); +int32_t +default_open(call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags, + fd_t *fd, dict_t *xdata); -int32_t default_seek (call_frame_t *frame, xlator_t *this, fd_t *fd, - off_t offset, gf_seek_what_t what, dict_t *xdata); +int32_t +default_readv(call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size, + off_t offset, uint32_t flags, dict_t *xdata); -int32_t default_lease (call_frame_t *frame, xlator_t *this, loc_t *loc, - struct gf_lease *lease, dict_t *xdata); +int32_t +default_writev(call_frame_t *frame, xlator_t *this, fd_t *fd, + struct iovec *vector, int32_t count, off_t offset, + uint32_t flags, struct iobref *iobref, dict_t *xdata); int32_t -default_getactivelk (call_frame_t *frame, xlator_t *this, loc_t *loc, - dict_t *xdata); +default_flush(call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata); int32_t -default_setactivelk (call_frame_t *frame, xlator_t *this, loc_t *loc, - lock_migration_info_t *locklist, dict_t *xdata); +default_fsync(call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t datasync, + dict_t *xdata); int32_t -default_put (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, - mode_t umask, uint32_t flags, struct iovec *vector, int32_t count, - off_t off, struct iobref *iobref, dict_t *xattr, dict_t *xdata); +default_opendir(call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd, + dict_t *xdata); -int32_t default_icreate (call_frame_t *frame, xlator_t *this, - loc_t *loc, mode_t mode, dict_t *xdata); +int32_t +default_fsyncdir(call_frame_t *frame, xlator_t *this, fd_t *fd, + int32_t datasync, dict_t *xdata); -int32_t default_namelink (call_frame_t *frame, - xlator_t *this, loc_t *loc, dict_t *xdata); +int32_t +default_statfs(call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata); -/* Resume */ -int32_t default_getspec_resume (call_frame_t *frame, - xlator_t *this, - const char *key, - int32_t flag); +int32_t +default_setxattr(call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *dict, + int32_t flags, dict_t *xdata); -int32_t default_rchecksum_resume (call_frame_t *frame, - xlator_t *this, - fd_t *fd, off_t offset, - int32_t len, dict_t *xdata); +int32_t +default_getxattr(call_frame_t *frame, xlator_t *this, loc_t *loc, + const char *name, dict_t *xdata); -/* FileSystem operations */ -int32_t default_lookup_resume (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - dict_t *xdata); +int32_t +default_fsetxattr(call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *dict, + int32_t flags, dict_t *xdata); -int32_t default_stat_resume (call_frame_t *frame, - xlator_t *this, - loc_t *loc, dict_t *xdata); +int32_t +default_fgetxattr(call_frame_t *frame, xlator_t *this, fd_t *fd, + const char *name, dict_t *xdata); -int32_t default_fstat_resume (call_frame_t *frame, - xlator_t *this, - fd_t *fd, dict_t *xdata); +int32_t +default_removexattr(call_frame_t *frame, xlator_t *this, loc_t *loc, + const char *name, dict_t *xdata); -int32_t default_truncate_resume (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - off_t offset, dict_t *xdata); +int32_t +default_fremovexattr(call_frame_t *frame, xlator_t *this, fd_t *fd, + const char *name, dict_t *xdata); -int32_t default_ftruncate_resume (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - off_t offset, dict_t *xdata); +int32_t +default_lk(call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t cmd, + struct gf_flock *flock, dict_t *xdata); -int32_t default_access_resume (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - int32_t mask, dict_t *xdata); +int32_t +default_inodelk(call_frame_t *frame, xlator_t *this, const char *volume, + loc_t *loc, int32_t cmd, struct gf_flock *flock, dict_t *xdata); -int32_t default_readlink_resume (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - size_t size, dict_t *xdata); +int32_t +default_finodelk(call_frame_t *frame, xlator_t *this, const char *volume, + fd_t *fd, int32_t cmd, struct gf_flock *flock, dict_t *xdata); -int32_t default_mknod_resume (call_frame_t *frame, xlator_t *this, loc_t *loc, - mode_t mode, dev_t rdev, mode_t umask, - dict_t *xdata); +int32_t +default_entrylk(call_frame_t *frame, xlator_t *this, const char *volume, + loc_t *loc, const char *basename, entrylk_cmd cmd, + entrylk_type type, dict_t *xdata); -int32_t default_mkdir_resume (call_frame_t *frame, xlator_t *this, loc_t *loc, - mode_t mode, mode_t umask, dict_t *xdata); +int32_t +default_fentrylk(call_frame_t *frame, xlator_t *this, const char *volume, + fd_t *fd, const char *basename, entrylk_cmd cmd, + entrylk_type type, dict_t *xdata); -int32_t default_unlink_resume (call_frame_t *frame, - xlator_t *this, - loc_t *loc, int xflag, dict_t *xdata); +int32_t +default_readdir(call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size, + off_t off, dict_t *xdata); -int32_t default_rmdir_resume (call_frame_t *frame, xlator_t *this, - loc_t *loc, int xflag, dict_t *xdata); +int32_t +default_readdirp(call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size, + off_t off, dict_t *xdata); -int32_t default_symlink_resume (call_frame_t *frame, xlator_t *this, - const char *linkpath, loc_t *loc, mode_t umask, - dict_t *xdata); +int32_t +default_xattrop(call_frame_t *frame, xlator_t *this, loc_t *loc, + gf_xattrop_flags_t flags, dict_t *dict, dict_t *xdata); -int32_t default_rename_resume (call_frame_t *frame, - xlator_t *this, - loc_t *oldloc, - loc_t *newloc, dict_t *xdata); +int32_t +default_fxattrop(call_frame_t *frame, xlator_t *this, fd_t *fd, + gf_xattrop_flags_t flags, dict_t *dict, dict_t *xdata); -int32_t default_link_resume (call_frame_t *frame, - xlator_t *this, - loc_t *oldloc, - loc_t *newloc, dict_t *xdata); +int32_t +default_setattr(call_frame_t *frame, xlator_t *this, loc_t *loc, + struct iatt *stbuf, int32_t valid, dict_t *xdata); -int32_t default_create_resume (call_frame_t *frame, xlator_t *this, - loc_t *loc, int32_t flags, mode_t mode, - mode_t umask, fd_t *fd, dict_t *xdata); - -int32_t default_open_resume (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - int32_t flags, fd_t *fd, dict_t *xdata); - -int32_t default_readv_resume (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - size_t size, - off_t offset, uint32_t flags, dict_t *xdata); - -int32_t default_writev_resume (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - struct iovec *vector, - int32_t count, - off_t offset, uint32_t flags, - struct iobref *iobref, dict_t *xdata); - -int32_t default_flush_resume (call_frame_t *frame, - xlator_t *this, - fd_t *fd, dict_t *xdata); +int32_t +default_fsetattr(call_frame_t *frame, xlator_t *this, fd_t *fd, + struct iatt *stbuf, int32_t valid, dict_t *xdata); -int32_t default_fsync_resume (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - int32_t datasync, dict_t *xdata); - -int32_t default_opendir_resume (call_frame_t *frame, - xlator_t *this, - loc_t *loc, fd_t *fd, dict_t *xdata); - -int32_t default_fsyncdir_resume (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - int32_t datasync, dict_t *xdata); - -int32_t default_statfs_resume (call_frame_t *frame, - xlator_t *this, - loc_t *loc, dict_t *xdata); - -int32_t default_setxattr_resume (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - dict_t *dict, - int32_t flags, dict_t *xdata); - -int32_t default_getxattr_resume (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - const char *name, dict_t *xdata); - -int32_t default_fsetxattr_resume (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - dict_t *dict, - int32_t flags, dict_t *xdata); - -int32_t default_fgetxattr_resume (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - const char *name, dict_t *xdata); +int32_t +default_fallocate(call_frame_t *frame, xlator_t *this, fd_t *fd, + int32_t keep_size, off_t offset, size_t len, dict_t *xdata); -int32_t default_removexattr_resume (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - const char *name, dict_t *xdata); - -int32_t default_fremovexattr_resume (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - const char *name, dict_t *xdata); - -int32_t default_lk_resume (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - int32_t cmd, - struct gf_flock *flock, dict_t *xdata); - -int32_t default_inodelk_resume (call_frame_t *frame, xlator_t *this, - const char *volume, loc_t *loc, int32_t cmd, - struct gf_flock *flock, dict_t *xdata); - -int32_t default_finodelk_resume (call_frame_t *frame, xlator_t *this, - const char *volume, fd_t *fd, int32_t cmd, - struct gf_flock *flock, dict_t *xdata); - -int32_t default_entrylk_resume (call_frame_t *frame, xlator_t *this, - const char *volume, loc_t *loc, const char *basename, - entrylk_cmd cmd, entrylk_type type, dict_t *xdata); - -int32_t default_fentrylk_resume (call_frame_t *frame, xlator_t *this, - const char *volume, fd_t *fd, const char *basename, - entrylk_cmd cmd, entrylk_type type, dict_t *xdata); - -int32_t default_readdir_resume (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - size_t size, off_t off, dict_t *xdata); - -int32_t default_readdirp_resume (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - size_t size, off_t off, dict_t *xdata); - -int32_t default_xattrop_resume (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - gf_xattrop_flags_t flags, - dict_t *dict, dict_t *xdata); - -int32_t default_fxattrop_resume (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - gf_xattrop_flags_t flags, - dict_t *dict, dict_t *xdata); -int32_t default_rchecksum_resume (call_frame_t *frame, - xlator_t *this, - fd_t *fd, off_t offset, - int32_t len, dict_t *xdata); - -int32_t default_setattr_resume (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - struct iatt *stbuf, - int32_t valid, dict_t *xdata); - -int32_t default_fsetattr_resume (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - struct iatt *stbuf, - int32_t valid, dict_t *xdata); - -int32_t default_fallocate_resume(call_frame_t *frame, - xlator_t *this, - fd_t *fd, - int32_t keep_size, off_t offset, - size_t len, dict_t *xdata); - -int32_t default_discard_resume(call_frame_t *frame, - xlator_t *this, - fd_t *fd, - off_t offset, - size_t len, dict_t *xdata); - -int32_t default_zerofill_resume(call_frame_t *frame, - xlator_t *this, - fd_t *fd, - off_t offset, - off_t len, dict_t *xdata); - -int32_t default_ipc_resume (call_frame_t *frame, xlator_t *this, - int32_t op, dict_t *xdata); - -int32_t default_seek_resume (call_frame_t *frame, xlator_t *this, fd_t *fd, - off_t offset, gf_seek_what_t what, dict_t *xdata); - -int32_t default_lease_resume (call_frame_t *frame, xlator_t *this, loc_t *loc, - struct gf_lease *lease, dict_t *xdata); - -int32_t -default_getactivelk_resume (call_frame_t *frame, xlator_t *this, loc_t *loc, - dict_t *xdata); +int32_t +default_discard(call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, + size_t len, dict_t *xdata); int32_t -default_setactivelk_resume (call_frame_t *frame, xlator_t *this, loc_t *loc, - lock_migration_info_t *locklist, dict_t *xdata); +default_zerofill(call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, + off_t len, dict_t *xdata); int32_t -default_put_resume (call_frame_t *frame, xlator_t *this, loc_t *loc, - mode_t mode, mode_t umask, uint32_t flags, - struct iovec *vector, int32_t count, off_t off, - struct iobref *iobref, dict_t *xattr, dict_t *xdata); +default_ipc(call_frame_t *frame, xlator_t *this, int32_t op, dict_t *xdata); -/* _cbk_resume */ +int32_t +default_seek(call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, + gf_seek_what_t what, dict_t *xdata); int32_t -default_lookup_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, int32_t op_errno, - inode_t * inode, struct iatt *buf, dict_t * xdata, - struct iatt *postparent); +default_lease(call_frame_t *frame, xlator_t *this, loc_t *loc, + struct gf_lease *lease, dict_t *xdata); int32_t -default_stat_cbk_resume (call_frame_t * frame, void *cookie, xlator_t * this, - int32_t op_ret, int32_t op_errno, struct iatt *buf, - dict_t * xdata); +default_getactivelk(call_frame_t *frame, xlator_t *this, loc_t *loc, + dict_t *xdata); +int32_t +default_setactivelk(call_frame_t *frame, xlator_t *this, loc_t *loc, + lock_migration_info_t *locklist, dict_t *xdata); int32_t -default_truncate_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, - int32_t op_errno, struct iatt *prebuf, - struct iatt *postbuf, dict_t * xdata); +default_put(call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, + mode_t umask, uint32_t flags, struct iovec *vector, int32_t count, + off_t off, struct iobref *iobref, dict_t *xattr, dict_t *xdata); int32_t -default_ftruncate_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, - int32_t op_errno, struct iatt *prebuf, - struct iatt *postbuf, dict_t * xdata); +default_icreate(call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, + dict_t *xdata); int32_t -default_access_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, int32_t op_errno, - dict_t * xdata); +default_namelink(call_frame_t *frame, xlator_t *this, loc_t *loc, + dict_t *xdata); +/* Resume */ int32_t -default_readlink_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, - int32_t op_errno, const char *path, - struct iatt *buf, dict_t * xdata); +default_getspec_resume(call_frame_t *frame, xlator_t *this, const char *key, + int32_t flag); +int32_t +default_rchecksum_resume(call_frame_t *frame, xlator_t *this, fd_t *fd, + off_t offset, int32_t len, dict_t *xdata); +/* FileSystem operations */ int32_t -default_mknod_cbk_resume (call_frame_t * frame, void *cookie, xlator_t * this, - int32_t op_ret, int32_t op_errno, inode_t * inode, - struct iatt *buf, struct iatt *preparent, - struct iatt *postparent, dict_t * xdata); +default_lookup_resume(call_frame_t *frame, xlator_t *this, loc_t *loc, + dict_t *xdata); int32_t -default_mkdir_cbk_resume (call_frame_t * frame, void *cookie, xlator_t * this, - int32_t op_ret, int32_t op_errno, inode_t * inode, - struct iatt *buf, struct iatt *preparent, - struct iatt *postparent, dict_t * xdata); +default_stat_resume(call_frame_t *frame, xlator_t *this, loc_t *loc, + dict_t *xdata); int32_t -default_unlink_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, int32_t op_errno, - struct iatt *preparent, struct iatt *postparent, - dict_t * xdata); +default_fstat_resume(call_frame_t *frame, xlator_t *this, fd_t *fd, + dict_t *xdata); int32_t -default_rmdir_cbk_resume (call_frame_t * frame, void *cookie, xlator_t * this, - int32_t op_ret, int32_t op_errno, - struct iatt *preparent, struct iatt *postparent, - dict_t * xdata); +default_truncate_resume(call_frame_t *frame, xlator_t *this, loc_t *loc, + off_t offset, dict_t *xdata); +int32_t +default_ftruncate_resume(call_frame_t *frame, xlator_t *this, fd_t *fd, + off_t offset, dict_t *xdata); int32_t -default_symlink_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, int32_t op_errno, - inode_t * inode, struct iatt *buf, - struct iatt *preparent, struct iatt *postparent, - dict_t * xdata); +default_access_resume(call_frame_t *frame, xlator_t *this, loc_t *loc, + int32_t mask, dict_t *xdata); +int32_t +default_readlink_resume(call_frame_t *frame, xlator_t *this, loc_t *loc, + size_t size, dict_t *xdata); int32_t -default_rename_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, int32_t op_errno, - struct iatt *buf, struct iatt *preoldparent, - struct iatt *postoldparent, - struct iatt *prenewparent, - struct iatt *postnewparent, dict_t * xdata); +default_mknod_resume(call_frame_t *frame, xlator_t *this, loc_t *loc, + mode_t mode, dev_t rdev, mode_t umask, dict_t *xdata); +int32_t +default_mkdir_resume(call_frame_t *frame, xlator_t *this, loc_t *loc, + mode_t mode, mode_t umask, dict_t *xdata); int32_t -default_link_cbk_resume (call_frame_t * frame, void *cookie, xlator_t * this, - int32_t op_ret, int32_t op_errno, inode_t * inode, - struct iatt *buf, struct iatt *preparent, - struct iatt *postparent, dict_t * xdata); +default_unlink_resume(call_frame_t *frame, xlator_t *this, loc_t *loc, + int xflag, dict_t *xdata); +int32_t +default_rmdir_resume(call_frame_t *frame, xlator_t *this, loc_t *loc, int xflag, + dict_t *xdata); int32_t -default_create_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, int32_t op_errno, - fd_t * fd, inode_t * inode, struct iatt *buf, - struct iatt *preparent, struct iatt *postparent, - dict_t * xdata); +default_symlink_resume(call_frame_t *frame, xlator_t *this, + const char *linkpath, loc_t *loc, mode_t umask, + dict_t *xdata); int32_t -default_open_cbk_resume (call_frame_t * frame, void *cookie, xlator_t * this, - int32_t op_ret, int32_t op_errno, fd_t * fd, - dict_t * xdata); +default_rename_resume(call_frame_t *frame, xlator_t *this, loc_t *oldloc, + loc_t *newloc, dict_t *xdata); int32_t -default_readv_cbk_resume (call_frame_t * frame, void *cookie, xlator_t * this, - int32_t op_ret, int32_t op_errno, - struct iovec *vector, int32_t count, - struct iatt *stbuf, struct iobref *iobref, - dict_t * xdata); +default_link_resume(call_frame_t *frame, xlator_t *this, loc_t *oldloc, + loc_t *newloc, dict_t *xdata); +int32_t +default_create_resume(call_frame_t *frame, xlator_t *this, loc_t *loc, + int32_t flags, mode_t mode, mode_t umask, fd_t *fd, + dict_t *xdata); int32_t -default_writev_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, int32_t op_errno, - struct iatt *prebuf, struct iatt *postbuf, - dict_t * xdata); +default_open_resume(call_frame_t *frame, xlator_t *this, loc_t *loc, + int32_t flags, fd_t *fd, dict_t *xdata); +int32_t +default_readv_resume(call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size, + off_t offset, uint32_t flags, dict_t *xdata); int32_t -default_flush_cbk_resume (call_frame_t * frame, void *cookie, xlator_t * this, - int32_t op_ret, int32_t op_errno, dict_t * xdata); +default_writev_resume(call_frame_t *frame, xlator_t *this, fd_t *fd, + struct iovec *vector, int32_t count, off_t offset, + uint32_t flags, struct iobref *iobref, dict_t *xdata); +int32_t +default_flush_resume(call_frame_t *frame, xlator_t *this, fd_t *fd, + dict_t *xdata); +int32_t +default_fsync_resume(call_frame_t *frame, xlator_t *this, fd_t *fd, + int32_t datasync, dict_t *xdata); int32_t -default_fsync_cbk_resume (call_frame_t * frame, void *cookie, xlator_t * this, - int32_t op_ret, int32_t op_errno, - struct iatt *prebuf, struct iatt *postbuf, - dict_t * xdata); +default_opendir_resume(call_frame_t *frame, xlator_t *this, loc_t *loc, + fd_t *fd, dict_t *xdata); int32_t -default_fstat_cbk_resume (call_frame_t * frame, void *cookie, xlator_t * this, - int32_t op_ret, int32_t op_errno, struct iatt *buf, - dict_t * xdata); +default_fsyncdir_resume(call_frame_t *frame, xlator_t *this, fd_t *fd, + int32_t datasync, dict_t *xdata); int32_t -default_opendir_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, int32_t op_errno, - fd_t * fd, dict_t * xdata); +default_statfs_resume(call_frame_t *frame, xlator_t *this, loc_t *loc, + dict_t *xdata); int32_t -default_fsyncdir_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, - int32_t op_errno, dict_t * xdata); +default_setxattr_resume(call_frame_t *frame, xlator_t *this, loc_t *loc, + dict_t *dict, int32_t flags, dict_t *xdata); int32_t -default_statfs_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, int32_t op_errno, - struct statvfs *buf, dict_t * xdata); +default_getxattr_resume(call_frame_t *frame, xlator_t *this, loc_t *loc, + const char *name, dict_t *xdata); +int32_t +default_fsetxattr_resume(call_frame_t *frame, xlator_t *this, fd_t *fd, + dict_t *dict, int32_t flags, dict_t *xdata); int32_t -default_setxattr_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, - int32_t op_errno, dict_t * xdata); +default_fgetxattr_resume(call_frame_t *frame, xlator_t *this, fd_t *fd, + const char *name, dict_t *xdata); +int32_t +default_removexattr_resume(call_frame_t *frame, xlator_t *this, loc_t *loc, + const char *name, dict_t *xdata); int32_t -default_fsetxattr_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, - int32_t op_errno, dict_t * xdata); +default_fremovexattr_resume(call_frame_t *frame, xlator_t *this, fd_t *fd, + const char *name, dict_t *xdata); +int32_t +default_lk_resume(call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t cmd, + struct gf_flock *flock, dict_t *xdata); +int32_t +default_inodelk_resume(call_frame_t *frame, xlator_t *this, const char *volume, + loc_t *loc, int32_t cmd, struct gf_flock *flock, + dict_t *xdata); int32_t -default_fgetxattr_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, - int32_t op_errno, dict_t * dict, - dict_t * xdata); +default_finodelk_resume(call_frame_t *frame, xlator_t *this, const char *volume, + fd_t *fd, int32_t cmd, struct gf_flock *flock, + dict_t *xdata); +int32_t +default_entrylk_resume(call_frame_t *frame, xlator_t *this, const char *volume, + loc_t *loc, const char *basename, entrylk_cmd cmd, + entrylk_type type, dict_t *xdata); int32_t -default_getxattr_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, - int32_t op_errno, dict_t * dict, dict_t * xdata); +default_fentrylk_resume(call_frame_t *frame, xlator_t *this, const char *volume, + fd_t *fd, const char *basename, entrylk_cmd cmd, + entrylk_type type, dict_t *xdata); int32_t -default_xattrop_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, int32_t op_errno, - dict_t * dict, dict_t * xdata); +default_readdir_resume(call_frame_t *frame, xlator_t *this, fd_t *fd, + size_t size, off_t off, dict_t *xdata); int32_t -default_fxattrop_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, - int32_t op_errno, dict_t * dict, dict_t * xdata); +default_readdirp_resume(call_frame_t *frame, xlator_t *this, fd_t *fd, + size_t size, off_t off, dict_t *xdata); +int32_t +default_xattrop_resume(call_frame_t *frame, xlator_t *this, loc_t *loc, + gf_xattrop_flags_t flags, dict_t *dict, dict_t *xdata); int32_t -default_removexattr_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, - int32_t op_errno, dict_t * xdata); +default_fxattrop_resume(call_frame_t *frame, xlator_t *this, fd_t *fd, + gf_xattrop_flags_t flags, dict_t *dict, dict_t *xdata); +int32_t +default_rchecksum_resume(call_frame_t *frame, xlator_t *this, fd_t *fd, + off_t offset, int32_t len, dict_t *xdata); int32_t -default_fremovexattr_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, - int32_t op_errno, dict_t * xdata); +default_setattr_resume(call_frame_t *frame, xlator_t *this, loc_t *loc, + struct iatt *stbuf, int32_t valid, dict_t *xdata); int32_t -default_lk_cbk_resume (call_frame_t * frame, void *cookie, xlator_t * this, - int32_t op_ret, int32_t op_errno, - struct gf_flock *lock, dict_t * xdata); +default_fsetattr_resume(call_frame_t *frame, xlator_t *this, fd_t *fd, + struct iatt *stbuf, int32_t valid, dict_t *xdata); int32_t -default_inodelk_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, int32_t op_errno, - dict_t * xdata); +default_fallocate_resume(call_frame_t *frame, xlator_t *this, fd_t *fd, + int32_t keep_size, off_t offset, size_t len, + dict_t *xdata); +int32_t +default_discard_resume(call_frame_t *frame, xlator_t *this, fd_t *fd, + off_t offset, size_t len, dict_t *xdata); int32_t -default_finodelk_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, - int32_t op_errno, dict_t * xdata); +default_zerofill_resume(call_frame_t *frame, xlator_t *this, fd_t *fd, + off_t offset, off_t len, dict_t *xdata); int32_t -default_entrylk_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, int32_t op_errno, - dict_t * xdata); +default_ipc_resume(call_frame_t *frame, xlator_t *this, int32_t op, + dict_t *xdata); int32_t -default_fentrylk_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, - int32_t op_errno, dict_t * xdata); +default_seek_resume(call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, + gf_seek_what_t what, dict_t *xdata); +int32_t +default_lease_resume(call_frame_t *frame, xlator_t *this, loc_t *loc, + struct gf_lease *lease, dict_t *xdata); int32_t -default_rchecksum_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, - int32_t op_errno, uint32_t weak_checksum, - uint8_t * strong_checksum, dict_t * xdata); +default_getactivelk_resume(call_frame_t *frame, xlator_t *this, loc_t *loc, + dict_t *xdata); +int32_t +default_setactivelk_resume(call_frame_t *frame, xlator_t *this, loc_t *loc, + lock_migration_info_t *locklist, dict_t *xdata); int32_t -default_readdir_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, int32_t op_errno, - gf_dirent_t * entries, dict_t * xdata); +default_put_resume(call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, + mode_t umask, uint32_t flags, struct iovec *vector, + int32_t count, off_t off, struct iobref *iobref, + dict_t *xattr, dict_t *xdata); +/* _cbk_resume */ int32_t -default_readdirp_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, - int32_t op_errno, gf_dirent_t * entries, - dict_t * xdata); +default_lookup_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, inode_t *inode, + struct iatt *buf, dict_t *xdata, + struct iatt *postparent); int32_t -default_setattr_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, int32_t op_errno, - struct iatt *statpre, struct iatt *statpost, - dict_t * xdata); +default_stat_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iatt *buf, + dict_t *xdata); int32_t -default_fsetattr_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, - int32_t op_errno, struct iatt *statpre, - struct iatt *statpost, dict_t * xdata); +default_truncate_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, + struct iatt *prebuf, struct iatt *postbuf, + dict_t *xdata); -int32_t default_fallocate_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, - int32_t op_errno, struct iatt *pre, - struct iatt *post, dict_t * xdata); +int32_t +default_ftruncate_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, + struct iatt *prebuf, struct iatt *postbuf, + dict_t *xdata); -int32_t default_discard_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, - int32_t op_errno, struct iatt *pre, - struct iatt *post, dict_t * xdata); +int32_t +default_access_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *xdata); -int32_t default_zerofill_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, - int32_t op_errno, struct iatt *pre, - struct iatt *post, dict_t * xdata); int32_t -default_ipc_cbk_resume (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, dict_t *xdata); +default_readlink_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, const char *path, + struct iatt *buf, dict_t *xdata); int32_t -default_seek_cbk_resume (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, off_t offset, - dict_t *xdata); +default_mknod_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, inode_t *inode, + struct iatt *buf, struct iatt *preparent, + struct iatt *postparent, dict_t *xdata); int32_t -default_getspec_cbk_resume (call_frame_t * frame, void *cookie, - xlator_t * this, int32_t op_ret, int32_t op_errno, - char *spec_data); +default_mkdir_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, inode_t *inode, + struct iatt *buf, struct iatt *preparent, + struct iatt *postparent, dict_t *xdata); int32_t -default_lease_cbk_resume (call_frame_t *frame, void *cookie, xlator_t *this, +default_unlink_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, int32_t op_errno, - struct gf_lease *lease, dict_t *xdata); + struct iatt *preparent, struct iatt *postparent, + dict_t *xdata); int32_t -default_getactivelk_cbk_resume (call_frame_t *frame, void *cookie, - xlator_t *this, int32_t op_ret, - int32_t op_errno, - lock_migration_info_t *locklist, - dict_t *xdata); +default_rmdir_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, + struct iatt *preparent, struct iatt *postparent, + dict_t *xdata); int32_t -default_setactivelk_cbk_resume (call_frame_t *frame, void *cookie, - xlator_t *this, int32_t op_ret, - int32_t op_errno, dict_t *xdata); +default_symlink_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, inode_t *inode, + struct iatt *buf, struct iatt *preparent, + struct iatt *postparent, dict_t *xdata); + +int32_t +default_rename_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iatt *buf, + struct iatt *preoldparent, struct iatt *postoldparent, + struct iatt *prenewparent, struct iatt *postnewparent, + dict_t *xdata); int32_t -default_put_cbk_resume (call_frame_t *frame, void *cookie, xlator_t *this, +default_link_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, int32_t op_errno, inode_t *inode, struct iatt *buf, struct iatt *preparent, struct iatt *postparent, dict_t *xdata); int32_t -default_icreate_resume (call_frame_t *frame, xlator_t *this, - loc_t *loc, mode_t mode, dict_t *xdata); +default_create_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, fd_t *fd, + inode_t *inode, struct iatt *buf, + struct iatt *preparent, struct iatt *postparent, + dict_t *xdata); int32_t -default_namelink_resume (call_frame_t *frame, - xlator_t *this, loc_t *loc, dict_t *xdata); +default_open_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, fd_t *fd, + dict_t *xdata); -/* _CBK */ int32_t -default_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, inode_t *inode, - struct iatt *buf, dict_t *xdata, struct iatt *postparent); +default_readv_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iovec *vector, + int32_t count, struct iatt *stbuf, + struct iobref *iobref, dict_t *xdata); int32_t -default_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, struct iatt *buf, dict_t *xdata); +default_writev_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iatt *prebuf, + struct iatt *postbuf, dict_t *xdata); +int32_t +default_flush_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *xdata); int32_t -default_truncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, struct iatt *prebuf, - struct iatt *postbuf, dict_t *xdata); +default_fsync_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iatt *prebuf, + struct iatt *postbuf, dict_t *xdata); int32_t -default_ftruncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, struct iatt *prebuf, - struct iatt *postbuf, dict_t *xdata); +default_fstat_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iatt *buf, + dict_t *xdata); int32_t -default_access_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, dict_t *xdata); +default_opendir_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, fd_t *fd, + dict_t *xdata); int32_t -default_readlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, const char *path, - struct iatt *buf, dict_t *xdata); +default_fsyncdir_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *xdata); +int32_t +default_statfs_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct statvfs *buf, + dict_t *xdata); int32_t -default_mknod_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, inode_t *inode, - struct iatt *buf, struct iatt *preparent, - struct iatt *postparent, dict_t *xdata); +default_setxattr_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *xdata); int32_t -default_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, inode_t *inode, - struct iatt *buf, struct iatt *preparent, - struct iatt *postparent, dict_t *xdata); +default_fsetxattr_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *xdata); int32_t -default_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, struct iatt *preparent, - struct iatt *postparent, dict_t *xdata); +default_fgetxattr_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *dict, + dict_t *xdata); int32_t -default_rmdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, struct iatt *preparent, - struct iatt *postparent, dict_t *xdata); +default_getxattr_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *dict, + dict_t *xdata); +int32_t +default_xattrop_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *dict, + dict_t *xdata); int32_t -default_symlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, inode_t *inode, - struct iatt *buf, struct iatt *preparent, - struct iatt *postparent, dict_t *xdata); +default_fxattrop_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *dict, + dict_t *xdata); +int32_t +default_removexattr_cbk_resume(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, int32_t op_errno, + dict_t *xdata); int32_t -default_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, struct iatt *buf, - struct iatt *preoldparent, struct iatt *postoldparent, - struct iatt *prenewparent, struct iatt *postnewparent, dict_t *xdata); +default_fremovexattr_cbk_resume(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, dict_t *xdata); +int32_t +default_lk_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct gf_flock *lock, + dict_t *xdata); int32_t -default_link_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, inode_t *inode, - struct iatt *buf, struct iatt *preparent, - struct iatt *postparent, dict_t *xdata); +default_inodelk_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *xdata); +int32_t +default_finodelk_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *xdata); int32_t -default_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, fd_t *fd, inode_t *inode, - struct iatt *buf, struct iatt *preparent, - struct iatt *postparent, dict_t *xdata); +default_entrylk_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *xdata); int32_t -default_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, fd_t *fd, dict_t *xdata); +default_fentrylk_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *xdata); int32_t -default_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, struct iovec *vector, - int32_t count, struct iatt *stbuf, struct iobref *iobref, dict_t *xdata); +default_rchecksum_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, + uint32_t weak_checksum, uint8_t *strong_checksum, + dict_t *xdata); +int32_t +default_readdir_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, + gf_dirent_t *entries, dict_t *xdata); int32_t -default_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, struct iatt *prebuf, - struct iatt *postbuf, dict_t *xdata); +default_readdirp_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, + gf_dirent_t *entries, dict_t *xdata); +int32_t +default_setattr_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, + struct iatt *statpre, struct iatt *statpost, + dict_t *xdata); int32_t -default_flush_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, dict_t *xdata); +default_fsetattr_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, + struct iatt *statpre, struct iatt *statpost, + dict_t *xdata); +int32_t +default_fallocate_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iatt *pre, + struct iatt *post, dict_t *xdata); +int32_t +default_discard_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iatt *pre, + struct iatt *post, dict_t *xdata); int32_t -default_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, struct iatt *prebuf, - struct iatt *postbuf, dict_t *xdata); +default_zerofill_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iatt *pre, + struct iatt *post, dict_t *xdata); +int32_t +default_ipc_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *xdata); int32_t -default_fstat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, struct iatt *buf, dict_t *xdata); +default_seek_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, off_t offset, + dict_t *xdata); int32_t -default_opendir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, fd_t *fd, dict_t *xdata); +default_getspec_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, char *spec_data); int32_t -default_fsyncdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, dict_t *xdata); +default_lease_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, + struct gf_lease *lease, dict_t *xdata); int32_t -default_statfs_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, struct statvfs *buf, dict_t *xdata); +default_getactivelk_cbk_resume(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, int32_t op_errno, + lock_migration_info_t *locklist, dict_t *xdata); +int32_t +default_setactivelk_cbk_resume(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, int32_t op_errno, + dict_t *xdata); int32_t -default_setxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, dict_t *xdata); +default_put_cbk_resume(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, inode_t *inode, + struct iatt *buf, struct iatt *preparent, + struct iatt *postparent, dict_t *xdata); +int32_t +default_icreate_resume(call_frame_t *frame, xlator_t *this, loc_t *loc, + mode_t mode, dict_t *xdata); int32_t -default_fsetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, dict_t *xdata); +default_namelink_resume(call_frame_t *frame, xlator_t *this, loc_t *loc, + dict_t *xdata); +/* _CBK */ +int32_t +default_lookup_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, inode_t *inode, + struct iatt *buf, dict_t *xdata, struct iatt *postparent); +int32_t +default_stat_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iatt *buf, + dict_t *xdata); int32_t -default_fgetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, dict_t *dict, dict_t *xdata); +default_truncate_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iatt *prebuf, + struct iatt *postbuf, dict_t *xdata); +int32_t +default_ftruncate_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iatt *prebuf, + struct iatt *postbuf, dict_t *xdata); int32_t -default_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, dict_t *dict, dict_t *xdata); +default_access_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *xdata); int32_t -default_xattrop_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, dict_t *dict, dict_t *xdata); +default_readlink_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, const char *path, + struct iatt *buf, dict_t *xdata); int32_t -default_fxattrop_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, dict_t *dict, dict_t *xdata); +default_mknod_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, inode_t *inode, + struct iatt *buf, struct iatt *preparent, + struct iatt *postparent, dict_t *xdata); +int32_t +default_mkdir_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, inode_t *inode, + struct iatt *buf, struct iatt *preparent, + struct iatt *postparent, dict_t *xdata); int32_t -default_removexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, dict_t *xdata); +default_unlink_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iatt *preparent, + struct iatt *postparent, dict_t *xdata); int32_t -default_fremovexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, dict_t *xdata); +default_rmdir_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iatt *preparent, + struct iatt *postparent, dict_t *xdata); int32_t -default_lk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, struct gf_flock *lock, dict_t *xdata); +default_symlink_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, inode_t *inode, + struct iatt *buf, struct iatt *preparent, + struct iatt *postparent, dict_t *xdata); int32_t -default_inodelk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, dict_t *xdata); +default_rename_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iatt *buf, + struct iatt *preoldparent, struct iatt *postoldparent, + struct iatt *prenewparent, struct iatt *postnewparent, + dict_t *xdata); +int32_t +default_link_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, inode_t *inode, + struct iatt *buf, struct iatt *preparent, + struct iatt *postparent, dict_t *xdata); int32_t -default_finodelk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, dict_t *xdata); +default_create_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, fd_t *fd, inode_t *inode, + struct iatt *buf, struct iatt *preparent, + struct iatt *postparent, dict_t *xdata); + +int32_t +default_open_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, fd_t *fd, dict_t *xdata); + +int32_t +default_readv_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iovec *vector, + int32_t count, struct iatt *stbuf, struct iobref *iobref, + dict_t *xdata); int32_t -default_entrylk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, +default_writev_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iatt *prebuf, + struct iatt *postbuf, dict_t *xdata); + +int32_t +default_flush_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *xdata); + +int32_t +default_fsync_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iatt *prebuf, + struct iatt *postbuf, dict_t *xdata); + +int32_t +default_fstat_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iatt *buf, + dict_t *xdata); + +int32_t +default_opendir_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, fd_t *fd, dict_t *xdata); + +int32_t +default_fsyncdir_cbk(call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, int32_t op_errno, dict_t *xdata); int32_t -default_fentrylk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, +default_statfs_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct statvfs *buf, + dict_t *xdata); + +int32_t +default_setxattr_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *xdata); + +int32_t +default_fsetxattr_cbk(call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, int32_t op_errno, dict_t *xdata); +int32_t +default_fgetxattr_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *dict, + dict_t *xdata); int32_t -default_rchecksum_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, uint32_t weak_checksum, - uint8_t *strong_checksum, dict_t *xdata); +default_getxattr_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *dict, + dict_t *xdata); +int32_t +default_xattrop_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *dict, + dict_t *xdata); int32_t -default_readdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, gf_dirent_t *entries, dict_t *xdata); +default_fxattrop_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *dict, + dict_t *xdata); +int32_t +default_removexattr_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *xdata); int32_t -default_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, gf_dirent_t *entries, dict_t *xdata); +default_fremovexattr_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *xdata); int32_t -default_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, struct iatt *statpre, - struct iatt *statpost, dict_t *xdata); +default_lk_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct gf_flock *lock, + dict_t *xdata); int32_t -default_fsetattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, struct iatt *statpre, - struct iatt *statpost, dict_t *xdata); +default_inodelk_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *xdata); -int32_t default_fallocate_cbk(call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, struct iatt *pre, - struct iatt *post, dict_t *xdata); +int32_t +default_finodelk_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *xdata); -int32_t default_discard_cbk(call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, struct iatt *pre, - struct iatt *post, dict_t *xdata); +int32_t +default_entrylk_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *xdata); -int32_t default_zerofill_cbk(call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, struct iatt *pre, - struct iatt *post, dict_t *xdata); +int32_t +default_fentrylk_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *xdata); -int32_t default_ipc_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, dict_t *xdata); +int32_t +default_rchecksum_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, uint32_t weak_checksum, + uint8_t *strong_checksum, dict_t *xdata); -int32_t default_seek_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, off_t offset, - dict_t *xdata); +int32_t +default_readdir_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, gf_dirent_t *entries, + dict_t *xdata); int32_t -default_getspec_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, char *spec_data); +default_readdirp_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, gf_dirent_t *entries, + dict_t *xdata); int32_t -default_lease_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, - struct gf_lease *lease, dict_t *xdata); +default_setattr_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iatt *statpre, + struct iatt *statpost, dict_t *xdata); int32_t -default_getactivelk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, - lock_migration_info_t *locklist, - dict_t *xdata); +default_fsetattr_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iatt *statpre, + struct iatt *statpost, dict_t *xdata); int32_t -default_setactivelk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, dict_t *xdata); +default_fallocate_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iatt *pre, + struct iatt *post, dict_t *xdata); int32_t -default_put_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, inode_t *inode, - struct iatt *buf, struct iatt *preparent, - struct iatt *postparent, dict_t *xdata); +default_discard_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iatt *pre, + struct iatt *post, dict_t *xdata); int32_t -default_icreate_cbk (call_frame_t *frame, - void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, - inode_t *inode, struct iatt *buf, dict_t *xdata); +default_zerofill_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iatt *pre, + struct iatt *post, dict_t *xdata); int32_t -default_namelink_cbk (call_frame_t *frame, void *cookie, - xlator_t *this, int32_t op_ret, - int32_t op_errno, struct iatt *prebuf, - struct iatt *postbuf, dict_t *xdata); +default_ipc_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *xdata); + +int32_t +default_seek_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, off_t offset, dict_t *xdata); + +int32_t +default_getspec_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, char *spec_data); + +int32_t +default_lease_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct gf_lease *lease, + dict_t *xdata); + +int32_t +default_getactivelk_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, + lock_migration_info_t *locklist, dict_t *xdata); int32_t -default_lookup_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_setactivelk_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *xdata); int32_t -default_stat_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_put_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, inode_t *inode, + struct iatt *buf, struct iatt *preparent, + struct iatt *postparent, dict_t *xdata); +int32_t +default_icreate_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, inode_t *inode, + struct iatt *buf, dict_t *xdata); int32_t -default_truncate_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_namelink_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iatt *prebuf, + struct iatt *postbuf, dict_t *xdata); int32_t -default_ftruncate_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_lookup_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_access_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_stat_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_readlink_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_truncate_failure_cbk(call_frame_t *frame, int32_t op_errno); +int32_t +default_ftruncate_failure_cbk(call_frame_t *frame, int32_t op_errno); + +int32_t +default_access_failure_cbk(call_frame_t *frame, int32_t op_errno); + +int32_t +default_readlink_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_mknod_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_mknod_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_mkdir_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_mkdir_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_unlink_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_unlink_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_rmdir_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_rmdir_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_symlink_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_symlink_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_rename_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_rename_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_link_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_link_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_create_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_create_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_open_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_open_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_readv_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_readv_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_writev_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_writev_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_flush_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_flush_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_fsync_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_fsync_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_fstat_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_fstat_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_opendir_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_opendir_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_fsyncdir_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_fsyncdir_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_statfs_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_statfs_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_setxattr_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_setxattr_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_fsetxattr_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_fsetxattr_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_fgetxattr_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_fgetxattr_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_getxattr_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_getxattr_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_xattrop_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_xattrop_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_fxattrop_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_fxattrop_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_removexattr_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_removexattr_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_fremovexattr_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_fremovexattr_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_lk_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_lk_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_inodelk_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_inodelk_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_finodelk_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_finodelk_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_entrylk_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_entrylk_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_fentrylk_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_fentrylk_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_rchecksum_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_rchecksum_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_readdir_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_readdir_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_readdirp_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_readdirp_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_setattr_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_setattr_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_fsetattr_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_fsetattr_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_fallocate_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_fallocate_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_discard_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_discard_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_zerofill_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_zerofill_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_getspec_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_getspec_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_ipc_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_ipc_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_seek_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_seek_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_lease_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_lease_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_getactivelk_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_getactivelk_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_setactivelk_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_setactivelk_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_put_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_put_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_icreate_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_icreate_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_namelink_failure_cbk (call_frame_t *frame, int32_t op_errno); +default_namelink_failure_cbk(call_frame_t *frame, int32_t op_errno); int32_t -default_mem_acct_init (xlator_t *this); +default_mem_acct_init(xlator_t *this); void -default_fini (xlator_t *this); +default_fini(xlator_t *this); #endif /* _DEFAULTS_H */ diff --git a/libglusterfs/src/dict.h b/libglusterfs/src/dict.h index a8945d017b7..45cdb33ec9e 100644 --- a/libglusterfs/src/dict.h +++ b/libglusterfs/src/dict.h @@ -22,286 +22,367 @@ typedef struct _data data_t; typedef struct _dict dict_t; typedef struct _data_pair data_pair_t; - -#define GF_PROTOCOL_DICT_SERIALIZE(this,from_dict,to,len,ope,labl) do { \ - int _ret = 0; \ - \ - if (!from_dict) \ - break; \ - \ - _ret = dict_allocate_and_serialize (from_dict, to, &len);\ - if (_ret < 0) { \ - gf_msg (this->name, GF_LOG_WARNING, 0, \ - LG_MSG_DICT_SERIAL_FAILED, \ - "failed to get serialized dict (%s)", \ - (#from_dict)); \ - ope = EINVAL; \ - goto labl; \ - } \ - } while (0) - - -#define GF_PROTOCOL_DICT_UNSERIALIZE(xl,to,buff,len,ret,ope,labl) do { \ - if (!len) \ - break; \ - to = dict_new(); \ - GF_VALIDATE_OR_GOTO (xl->name, to, labl); \ - \ - ret = dict_unserialize (buff, len, &to); \ - if (ret < 0) { \ - gf_msg (xl->name, GF_LOG_WARNING, 0, \ - LG_MSG_DICT_UNSERIAL_FAILED, \ - "failed to unserialize dictionary (%s)", \ - (#to)); \ - \ - ope = EINVAL; \ - goto labl; \ - } \ - \ - } while (0) +#define GF_PROTOCOL_DICT_SERIALIZE(this, from_dict, to, len, ope, labl) \ + do { \ + int _ret = 0; \ + \ + if (!from_dict) \ + break; \ + \ + _ret = dict_allocate_and_serialize(from_dict, to, &len); \ + if (_ret < 0) { \ + gf_msg(this->name, GF_LOG_WARNING, 0, LG_MSG_DICT_SERIAL_FAILED, \ + "failed to get serialized dict (%s)", (#from_dict)); \ + ope = EINVAL; \ + goto labl; \ + } \ + } while (0) + +#define GF_PROTOCOL_DICT_UNSERIALIZE(xl, to, buff, len, ret, ope, labl) \ + do { \ + if (!len) \ + break; \ + to = dict_new(); \ + GF_VALIDATE_OR_GOTO(xl->name, to, labl); \ + \ + ret = dict_unserialize(buff, len, &to); \ + if (ret < 0) { \ + gf_msg(xl->name, GF_LOG_WARNING, 0, LG_MSG_DICT_UNSERIAL_FAILED, \ + "failed to unserialize dictionary (%s)", (#to)); \ + \ + ope = EINVAL; \ + goto labl; \ + } \ + \ + } while (0) #define dict_foreach_inline(d, c) for (c = d->members_list; c; c = c->next) -#define DICT_KEY_VALUE_MAX_SIZE 1048576 -#define DICT_MAX_FLAGS 256 -#define DICT_FLAG_SET 1 -#define DICT_FLAG_CLEAR 0 +#define DICT_KEY_VALUE_MAX_SIZE 1048576 +#define DICT_MAX_FLAGS 256 +#define DICT_FLAG_SET 1 +#define DICT_FLAG_CLEAR 0 struct _data { - char *data; - gf_atomic_t refcount; - gf_lock_t lock; - gf_dict_data_type_t data_type; - int32_t len; - gf_boolean_t is_static; + char *data; + gf_atomic_t refcount; + gf_lock_t lock; + gf_dict_data_type_t data_type; + int32_t len; + gf_boolean_t is_static; }; struct _data_pair { - struct _data_pair *hash_next; - struct _data_pair *prev; - struct _data_pair *next; - data_t *value; - char *key; - uint32_t key_hash; + struct _data_pair *hash_next; + struct _data_pair *prev; + struct _data_pair *next; + data_t *value; + char *key; + uint32_t key_hash; }; struct _dict { - uint64_t max_count; - int32_t hash_size; - int32_t count; - gf_atomic_t refcount; - data_pair_t **members; - data_pair_t *members_list; - char *extra_free; - char *extra_stdfree; - gf_lock_t lock; - data_pair_t *members_internal; - data_pair_t free_pair; - gf_boolean_t free_pair_in_use; + uint64_t max_count; + int32_t hash_size; + int32_t count; + gf_atomic_t refcount; + data_pair_t **members; + data_pair_t *members_list; + char *extra_free; + char *extra_stdfree; + gf_lock_t lock; + data_pair_t *members_internal; + data_pair_t free_pair; + gf_boolean_t free_pair_in_use; }; -typedef gf_boolean_t (*dict_match_t) (dict_t *d, char *k, data_t *v, - void *data); +typedef gf_boolean_t (*dict_match_t)(dict_t *d, char *k, data_t *v, void *data); -int32_t is_data_equal (data_t *one, data_t *two); -void data_destroy (data_t *data); +int32_t +is_data_equal(data_t *one, data_t *two); +void +data_destroy(data_t *data); /* function to set a key/value pair (overwrite existing if matches the key */ -int32_t dict_set (dict_t *this, char *key, data_t *value); -int32_t dict_setn (dict_t *this, char *key, const int keylen, data_t *value); +int32_t +dict_set(dict_t *this, char *key, data_t *value); +int32_t +dict_setn(dict_t *this, char *key, const int keylen, data_t *value); /* function to set a new key/value pair (without checking for duplicate) */ -int32_t dict_add (dict_t *this, char *key, data_t *value); -int32_t dict_addn (dict_t *this, char *key, const int keylen, data_t *value); -int dict_get_with_ref (dict_t *this, char *key, data_t **data); -int dict_get_with_refn (dict_t *this, char *key, const int keylen, - data_t **data); -data_t *dict_get (dict_t *this, char *key); -data_t *dict_getn (dict_t *this, char *key, const int keylen); -void dict_del (dict_t *this, char *key); -void dict_deln (dict_t *this, char *key, const int keylen); -int dict_reset (dict_t *dict); - -int dict_key_count (dict_t *this); - -int32_t dict_serialized_length (dict_t *dict); -int32_t dict_serialize (dict_t *dict, char *buf); -int32_t dict_unserialize (char *buf, int32_t size, dict_t **fill); - -int32_t dict_allocate_and_serialize (dict_t *this, char **buf, u_int *length); - -void dict_unref (dict_t *dict); -dict_t *dict_ref (dict_t *dict); -data_t *data_ref (data_t *data); -void data_unref (data_t *data); - -int32_t dict_lookup (dict_t *this, char *key, data_t **data); +int32_t +dict_add(dict_t *this, char *key, data_t *value); +int32_t +dict_addn(dict_t *this, char *key, const int keylen, data_t *value); +int +dict_get_with_ref(dict_t *this, char *key, data_t **data); +int +dict_get_with_refn(dict_t *this, char *key, const int keylen, data_t **data); +data_t * +dict_get(dict_t *this, char *key); +data_t * +dict_getn(dict_t *this, char *key, const int keylen); +void +dict_del(dict_t *this, char *key); +void +dict_deln(dict_t *this, char *key, const int keylen); +int +dict_reset(dict_t *dict); + +int +dict_key_count(dict_t *this); + +int32_t +dict_serialized_length(dict_t *dict); +int32_t +dict_serialize(dict_t *dict, char *buf); +int32_t +dict_unserialize(char *buf, int32_t size, dict_t **fill); + +int32_t +dict_allocate_and_serialize(dict_t *this, char **buf, u_int *length); + +void +dict_unref(dict_t *dict); +dict_t * +dict_ref(dict_t *dict); +data_t * +data_ref(data_t *data); +void +data_unref(data_t *data); + +int32_t +dict_lookup(dict_t *this, char *key, data_t **data); /* TODO: provide converts for different byte sizes, signedness, and void * */ -data_t *int_to_data (int64_t value); -data_t *str_to_data (char *value); -data_t *strn_to_data (char *value, const int vallen); -data_t *data_from_dynptr (void *value, int32_t len); -data_t *bin_to_data (void *value, int32_t len); -data_t *static_str_to_data (char *value); -data_t *static_bin_to_data (void *value); - -int64_t data_to_int64 (data_t *data); -int32_t data_to_int32 (data_t *data); -int16_t data_to_int16 (data_t *data); -int8_t data_to_int8 (data_t *data); - -uint64_t data_to_uint64 (data_t *data); -uint32_t data_to_uint32 (data_t *data); -uint16_t data_to_uint16 (data_t *data); -uint8_t data_to_uint8 (data_t *data); - -data_t *data_from_int64 (int64_t value); -data_t *data_from_int32 (int32_t value); -data_t *data_from_int16 (int16_t value); -data_t *data_from_int8 (int8_t value); - -data_t *data_from_uint64 (uint64_t value); -data_t *data_from_uint32 (uint32_t value); -data_t *data_from_uint16 (uint16_t value); - -char *data_to_str (data_t *data); -void *data_to_bin (data_t *data); -void *data_to_ptr (data_t *data); -data_t * data_copy (data_t *old); -struct iatt *data_to_iatt (data_t *data, char *key); - -int dict_foreach (dict_t *this, - int (*fn)(dict_t *this, - char *key, - data_t *value, - void *data), - void *data); - -int dict_foreach_fnmatch (dict_t *dict, char *pattern, - int (*fn)(dict_t *this, - char *key, - data_t *value, - void *data), - void *data); +data_t * +int_to_data(int64_t value); +data_t * +str_to_data(char *value); +data_t * +strn_to_data(char *value, const int vallen); +data_t * +data_from_dynptr(void *value, int32_t len); +data_t * +bin_to_data(void *value, int32_t len); +data_t * +static_str_to_data(char *value); +data_t * +static_bin_to_data(void *value); + +int64_t +data_to_int64(data_t *data); +int32_t +data_to_int32(data_t *data); +int16_t +data_to_int16(data_t *data); +int8_t +data_to_int8(data_t *data); + +uint64_t +data_to_uint64(data_t *data); +uint32_t +data_to_uint32(data_t *data); +uint16_t +data_to_uint16(data_t *data); +uint8_t +data_to_uint8(data_t *data); + +data_t * +data_from_int64(int64_t value); +data_t * +data_from_int32(int32_t value); +data_t * +data_from_int16(int16_t value); +data_t * +data_from_int8(int8_t value); + +data_t * +data_from_uint64(uint64_t value); +data_t * +data_from_uint32(uint32_t value); +data_t * +data_from_uint16(uint16_t value); + +char * +data_to_str(data_t *data); +void * +data_to_bin(data_t *data); +void * +data_to_ptr(data_t *data); +data_t * +data_copy(data_t *old); +struct iatt * +data_to_iatt(data_t *data, char *key); + +int +dict_foreach(dict_t *this, + int (*fn)(dict_t *this, char *key, data_t *value, void *data), + void *data); int -dict_foreach_match (dict_t *dict, - gf_boolean_t (*match)(dict_t *this, - char *key, - data_t *value, - void *mdata), - void *match_data, - int (*action)(dict_t *this, - char *key, - data_t *value, - void *adata), - void *action_data); - -int dict_null_foreach_fn (dict_t *d, char *k, - data_t *v, void *tmp); -int dict_remove_foreach_fn (dict_t *d, char *k, - data_t *v, void *tmp); -dict_t *dict_copy (dict_t *this, dict_t *new); -dict_t *get_new_dict (void); -int dict_keys_join (void *value, int size, dict_t *dict, - int (*filter_fn)(char *key)); +dict_foreach_fnmatch(dict_t *dict, char *pattern, + int (*fn)(dict_t *this, char *key, data_t *value, + void *data), + void *data); + +int +dict_foreach_match(dict_t *dict, + gf_boolean_t (*match)(dict_t *this, char *key, data_t *value, + void *mdata), + void *match_data, + int (*action)(dict_t *this, char *key, data_t *value, + void *adata), + void *action_data); + +int +dict_null_foreach_fn(dict_t *d, char *k, data_t *v, void *tmp); +int +dict_remove_foreach_fn(dict_t *d, char *k, data_t *v, void *tmp); +dict_t * +dict_copy(dict_t *this, dict_t *new); +dict_t * +get_new_dict(void); +int +dict_keys_join(void *value, int size, dict_t *dict, + int (*filter_fn)(char *key)); /* CLEANED UP FUNCTIONS DECLARATIONS */ -GF_MUST_CHECK dict_t *dict_new (void); -dict_t *dict_copy_with_ref (dict_t *this, dict_t *new); - -GF_MUST_CHECK int dict_reset (dict_t *dict); - -GF_MUST_CHECK int dict_get_int8 (dict_t *this, char *key, int8_t *val); -GF_MUST_CHECK int dict_set_int8 (dict_t *this, char *key, int8_t val); - -GF_MUST_CHECK int dict_get_int16 (dict_t *this, char *key, int16_t *val); -GF_MUST_CHECK int dict_set_int16 (dict_t *this, char *key, int16_t val); - -GF_MUST_CHECK int dict_get_int32 (dict_t *this, char *key, int32_t *val); -GF_MUST_CHECK int dict_get_int32n (dict_t *this, char *key, const int keylen, - int32_t *val); -GF_MUST_CHECK int dict_set_int32 (dict_t *this, char *key, int32_t val); -GF_MUST_CHECK int dict_set_int32n (dict_t *this, char *key, const int keylen, - int32_t val); - -GF_MUST_CHECK int dict_get_int64 (dict_t *this, char *key, int64_t *val); -GF_MUST_CHECK int dict_set_int64 (dict_t *this, char *key, int64_t val); - -GF_MUST_CHECK int dict_get_uint16 (dict_t *this, char *key, uint16_t *val); -GF_MUST_CHECK int dict_set_uint16 (dict_t *this, char *key, uint16_t val); - -GF_MUST_CHECK int dict_get_uint32 (dict_t *this, char *key, uint32_t *val); -GF_MUST_CHECK int dict_set_uint32 (dict_t *this, char *key, uint32_t val); - -GF_MUST_CHECK int dict_get_uint64 (dict_t *this, char *key, uint64_t *val); -GF_MUST_CHECK int dict_set_uint64 (dict_t *this, char *key, uint64_t val); - -GF_MUST_CHECK int dict_check_flag (dict_t *this, char *key, int flag); -GF_MUST_CHECK int dict_set_flag (dict_t *this, char *key, int flag); -GF_MUST_CHECK int dict_clear_flag (dict_t *this, char *key, int flag); - -GF_MUST_CHECK int dict_get_double (dict_t *this, char *key, double *val); -GF_MUST_CHECK int dict_set_double (dict_t *this, char *key, double val); - -GF_MUST_CHECK int dict_set_static_ptr (dict_t *this, char *key, void *ptr); -GF_MUST_CHECK int dict_get_ptr (dict_t *this, char *key, void **ptr); -GF_MUST_CHECK int dict_get_ptr_and_len (dict_t *this, char *key, void **ptr, int *len); -GF_MUST_CHECK int dict_set_dynptr (dict_t *this, char *key, void *ptr, size_t size); - -GF_MUST_CHECK int dict_get_bin (dict_t *this, char *key, void **ptr); -GF_MUST_CHECK int dict_set_bin (dict_t *this, char *key, void *ptr, size_t size); -GF_MUST_CHECK int dict_set_static_bin (dict_t *this, char *key, void *ptr, size_t size); - -GF_MUST_CHECK int dict_set_option (dict_t *this, char *key, char *str); -GF_MUST_CHECK int dict_set_str (dict_t *this, char *key, char *str); -GF_MUST_CHECK int dict_set_strn (dict_t *this, char *key, const int keylen, - char *str); -GF_MUST_CHECK int dict_set_nstrn (dict_t *this, char *key, const int keylen, - char *str, const int vallen); -GF_MUST_CHECK int dict_set_dynstr (dict_t *this, char *key, char *str); -GF_MUST_CHECK int dict_set_dynstrn (dict_t *this, char *key, const int keylen, - char *str); -GF_MUST_CHECK int dict_set_dynstr_with_alloc (dict_t *this, char *key, const char *str); -GF_MUST_CHECK int dict_add_dynstr_with_alloc (dict_t *this, char *key, char *str); -GF_MUST_CHECK int dict_get_str (dict_t *this, char *key, char **str); -GF_MUST_CHECK int dict_get_strn (dict_t *this, char *key, const int keylen, - char **str); - -GF_MUST_CHECK int dict_get_str_boolean (dict_t *this, char *key, int default_val); -GF_MUST_CHECK int dict_rename_key (dict_t *this, char *key, char *replace_key); -GF_MUST_CHECK int dict_serialize_value_with_delim (dict_t *this, char *buf, int32_t *serz_len, - char delimiter); - -GF_MUST_CHECK int dict_set_gfuuid (dict_t *this, char *key, uuid_t uuid, - bool is_static); -GF_MUST_CHECK int dict_get_gfuuid (dict_t *this, char *key, uuid_t *uuid); - -GF_MUST_CHECK int dict_set_iatt (dict_t *this, char *key, struct iatt *iatt, - bool is_static); -GF_MUST_CHECK int dict_get_iatt (dict_t *this, char *key, struct iatt *iatt); +GF_MUST_CHECK dict_t * +dict_new(void); +dict_t * +dict_copy_with_ref(dict_t *this, dict_t *new); + +GF_MUST_CHECK int +dict_reset(dict_t *dict); + +GF_MUST_CHECK int +dict_get_int8(dict_t *this, char *key, int8_t *val); +GF_MUST_CHECK int +dict_set_int8(dict_t *this, char *key, int8_t val); + +GF_MUST_CHECK int +dict_get_int16(dict_t *this, char *key, int16_t *val); +GF_MUST_CHECK int +dict_set_int16(dict_t *this, char *key, int16_t val); + +GF_MUST_CHECK int +dict_get_int32(dict_t *this, char *key, int32_t *val); +GF_MUST_CHECK int +dict_get_int32n(dict_t *this, char *key, const int keylen, int32_t *val); +GF_MUST_CHECK int +dict_set_int32(dict_t *this, char *key, int32_t val); +GF_MUST_CHECK int +dict_set_int32n(dict_t *this, char *key, const int keylen, int32_t val); + +GF_MUST_CHECK int +dict_get_int64(dict_t *this, char *key, int64_t *val); +GF_MUST_CHECK int +dict_set_int64(dict_t *this, char *key, int64_t val); + +GF_MUST_CHECK int +dict_get_uint16(dict_t *this, char *key, uint16_t *val); +GF_MUST_CHECK int +dict_set_uint16(dict_t *this, char *key, uint16_t val); + +GF_MUST_CHECK int +dict_get_uint32(dict_t *this, char *key, uint32_t *val); +GF_MUST_CHECK int +dict_set_uint32(dict_t *this, char *key, uint32_t val); + +GF_MUST_CHECK int +dict_get_uint64(dict_t *this, char *key, uint64_t *val); +GF_MUST_CHECK int +dict_set_uint64(dict_t *this, char *key, uint64_t val); + +GF_MUST_CHECK int +dict_check_flag(dict_t *this, char *key, int flag); +GF_MUST_CHECK int +dict_set_flag(dict_t *this, char *key, int flag); +GF_MUST_CHECK int +dict_clear_flag(dict_t *this, char *key, int flag); + +GF_MUST_CHECK int +dict_get_double(dict_t *this, char *key, double *val); +GF_MUST_CHECK int +dict_set_double(dict_t *this, char *key, double val); + +GF_MUST_CHECK int +dict_set_static_ptr(dict_t *this, char *key, void *ptr); +GF_MUST_CHECK int +dict_get_ptr(dict_t *this, char *key, void **ptr); +GF_MUST_CHECK int +dict_get_ptr_and_len(dict_t *this, char *key, void **ptr, int *len); +GF_MUST_CHECK int +dict_set_dynptr(dict_t *this, char *key, void *ptr, size_t size); + +GF_MUST_CHECK int +dict_get_bin(dict_t *this, char *key, void **ptr); +GF_MUST_CHECK int +dict_set_bin(dict_t *this, char *key, void *ptr, size_t size); +GF_MUST_CHECK int +dict_set_static_bin(dict_t *this, char *key, void *ptr, size_t size); + +GF_MUST_CHECK int +dict_set_option(dict_t *this, char *key, char *str); +GF_MUST_CHECK int +dict_set_str(dict_t *this, char *key, char *str); +GF_MUST_CHECK int +dict_set_strn(dict_t *this, char *key, const int keylen, char *str); +GF_MUST_CHECK int +dict_set_nstrn(dict_t *this, char *key, const int keylen, char *str, + const int vallen); +GF_MUST_CHECK int +dict_set_dynstr(dict_t *this, char *key, char *str); +GF_MUST_CHECK int +dict_set_dynstrn(dict_t *this, char *key, const int keylen, char *str); +GF_MUST_CHECK int +dict_set_dynstr_with_alloc(dict_t *this, char *key, const char *str); +GF_MUST_CHECK int +dict_add_dynstr_with_alloc(dict_t *this, char *key, char *str); +GF_MUST_CHECK int +dict_get_str(dict_t *this, char *key, char **str); +GF_MUST_CHECK int +dict_get_strn(dict_t *this, char *key, const int keylen, char **str); + +GF_MUST_CHECK int +dict_get_str_boolean(dict_t *this, char *key, int default_val); +GF_MUST_CHECK int +dict_rename_key(dict_t *this, char *key, char *replace_key); +GF_MUST_CHECK int +dict_serialize_value_with_delim(dict_t *this, char *buf, int32_t *serz_len, + char delimiter); + +GF_MUST_CHECK int +dict_set_gfuuid(dict_t *this, char *key, uuid_t uuid, bool is_static); +GF_MUST_CHECK int +dict_get_gfuuid(dict_t *this, char *key, uuid_t *uuid); + +GF_MUST_CHECK int +dict_set_iatt(dict_t *this, char *key, struct iatt *iatt, bool is_static); +GF_MUST_CHECK int +dict_get_iatt(dict_t *this, char *key, struct iatt *iatt); void -dict_dump_to_statedump (dict_t *dict, char *dict_name, char *domain); +dict_dump_to_statedump(dict_t *dict, char *dict_name, char *domain); void -dict_dump_to_log (dict_t *dict); +dict_dump_to_log(dict_t *dict); int -dict_dump_to_str (dict_t *dict, char *dump, int dumpsize, char *format); +dict_dump_to_str(dict_t *dict, char *dump, int dumpsize, char *format); gf_boolean_t -dict_match_everything (dict_t *d, char *k, data_t *v, void *data); +dict_match_everything(dict_t *d, char *k, data_t *v, void *data); dict_t * -dict_for_key_value (const char *name, const char *value, size_t size, - gf_boolean_t is_static); +dict_for_key_value(const char *name, const char *value, size_t size, + gf_boolean_t is_static); gf_boolean_t -are_dicts_equal (dict_t *one, dict_t *two, - gf_boolean_t (*match) (dict_t *d, char *k, data_t *v, - void *data), - gf_boolean_t (*value_ignore) (char *k)); +are_dicts_equal(dict_t *one, dict_t *two, + gf_boolean_t (*match)(dict_t *d, char *k, data_t *v, + void *data), + gf_boolean_t (*value_ignore)(char *k)); int -dict_has_key_from_array (dict_t *dict, char **strings, gf_boolean_t *result); +dict_has_key_from_array(dict_t *dict, char **strings, gf_boolean_t *result); #endif diff --git a/libglusterfs/src/event-history.h b/libglusterfs/src/event-history.h index de5d47cdfee..5f0776ba9b0 100644 --- a/libglusterfs/src/event-history.h +++ b/libglusterfs/src/event-history.h @@ -14,26 +14,25 @@ #include "mem-types.h" #include "circ-buff.h" -struct event_hist -{ - buffer_t *buffer; - pthread_mutex_t lock; +struct event_hist { + buffer_t *buffer; + pthread_mutex_t lock; }; typedef struct event_hist eh_t; void -eh_dump (eh_t *event , void *data, - int (fn) (circular_buffer_t *buffer, void *data)); +eh_dump(eh_t *event, void *data, + int(fn)(circular_buffer_t *buffer, void *data)); eh_t * -eh_new (size_t buffer_size, gf_boolean_t use_buffer_once, - void (*destroy_data) (void *data)); +eh_new(size_t buffer_size, gf_boolean_t use_buffer_once, + void (*destroy_data)(void *data)); int -eh_save_history (eh_t *history, void *string); +eh_save_history(eh_t *history, void *string); int -eh_destroy (eh_t *history); +eh_destroy(eh_t *history); #endif /* _EH_H */ diff --git a/libglusterfs/src/events.h b/libglusterfs/src/events.h index 19988b0e3d2..74c5326427b 100644 --- a/libglusterfs/src/events.h +++ b/libglusterfs/src/events.h @@ -15,21 +15,20 @@ #ifdef USE_EVENTS int -_gf_event (eventtypes_t event, const char *fmt, ...) - __attribute__ ((__format__ (__printf__, 2, 3))); +_gf_event(eventtypes_t event, const char *fmt, ...) + __attribute__((__format__(__printf__, 2, 3))); #else -__attribute__ ((__format__ (__printf__, 2, 3))) -static inline int -_gf_event (eventtypes_t event, const char *fmt, ...) +__attribute__((__format__(__printf__, 2, 3))) static inline int +_gf_event(eventtypes_t event, const char *fmt, ...) { - return 0; + return 0; } #endif /* USE_EVENTS */ -#define gf_event(event, fmt...) \ - do { \ - FMT_WARN(fmt); \ - _gf_event (event, ##fmt); \ - } while (0) +#define gf_event(event, fmt...) \ + do { \ + FMT_WARN(fmt); \ + _gf_event(event, ##fmt); \ + } while (0) #endif /* __EVENTS_H__ */ diff --git a/libglusterfs/src/fd-lk.h b/libglusterfs/src/fd-lk.h index 11d864dc207..735f05ec46c 100644 --- a/libglusterfs/src/fd-lk.h +++ b/libglusterfs/src/fd-lk.h @@ -20,46 +20,44 @@ #include "glusterfs.h" #include "common-utils.h" -#define get_lk_type(type) \ - type == F_UNLCK ? "F_UNLCK" : (type == F_RDLCK ? "F_RDLCK" : "F_WRLCK") +#define get_lk_type(type) \ + type == F_UNLCK ? "F_UNLCK" : (type == F_RDLCK ? "F_RDLCK" : "F_WRLCK") -#define get_lk_cmd(cmd) \ - cmd == F_SETLKW ? "F_SETLKW" : (cmd == F_SETLK ? "F_SETLK" : "F_GETLK") +#define get_lk_cmd(cmd) \ + cmd == F_SETLKW ? "F_SETLKW" : (cmd == F_SETLK ? "F_SETLK" : "F_GETLK") struct _fd; struct fd_lk_ctx { - struct list_head lk_list; - gf_atomic_t ref; - gf_lock_t lock; + struct list_head lk_list; + gf_atomic_t ref; + gf_lock_t lock; }; typedef struct fd_lk_ctx fd_lk_ctx_t; struct fd_lk_ctx_node { - int32_t cmd; - struct gf_flock user_flock; - off_t fl_start; - off_t fl_end; - short fl_type; - struct list_head next; + int32_t cmd; + struct gf_flock user_flock; + off_t fl_start; + off_t fl_end; + short fl_type; + struct list_head next; }; typedef struct fd_lk_ctx_node fd_lk_ctx_node_t; - fd_lk_ctx_t * -fd_lk_ctx_ref (fd_lk_ctx_t *lk_ctx); +fd_lk_ctx_ref(fd_lk_ctx_t *lk_ctx); fd_lk_ctx_t * -fd_lk_ctx_create (void); +fd_lk_ctx_create(void); int -fd_lk_insert_and_merge (struct _fd *lk_ctx, int32_t cmd, - struct gf_flock *flock); +fd_lk_insert_and_merge(struct _fd *lk_ctx, int32_t cmd, struct gf_flock *flock); int -fd_lk_ctx_unref (fd_lk_ctx_t *lk_ctx); +fd_lk_ctx_unref(fd_lk_ctx_t *lk_ctx); gf_boolean_t -fd_lk_ctx_empty (fd_lk_ctx_t *lk_ctx); +fd_lk_ctx_empty(fd_lk_ctx_t *lk_ctx); #endif /* _FD_LK_H */ diff --git a/libglusterfs/src/fd.h b/libglusterfs/src/fd.h index 3f68b1c4997..e885ecb7786 100644 --- a/libglusterfs/src/fd.h +++ b/libglusterfs/src/fd.h @@ -20,170 +20,148 @@ #include "common-utils.h" #define GF_ANON_FD_NO -2 -#define GF_ANON_FD_FLAGS (O_RDWR|O_LARGEFILE) +#define GF_ANON_FD_FLAGS (O_RDWR | O_LARGEFILE) struct _inode; struct _dict; struct fd_lk_ctx; struct _fd_ctx { - union { - uint64_t key; - void *xl_key; - }; - union { - uint64_t value1; - void *ptr1; - }; + union { + uint64_t key; + void *xl_key; + }; + union { + uint64_t value1; + void *ptr1; + }; }; struct _fd { - uint64_t pid; - int32_t flags; - gf_atomic_t refcount; - struct list_head inode_list; - struct _inode *inode; - gf_lock_t lock; /* used ONLY for manipulating - 'struct _fd_ctx' array (_ctx).*/ - struct _fd_ctx *_ctx; - int xl_count; /* Number of xl referred in this fd */ - struct fd_lk_ctx *lk_ctx; - gf_boolean_t anonymous; /* fd which does not have counterpart open - fd on backend (server for client, posix - for server). */ + uint64_t pid; + int32_t flags; + gf_atomic_t refcount; + struct list_head inode_list; + struct _inode *inode; + gf_lock_t lock; /* used ONLY for manipulating + 'struct _fd_ctx' array (_ctx).*/ + struct _fd_ctx *_ctx; + int xl_count; /* Number of xl referred in this fd */ + struct fd_lk_ctx *lk_ctx; + gf_boolean_t anonymous; /* fd which does not have counterpart open + fd on backend (server for client, posix + for server). */ }; typedef struct _fd fd_t; - struct fd_table_entry { - fd_t *fd; - int next_free; + fd_t *fd; + int next_free; }; typedef struct fd_table_entry fdentry_t; - struct _fdtable { - int refcount; - uint32_t max_fds; - pthread_rwlock_t lock; - fdentry_t *fdentries; - int first_free; + int refcount; + uint32_t max_fds; + pthread_rwlock_t lock; + fdentry_t *fdentries; + int first_free; }; typedef struct _fdtable fdtable_t; - /* Signifies no more entries in the fd table. */ -#define GF_FDTABLE_END -1 +#define GF_FDTABLE_END -1 /* This is used to invalidated * the next_free value in an fdentry that has been allocated */ -#define GF_FDENTRY_ALLOCATED -2 +#define GF_FDENTRY_ALLOCATED -2 #include "logging.h" #include "xlator.h" - void -gf_fd_put (fdtable_t *fdtable, int32_t fd); - +gf_fd_put(fdtable_t *fdtable, int32_t fd); fd_t * -gf_fd_fdptr_get (fdtable_t *fdtable, int64_t fd); - +gf_fd_fdptr_get(fdtable_t *fdtable, int64_t fd); fdtable_t * -gf_fd_fdtable_alloc (void); - +gf_fd_fdtable_alloc(void); int -gf_fd_unused_get (fdtable_t *fdtable, fd_t *fdptr); - +gf_fd_unused_get(fdtable_t *fdtable, fd_t *fdptr); fdentry_t * -gf_fd_fdtable_get_all_fds (fdtable_t *fdtable, uint32_t *count); - +gf_fd_fdtable_get_all_fds(fdtable_t *fdtable, uint32_t *count); void -gf_fd_fdtable_destroy (fdtable_t *fdtable); - +gf_fd_fdtable_destroy(fdtable_t *fdtable); fd_t * -__fd_ref (fd_t *fd); - +__fd_ref(fd_t *fd); fd_t * -fd_ref (fd_t *fd); - +fd_ref(fd_t *fd); void -fd_unref (fd_t *fd); - +fd_unref(fd_t *fd); fd_t * -fd_create (struct _inode *inode, pid_t pid); +fd_create(struct _inode *inode, pid_t pid); fd_t * -fd_create_uint64 (struct _inode *inode, uint64_t pid); +fd_create_uint64(struct _inode *inode, uint64_t pid); fd_t * -fd_lookup (struct _inode *inode, pid_t pid); +fd_lookup(struct _inode *inode, pid_t pid); fd_t * -fd_lookup_uint64 (struct _inode *inode, uint64_t pid); +fd_lookup_uint64(struct _inode *inode, uint64_t pid); -fd_t* -fd_lookup_anonymous (inode_t *inode, int32_t flags); +fd_t * +fd_lookup_anonymous(inode_t *inode, int32_t flags); fd_t * -fd_anonymous (inode_t *inode); +fd_anonymous(inode_t *inode); fd_t * -fd_anonymous_with_flags (inode_t *inode, int32_t flags); +fd_anonymous_with_flags(inode_t *inode, int32_t flags); gf_boolean_t -fd_is_anonymous (fd_t *fd); - +fd_is_anonymous(fd_t *fd); uint8_t -fd_list_empty (struct _inode *inode); - +fd_list_empty(struct _inode *inode); fd_t * -fd_bind (fd_t *fd); - +fd_bind(fd_t *fd); int -fd_ctx_set (fd_t *fd, xlator_t *xlator, uint64_t value); - +fd_ctx_set(fd_t *fd, xlator_t *xlator, uint64_t value); int -fd_ctx_get (fd_t *fd, xlator_t *xlator, uint64_t *value); - +fd_ctx_get(fd_t *fd, xlator_t *xlator, uint64_t *value); int -fd_ctx_del (fd_t *fd, xlator_t *xlator, uint64_t *value); +fd_ctx_del(fd_t *fd, xlator_t *xlator, uint64_t *value); int -__fd_ctx_del (fd_t *fd, xlator_t *xlator, uint64_t *value); - +__fd_ctx_del(fd_t *fd, xlator_t *xlator, uint64_t *value); int -__fd_ctx_set (fd_t *fd, xlator_t *xlator, uint64_t value); - +__fd_ctx_set(fd_t *fd, xlator_t *xlator, uint64_t value); int -__fd_ctx_get (fd_t *fd, xlator_t *xlator, uint64_t *value); - +__fd_ctx_get(fd_t *fd, xlator_t *xlator, uint64_t *value); void -fd_ctx_dump (fd_t *fd, char *prefix); +fd_ctx_dump(fd_t *fd, char *prefix); fdentry_t * -gf_fd_fdtable_copy_all_fds (fdtable_t *fdtable, uint32_t *count); - +gf_fd_fdtable_copy_all_fds(fdtable_t *fdtable, uint32_t *count); void -gf_fdptr_put (fdtable_t *fdtable, fd_t *fd); +gf_fdptr_put(fdtable_t *fdtable, fd_t *fd); #endif /* _FD_H */ diff --git a/libglusterfs/src/gf-dirent.h b/libglusterfs/src/gf-dirent.h index fa323396e92..95403e9eabd 100644 --- a/libglusterfs/src/gf-dirent.h +++ b/libglusterfs/src/gf-dirent.h @@ -8,63 +8,64 @@ cases as published by the Free Software Foundation. */ - #ifndef _GF_DIRENT_H #define _GF_DIRENT_H #include "iatt.h" #include "inode.h" -#define gf_dirent_size(name) (sizeof (gf_dirent_t) + strlen (name) + 1) +#define gf_dirent_size(name) (sizeof(gf_dirent_t) + strlen(name) + 1) int gf_deitransform(xlator_t *this, uint64_t y); int -gf_itransform (xlator_t *this, uint64_t x, uint64_t *y_p, int client_id); +gf_itransform(xlator_t *this, uint64_t x, uint64_t *y_p, int client_id); uint64_t -gf_dirent_orig_offset (xlator_t *this, uint64_t offset); - +gf_dirent_orig_offset(xlator_t *this, uint64_t offset); struct _dir_entry { - struct _dir_entry *next; - char *name; - char *link; - struct iatt buf; + struct _dir_entry *next; + char *name; + char *link; + struct iatt buf; }; - struct _gf_dirent { - union { - struct list_head list; - struct { - struct _gf_dirent *next; - struct _gf_dirent *prev; - }; - }; - uint64_t d_ino; - uint64_t d_off; - uint32_t d_len; - uint32_t d_type; - struct iatt d_stat; - dict_t *dict; - inode_t *inode; - char d_name[]; + union { + struct list_head list; + struct { + struct _gf_dirent *next; + struct _gf_dirent *prev; + }; + }; + uint64_t d_ino; + uint64_t d_off; + uint32_t d_len; + uint32_t d_type; + struct iatt d_stat; + dict_t *dict; + inode_t *inode; + char d_name[]; }; #define DT_ISDIR(mode) (mode == DT_DIR) -gf_dirent_t *gf_dirent_for_name (const char *name); -gf_dirent_t *entry_copy (gf_dirent_t *source); -void gf_dirent_entry_free (gf_dirent_t *entry); -void gf_dirent_free (gf_dirent_t *entries); -int gf_link_inodes_from_dirent (xlator_t *this, inode_t *parent, - gf_dirent_t *entries); +gf_dirent_t * +gf_dirent_for_name(const char *name); +gf_dirent_t * +entry_copy(gf_dirent_t *source); +void +gf_dirent_entry_free(gf_dirent_t *entry); +void +gf_dirent_free(gf_dirent_t *entries); +int +gf_link_inodes_from_dirent(xlator_t *this, inode_t *parent, + gf_dirent_t *entries); int -gf_fill_iatt_for_dirent (gf_dirent_t *entry, inode_t *parent, - xlator_t *subvol); +gf_fill_iatt_for_dirent(gf_dirent_t *entry, inode_t *parent, xlator_t *subvol); void -gf_link_inode_from_dirent (xlator_t *this, inode_t *parent, gf_dirent_t *entry); +gf_link_inode_from_dirent(xlator_t *this, inode_t *parent, gf_dirent_t *entry); #endif /* _GF_DIRENT_H */ diff --git a/libglusterfs/src/gf-event.h b/libglusterfs/src/gf-event.h index 55a74ed17c6..5c3724cc953 100644 --- a/libglusterfs/src/gf-event.h +++ b/libglusterfs/src/gf-event.h @@ -18,102 +18,109 @@ struct event_ops; struct event_slot_poll; struct event_slot_epoll; struct event_data { - int idx; - int gen; -} __attribute__ ((__packed__, __may_alias__)); + int idx; + int gen; +} __attribute__((__packed__, __may_alias__)); - -typedef int (*event_handler_t) (int fd, int idx, int gen, void *data, - int poll_in, int poll_out, int poll_err); +typedef int (*event_handler_t)(int fd, int idx, int gen, void *data, + int poll_in, int poll_out, int poll_err); #define EVENT_EPOLL_TABLES 1024 #define EVENT_EPOLL_SLOTS 1024 -#define EVENT_MAX_THREADS 1024 +#define EVENT_MAX_THREADS 1024 struct event_pool { - struct event_ops *ops; - - int fd; - int breaker[2]; - - int count; - struct event_slot_poll *reg; - struct event_slot_epoll *ereg[EVENT_EPOLL_TABLES]; - int slots_used[EVENT_EPOLL_TABLES]; - - int used; - int changed; - - pthread_mutex_t mutex; - pthread_cond_t cond; - - void *evcache; - int evcache_size; - - /* NOTE: Currently used only when event processing is done using - * epoll. */ - int eventthreadcount; /* number of event threads to execute. */ - pthread_t pollers[EVENT_MAX_THREADS]; /* poller thread_id store, - * and live status */ - int destroy; - int activethreadcount; - - /* - * Number of threads created by auto-scaling, *in addition to* the - * configured number of threads. This is only applicable on the - * server, where we try to keep the number of threads around the number - * of bricks. In that case, the configured number is just "extra" - * threads to handle requests in excess of one per brick (including - * requests on the GlusterD connection). For clients or GlusterD, this - * number will always be zero, so the "extra" is all we have. - * - * TBD: consider auto-scaling for clients as well - */ - int auto_thread_count; - + struct event_ops *ops; + + int fd; + int breaker[2]; + + int count; + struct event_slot_poll *reg; + struct event_slot_epoll *ereg[EVENT_EPOLL_TABLES]; + int slots_used[EVENT_EPOLL_TABLES]; + + int used; + int changed; + + pthread_mutex_t mutex; + pthread_cond_t cond; + + void *evcache; + int evcache_size; + + /* NOTE: Currently used only when event processing is done using + * epoll. */ + int eventthreadcount; /* number of event threads to execute. */ + pthread_t pollers[EVENT_MAX_THREADS]; /* poller thread_id store, + * and live status */ + int destroy; + int activethreadcount; + + /* + * Number of threads created by auto-scaling, *in addition to* the + * configured number of threads. This is only applicable on the + * server, where we try to keep the number of threads around the number + * of bricks. In that case, the configured number is just "extra" + * threads to handle requests in excess of one per brick (including + * requests on the GlusterD connection). For clients or GlusterD, this + * number will always be zero, so the "extra" is all we have. + * + * TBD: consider auto-scaling for clients as well + */ + int auto_thread_count; }; struct event_destroy_data { - int readfd; - struct event_pool *pool; + int readfd; + struct event_pool *pool; }; struct event_ops { - struct event_pool * (*new) (int count, int eventthreadcount); + struct event_pool *(*new)(int count, int eventthreadcount); - int (*event_register) (struct event_pool *event_pool, int fd, - event_handler_t handler, - void *data, int poll_in, int poll_out); + int (*event_register)(struct event_pool *event_pool, int fd, + event_handler_t handler, void *data, int poll_in, + int poll_out); - int (*event_select_on) (struct event_pool *event_pool, int fd, int idx, - int poll_in, int poll_out); + int (*event_select_on)(struct event_pool *event_pool, int fd, int idx, + int poll_in, int poll_out); - int (*event_unregister) (struct event_pool *event_pool, int fd, int idx); + int (*event_unregister)(struct event_pool *event_pool, int fd, int idx); - int (*event_unregister_close) (struct event_pool *event_pool, int fd, - int idx); + int (*event_unregister_close)(struct event_pool *event_pool, int fd, + int idx); - int (*event_dispatch) (struct event_pool *event_pool); + int (*event_dispatch)(struct event_pool *event_pool); - int (*event_reconfigure_threads) (struct event_pool *event_pool, - int newcount); - int (*event_pool_destroy) (struct event_pool *event_pool); - int (*event_handled) (struct event_pool *event_pool, int fd, int idx, - int gen); + int (*event_reconfigure_threads)(struct event_pool *event_pool, + int newcount); + int (*event_pool_destroy)(struct event_pool *event_pool); + int (*event_handled)(struct event_pool *event_pool, int fd, int idx, + int gen); }; -struct event_pool *event_pool_new (int count, int eventthreadcount); -int event_select_on (struct event_pool *event_pool, int fd, int idx, - int poll_in, int poll_out); -int event_register (struct event_pool *event_pool, int fd, - event_handler_t handler, - void *data, int poll_in, int poll_out); -int event_unregister (struct event_pool *event_pool, int fd, int idx); -int event_unregister_close (struct event_pool *event_pool, int fd, int idx); -int event_dispatch (struct event_pool *event_pool); -int event_reconfigure_threads (struct event_pool *event_pool, int value); -int event_pool_destroy (struct event_pool *event_pool); -int event_dispatch_destroy (struct event_pool *event_pool); -int event_handled (struct event_pool *event_pool, int fd, int idx, int gen); +struct event_pool * +event_pool_new(int count, int eventthreadcount); +int +event_select_on(struct event_pool *event_pool, int fd, int idx, int poll_in, + int poll_out); +int +event_register(struct event_pool *event_pool, int fd, event_handler_t handler, + void *data, int poll_in, int poll_out); +int +event_unregister(struct event_pool *event_pool, int fd, int idx); +int +event_unregister_close(struct event_pool *event_pool, int fd, int idx); +int +event_dispatch(struct event_pool *event_pool); +int +event_reconfigure_threads(struct event_pool *event_pool, int value); +int +event_pool_destroy(struct event_pool *event_pool); +int +event_dispatch_destroy(struct event_pool *event_pool); +int +event_handled(struct event_pool *event_pool, int fd, int idx, int gen); #endif /* _GF_EVENT_H_ */ diff --git a/libglusterfs/src/gfdb/gfdb_data_store.h b/libglusterfs/src/gfdb/gfdb_data_store.h index 93bdda813a9..59f7bd01ab3 100644 --- a/libglusterfs/src/gfdb/gfdb_data_store.h +++ b/libglusterfs/src/gfdb/gfdb_data_store.h @@ -10,7 +10,6 @@ #ifndef __GFDB_DATA_STORE_H #define __GFDB_DATA_STORE_H - #include "glusterfs.h" #include "xlator.h" #include "logging.h" @@ -32,9 +31,6 @@ * */ typedef struct gfdb_conn_node_t gfdb_conn_node_t; - - - /*Libgfdb API Function: Used to initialize db connection * Arguments: * args : Dictionary containing database specific parameters @@ -46,11 +42,8 @@ typedef struct gfdb_conn_node_t gfdb_conn_node_t; gfdb_conn_node_t * init_db(dict_t *arg, gfdb_db_type_t db_type); -typedef gfdb_conn_node_t * (*init_db_t) (dict_t *args, - gfdb_db_type_t gfdb_db_type); - - - +typedef gfdb_conn_node_t *(*init_db_t)(dict_t *args, + gfdb_db_type_t gfdb_db_type); /*Libgfdb API Function: Used to terminate/de-initialize db connection * (Destructor function for db connection object) @@ -61,9 +54,7 @@ typedef gfdb_conn_node_t * (*init_db_t) (dict_t *args, int fini_db(gfdb_conn_node_t *); -typedef int (*fini_db_t) (gfdb_conn_node_t *_conn_node); - - +typedef int (*fini_db_t)(gfdb_conn_node_t *_conn_node); /*Libgfdb API Function: Used to insert/updated records in the database * NOTE: In current gfdb_sqlite plugin we use that @@ -83,9 +74,6 @@ typedef int (*fini_db_t) (gfdb_conn_node_t *_conn_node); int insert_record(gfdb_conn_node_t *, gfdb_db_record_t *gfdb_db_record); - - - /*Libgfdb API Function: Used to delete record from the database * NOTE: In the current gfdb_sqlite3 plugin * implementation this function is dummy. @@ -99,10 +87,6 @@ insert_record(gfdb_conn_node_t *, gfdb_db_record_t *gfdb_db_record); int delete_record(gfdb_conn_node_t *, gfdb_db_record_t *gfdb_db_record); - - - - /*Libgfdb API Function: Query all the records from the database * Arguments: * _conn_node : GFDB Connection node @@ -116,17 +100,13 @@ delete_record(gfdb_conn_node_t *, gfdb_db_record_t *gfdb_db_record); * * Returns : if successful return 0 or * -ve value in case of failure*/ -int find_all(gfdb_conn_node_t *, gf_query_callback_t query_callback, - void *_query_cbk_args, - int query_limit); - -typedef int (*find_all_t) (gfdb_conn_node_t *, - gf_query_callback_t query_callback, - void *_query_cbk_args, - int query_limit); - - +int +find_all(gfdb_conn_node_t *, gf_query_callback_t query_callback, + void *_query_cbk_args, int query_limit); +typedef int (*find_all_t)(gfdb_conn_node_t *, + gf_query_callback_t query_callback, + void *_query_cbk_args, int query_limit); /*Libgfdb API Function: Query records/files that have not changed/accessed * from a time in past to current time @@ -140,17 +120,14 @@ typedef int (*find_all_t) (gfdb_conn_node_t *, * changed/accessed * Returns : if successful return 0 or * -ve value in case of failure*/ -int find_unchanged_for_time(gfdb_conn_node_t *, - gf_query_callback_t query_callback, +int +find_unchanged_for_time(gfdb_conn_node_t *, gf_query_callback_t query_callback, void *_query_cbk_args, gfdb_time_t *for_time); -typedef int (*find_unchanged_for_time_t) (gfdb_conn_node_t *_conn_node, - gf_query_callback_t query_callback, - void *_query_cbk_args, - gfdb_time_t *for_time); - - - +typedef int (*find_unchanged_for_time_t)(gfdb_conn_node_t *_conn_node, + gf_query_callback_t query_callback, + void *_query_cbk_args, + gfdb_time_t *for_time); /*Libgfdb API Function: Query records/files that have changed/accessed from a * time in past to current time @@ -164,17 +141,15 @@ typedef int (*find_unchanged_for_time_t) (gfdb_conn_node_t *_conn_node, * changed/accessed * Returns : if successful return 0 or * -ve value in case of failure*/ -int find_recently_changed_files(gfdb_conn_node_t *_conn, - gf_query_callback_t query_callback, void *_query_cbk_args, - gfdb_time_t *from_time); - -typedef int (*find_recently_changed_files_t) (gfdb_conn_node_t *_conn_node, - gf_query_callback_t query_callback, - void *_query_cbk_args, - gfdb_time_t *from_time); - - +int +find_recently_changed_files(gfdb_conn_node_t *_conn, + gf_query_callback_t query_callback, + void *_query_cbk_args, gfdb_time_t *from_time); +typedef int (*find_recently_changed_files_t)(gfdb_conn_node_t *_conn_node, + gf_query_callback_t query_callback, + void *_query_cbk_args, + gfdb_time_t *from_time); /*Libgfdb API Function: Query records/files that have not changed/accessed * from a time in past to current time, with @@ -193,24 +168,17 @@ typedef int (*find_recently_changed_files_t) (gfdb_conn_node_t *_conn_node, * all files. * Returns : if successful return 0 or * -ve value in case of failure*/ -int find_unchanged_for_time_freq(gfdb_conn_node_t *_conn, - gf_query_callback_t query_callback, - void *_query_cbk_args, - gfdb_time_t *for_time, - int write_freq_thresold, - int read_freq_thresold, - gf_boolean_t _clear_counters); - -typedef int (*find_unchanged_for_time_freq_t) (gfdb_conn_node_t *_conn_node, - gf_query_callback_t query_callback, - void *_query_cbk_args, - gfdb_time_t *for_time, - int write_freq_thresold, - int read_freq_thresold, - gf_boolean_t _clear_counters); - - +int +find_unchanged_for_time_freq(gfdb_conn_node_t *_conn, + gf_query_callback_t query_callback, + void *_query_cbk_args, gfdb_time_t *for_time, + int write_freq_thresold, int read_freq_thresold, + gf_boolean_t _clear_counters); +typedef int (*find_unchanged_for_time_freq_t)( + gfdb_conn_node_t *_conn_node, gf_query_callback_t query_callback, + void *_query_cbk_args, gfdb_time_t *for_time, int write_freq_thresold, + int read_freq_thresold, gf_boolean_t _clear_counters); /*Libgfdb API Function: Query records/files that have changed/accessed from a * time in past to current time, with @@ -229,24 +197,20 @@ typedef int (*find_unchanged_for_time_freq_t) (gfdb_conn_node_t *_conn_node, * all files. * Returns : if successful return 0 or * -ve value in case of failure*/ -int find_recently_changed_files_freq(gfdb_conn_node_t *_conn, - gf_query_callback_t query_callback, - void *_query_cbk_args, - gfdb_time_t *from_time, - int write_freq_thresold, - int read_freq_thresold, - gf_boolean_t _clear_counters); - -typedef int (*find_recently_changed_files_freq_t) (gfdb_conn_node_t *_conn_node, - gf_query_callback_t query_callback, - void *_query_cbk_args, - gfdb_time_t *from_time, - int write_freq_thresold, - int read_freq_thresold, - gf_boolean_t _clear_counters); - -typedef const -char *(*get_db_path_key_t)(); +int +find_recently_changed_files_freq(gfdb_conn_node_t *_conn, + gf_query_callback_t query_callback, + void *_query_cbk_args, gfdb_time_t *from_time, + int write_freq_thresold, + int read_freq_thresold, + gf_boolean_t _clear_counters); + +typedef int (*find_recently_changed_files_freq_t)( + gfdb_conn_node_t *_conn_node, gf_query_callback_t query_callback, + void *_query_cbk_args, gfdb_time_t *from_time, int write_freq_thresold, + int read_freq_thresold, gf_boolean_t _clear_counters); + +typedef const char *(*get_db_path_key_t)(); /*Libgfdb API Function: Clear the heat for all the files * @@ -257,11 +221,9 @@ char *(*get_db_path_key_t)(); * -ve value in case of failure **/ int -clear_files_heat (gfdb_conn_node_t *_conn_node); - -typedef int (*clear_files_heat_t) (gfdb_conn_node_t *_conn_node); - +clear_files_heat(gfdb_conn_node_t *_conn_node); +typedef int (*clear_files_heat_t)(gfdb_conn_node_t *_conn_node); /* Libgfdb API Function: Function to extract version of the db * Arguments: @@ -275,11 +237,9 @@ typedef int (*clear_files_heat_t) (gfdb_conn_node_t *_conn_node); * On failure return -1 * */ int -get_db_version (gfdb_conn_node_t *_conn_node, char **version); - -typedef int (*get_db_version_t)(gfdb_conn_node_t *_conn_node, - char **version); +get_db_version(gfdb_conn_node_t *_conn_node, char **version); +typedef int (*get_db_version_t)(gfdb_conn_node_t *_conn_node, char **version); /* Libgfdb API Function: Function to extract param from the db * Arguments: @@ -294,14 +254,11 @@ typedef int (*get_db_version_t)(gfdb_conn_node_t *_conn_node, * On failure return -1 * */ int -get_db_params (gfdb_conn_node_t *_conn_node, - char *param_key, - char **param_value); - -typedef int (*get_db_params_t)(gfdb_conn_node_t *db_conn, - char *param_key, - char **param_value); +get_db_params(gfdb_conn_node_t *_conn_node, char *param_key, + char **param_value); +typedef int (*get_db_params_t)(gfdb_conn_node_t *db_conn, char *param_key, + char **param_value); /* Libgfdb API Function: Function to set db params * Arguments: @@ -313,13 +270,10 @@ typedef int (*get_db_params_t)(gfdb_conn_node_t *db_conn, * On failure return -1 * */ int -set_db_params (gfdb_conn_node_t *_conn_node, - char *param_key, - char *param_value); +set_db_params(gfdb_conn_node_t *_conn_node, char *param_key, char *param_value); -typedef int (*set_db_params_t)(gfdb_conn_node_t *db_conn, - char *param_key, - char *param_value); +typedef int (*set_db_params_t)(gfdb_conn_node_t *db_conn, char *param_key, + char *param_value); /*Libgfdb API Function: Compact the database. * @@ -330,48 +284,48 @@ typedef int (*set_db_params_t)(gfdb_conn_node_t *db_conn, * Returns : if successful return 0 or * -ve value in case of failure*/ int -compact_db (gfdb_conn_node_t *_conn_node, gf_boolean_t _compact_active, - gf_boolean_t _compact_mode_switched); +compact_db(gfdb_conn_node_t *_conn_node, gf_boolean_t _compact_active, + gf_boolean_t _compact_mode_switched); typedef int (*compact_db_t)(gfdb_conn_node_t *db_conn, gf_boolean_t compact_active, gf_boolean_t compact_mode_switched); - typedef struct gfdb_methods_s { - init_db_t init_db; - fini_db_t fini_db; - find_all_t find_all; - find_unchanged_for_time_t find_unchanged_for_time; - find_recently_changed_files_t find_recently_changed_files; - find_unchanged_for_time_freq_t find_unchanged_for_time_freq; - find_recently_changed_files_freq_t find_recently_changed_files_freq; - clear_files_heat_t clear_files_heat; - get_db_version_t get_db_version; - get_db_params_t get_db_params; - set_db_params_t set_db_params; - /* Do not expose dbpath directly. Expose it via an */ - /* access function: get_db_path_key(). */ - char *dbpath; - get_db_path_key_t get_db_path_key; - - /* Query Record related functions */ - gfdb_query_record_new_t gfdb_query_record_new; - gfdb_query_record_free_t gfdb_query_record_free; - gfdb_add_link_to_query_record_t gfdb_add_link_to_query_record; - gfdb_write_query_record_t gfdb_write_query_record; - gfdb_read_query_record_t gfdb_read_query_record; - - /* Link info related functions */ - gfdb_link_info_new_t gfdb_link_info_new; - gfdb_link_info_free_t gfdb_link_info_free; - - /* Compaction related functions */ - compact_db_t compact_db; + init_db_t init_db; + fini_db_t fini_db; + find_all_t find_all; + find_unchanged_for_time_t find_unchanged_for_time; + find_recently_changed_files_t find_recently_changed_files; + find_unchanged_for_time_freq_t find_unchanged_for_time_freq; + find_recently_changed_files_freq_t find_recently_changed_files_freq; + clear_files_heat_t clear_files_heat; + get_db_version_t get_db_version; + get_db_params_t get_db_params; + set_db_params_t set_db_params; + /* Do not expose dbpath directly. Expose it via an */ + /* access function: get_db_path_key(). */ + char *dbpath; + get_db_path_key_t get_db_path_key; + + /* Query Record related functions */ + gfdb_query_record_new_t gfdb_query_record_new; + gfdb_query_record_free_t gfdb_query_record_free; + gfdb_add_link_to_query_record_t gfdb_add_link_to_query_record; + gfdb_write_query_record_t gfdb_write_query_record; + gfdb_read_query_record_t gfdb_read_query_record; + + /* Link info related functions */ + gfdb_link_info_new_t gfdb_link_info_new; + gfdb_link_info_free_t gfdb_link_info_free; + + /* Compaction related functions */ + compact_db_t compact_db; } gfdb_methods_t; -void get_gfdb_methods (gfdb_methods_t *methods); +void +get_gfdb_methods(gfdb_methods_t *methods); -typedef void (*get_gfdb_methods_t) (gfdb_methods_t *methods); +typedef void (*get_gfdb_methods_t)(gfdb_methods_t *methods); #endif diff --git a/libglusterfs/src/gfdb/gfdb_data_store_helper.h b/libglusterfs/src/gfdb/gfdb_data_store_helper.h index 7e81aab08a6..7b4b0ae6aa1 100644 --- a/libglusterfs/src/gfdb/gfdb_data_store_helper.h +++ b/libglusterfs/src/gfdb/gfdb_data_store_helper.h @@ -22,8 +22,7 @@ #include "byte-order.h" #include "libglusterfs-messages.h" - -#define GFDB_DATA_STORE "gfdbdatastore" +#define GFDB_DATA_STORE "gfdbdatastore" /******************************************************************************* * @@ -39,71 +38,50 @@ /*Structure to hold the link information*/ typedef struct gfdb_link_info { - uuid_t pargfid; - char file_name[GF_NAME_MAX]; - struct list_head list; + uuid_t pargfid; + char file_name[GF_NAME_MAX]; + struct list_head list; } gfdb_link_info_t; - /*Structure used for querying purpose*/ typedef struct gfdb_query_record { - uuid_t gfid; - /*This is the hardlink list*/ - struct list_head link_list; - int link_count; + uuid_t gfid; + /*This is the hardlink list*/ + struct list_head link_list; + int link_count; } gfdb_query_record_t; /*Create a single link info structure*/ -gfdb_link_info_t *gfdb_link_info_new (); -typedef gfdb_link_info_t *(*gfdb_link_info_new_t) (); +gfdb_link_info_t * +gfdb_link_info_new(); +typedef gfdb_link_info_t *(*gfdb_link_info_new_t)(); /*Destroy a link info structure*/ void -gfdb_link_info_free (gfdb_link_info_t *gfdb_link_info); -typedef void -(*gfdb_link_info_free_t) (gfdb_link_info_t *gfdb_link_info); +gfdb_link_info_free(gfdb_link_info_t *gfdb_link_info); +typedef void (*gfdb_link_info_free_t)(gfdb_link_info_t *gfdb_link_info); /* Function to create the query_record */ gfdb_query_record_t * gfdb_query_record_new(); -typedef gfdb_query_record_t * -(*gfdb_query_record_new_t)(); - - - +typedef gfdb_query_record_t *(*gfdb_query_record_new_t)(); /* Function to add linkinfo to query record */ int -gfdb_add_link_to_query_record (gfdb_query_record_t *gfdb_query_record, - uuid_t pgfid, - char *base_name); -typedef int -(*gfdb_add_link_to_query_record_t) (gfdb_query_record_t *, uuid_t, char *); - - - +gfdb_add_link_to_query_record(gfdb_query_record_t *gfdb_query_record, + uuid_t pgfid, char *base_name); +typedef int (*gfdb_add_link_to_query_record_t)(gfdb_query_record_t *, uuid_t, + char *); /*Function to destroy query record*/ void -gfdb_query_record_free (gfdb_query_record_t *gfdb_query_record); -typedef void -(*gfdb_query_record_free_t) (gfdb_query_record_t *); - - - - - +gfdb_query_record_free(gfdb_query_record_t *gfdb_query_record); +typedef void (*gfdb_query_record_free_t)(gfdb_query_record_t *); /* Function to write query record to file */ int -gfdb_write_query_record (int fd, - gfdb_query_record_t *gfdb_query_record); -typedef int -(*gfdb_write_query_record_t) (int, gfdb_query_record_t *); - - - - +gfdb_write_query_record(int fd, gfdb_query_record_t *gfdb_query_record); +typedef int (*gfdb_write_query_record_t)(int, gfdb_query_record_t *); /* Function to read query record from file. * Allocates memory to query record and return 0 when successful @@ -111,10 +89,7 @@ typedef int * Return 0 when EOF. * */ int -gfdb_read_query_record (int fd, - gfdb_query_record_t **gfdb_query_record); -typedef int -(*gfdb_read_query_record_t) (int, gfdb_query_record_t **); - +gfdb_read_query_record(int fd, gfdb_query_record_t **gfdb_query_record); +typedef int (*gfdb_read_query_record_t)(int, gfdb_query_record_t **); #endif
\ No newline at end of file diff --git a/libglusterfs/src/gfdb/gfdb_data_store_types.h b/libglusterfs/src/gfdb/gfdb_data_store_types.h index f20ae4ded78..5ee050d4fab 100644 --- a/libglusterfs/src/gfdb/gfdb_data_store_types.h +++ b/libglusterfs/src/gfdb/gfdb_data_store_types.h @@ -16,70 +16,67 @@ * Helps in dynamically choosing log level * */ static inline gf_loglevel_t -_gfdb_log_level (gf_loglevel_t given_level, - gf_boolean_t ignore_level) +_gfdb_log_level(gf_loglevel_t given_level, gf_boolean_t ignore_level) { - return (ignore_level) ? GF_LOG_DEBUG : given_level; + return (ignore_level) ? GF_LOG_DEBUG : given_level; } typedef enum gf_db_operation { - GFDB_INVALID_DB_OP = -1, - /* Query DB OPS : All the Query DB_OP should be added */ - /* in between START and END */ - GFDB_QUERY_DB_OP_START, /* Start of Query DB_OP */ - GFDB_QUERY_DB_OP, - GF_FTABLE_EXISTS_DB_OP, - GFDB_QUERY_DB_OP_END, /* End of Query DB_OP */ - /* Non-Query DB OPS */ - GFDB_DB_CREATE_DB_OP, - GFDB_GFID_EXIST_DB_OP, - GFDB_W_INSERT_DB_OP, - GFDB_WU_INSERT_DB_OP, - GFDB_W_UPDATE_DB_OP, - GFDB_WU_UPDATE_DB_OP, - GFDB_W_DELETE_DB_OP, - GFDB_UW_DELETE_DB_OP, - GFDB_WFC_UPDATE_DB_OP, - GFDB_RFC_UPDATE_DB_OP, - GFDB_DB_COMPACT_DB_OP /* Added for VACUUM/manual compaction support */ + GFDB_INVALID_DB_OP = -1, + /* Query DB OPS : All the Query DB_OP should be added */ + /* in between START and END */ + GFDB_QUERY_DB_OP_START, /* Start of Query DB_OP */ + GFDB_QUERY_DB_OP, + GF_FTABLE_EXISTS_DB_OP, + GFDB_QUERY_DB_OP_END, /* End of Query DB_OP */ + /* Non-Query DB OPS */ + GFDB_DB_CREATE_DB_OP, + GFDB_GFID_EXIST_DB_OP, + GFDB_W_INSERT_DB_OP, + GFDB_WU_INSERT_DB_OP, + GFDB_W_UPDATE_DB_OP, + GFDB_WU_UPDATE_DB_OP, + GFDB_W_DELETE_DB_OP, + GFDB_UW_DELETE_DB_OP, + GFDB_WFC_UPDATE_DB_OP, + GFDB_RFC_UPDATE_DB_OP, + GFDB_DB_COMPACT_DB_OP /* Added for VACUUM/manual compaction support */ } gf_db_operation_t; - -#define GF_COL_MAX_NUM 2 -#define GF_COL_ALL " * " +#define GF_COL_MAX_NUM 2 +#define GF_COL_ALL " * " /* Column/fields names used in the DB. * If any new field is added should be updated here*/ -#define GF_COL_GF_ID "GF_ID" -#define GF_COL_GF_PID "GF_PID" -#define GF_COL_FILE_NAME "FNAME" -#define GF_COL_WSEC "W_SEC" -#define GF_COL_WMSEC "W_MSEC" -#define GF_COL_UWSEC "UW_SEC" -#define GF_COL_UWMSEC "UW_MSEC" -#define GF_COL_WSEC_READ "W_READ_SEC" -#define GF_COL_WMSEC_READ "W_READ_MSEC" -#define GF_COL_UWSEC_READ "UW_READ_SEC" -#define GF_COL_UWMSEC_READ "UW_READ_MSEC" -#define GF_COL_WDEL_FLAG "W_DEL_FLAG" -#define GF_COL_WRITE_FREQ_CNTR "WRITE_FREQ_CNTR" -#define GF_COL_READ_FREQ_CNTR "READ_FREQ_CNTR" -#define GF_COL_LINK_UPDATE "LINK_UPDATE" - +#define GF_COL_GF_ID "GF_ID" +#define GF_COL_GF_PID "GF_PID" +#define GF_COL_FILE_NAME "FNAME" +#define GF_COL_WSEC "W_SEC" +#define GF_COL_WMSEC "W_MSEC" +#define GF_COL_UWSEC "UW_SEC" +#define GF_COL_UWMSEC "UW_MSEC" +#define GF_COL_WSEC_READ "W_READ_SEC" +#define GF_COL_WMSEC_READ "W_READ_MSEC" +#define GF_COL_UWSEC_READ "UW_READ_SEC" +#define GF_COL_UWMSEC_READ "UW_READ_MSEC" +#define GF_COL_WDEL_FLAG "W_DEL_FLAG" +#define GF_COL_WRITE_FREQ_CNTR "WRITE_FREQ_CNTR" +#define GF_COL_READ_FREQ_CNTR "READ_FREQ_CNTR" +#define GF_COL_LINK_UPDATE "LINK_UPDATE" /***********************Time related********************************/ /*1 sec = 1000000 microsec*/ -#define GFDB_MICROSEC 1000000 +#define GFDB_MICROSEC 1000000 /*All the gfdb times are represented using this structure*/ -typedef struct timeval gfdb_time_t; +typedef struct timeval gfdb_time_t; /*Convert time into seconds*/ static inline uint64_t gfdb_time_2_usec(gfdb_time_t *gfdb_time) { - GF_ASSERT(gfdb_time); - return ((uint64_t) gfdb_time->tv_sec * GFDB_MICROSEC) + gfdb_time->tv_usec; + GF_ASSERT(gfdb_time); + return ((uint64_t)gfdb_time->tv_sec * GFDB_MICROSEC) + gfdb_time->tv_usec; } /****************************************************************************** @@ -91,82 +88,82 @@ gfdb_time_2_usec(gfdb_time_t *gfdb_time) /*Indicated a generic synchronous write to the db * This may or may not be implemented*/ typedef enum gfdb_sync_type { - GFDB_INVALID_SYNC = -1, - GFDB_DB_ASYNC, - GFDB_DB_SYNC + GFDB_INVALID_SYNC = -1, + GFDB_DB_ASYNC, + GFDB_DB_SYNC } gfdb_sync_type_t; /*Strings related to the abvove sync type*/ -#define GFDB_STR_DB_ASYNC "async" -#define GFDB_STR_DB_SYNC "sync" +#define GFDB_STR_DB_ASYNC "async" +#define GFDB_STR_DB_SYNC "sync" /*To convert sync type from string to gfdb_sync_type_t*/ static inline int -gf_string2gfdbdbsync (char *sync_option) +gf_string2gfdbdbsync(char *sync_option) { - int ret = -1; - - if (!sync_option) - goto out; - if (strcmp(sync_option, GFDB_STR_DB_ASYNC) == 0) { - ret = GFDB_DB_ASYNC; - } else if (strcmp(sync_option, GFDB_STR_DB_SYNC) == 0) { - ret = GFDB_DB_SYNC; - } + int ret = -1; + + if (!sync_option) + goto out; + if (strcmp(sync_option, GFDB_STR_DB_ASYNC) == 0) { + ret = GFDB_DB_ASYNC; + } else if (strcmp(sync_option, GFDB_STR_DB_SYNC) == 0) { + ret = GFDB_DB_SYNC; + } out: - return ret; + return ret; } /*Indicated different types of db*/ typedef enum gfdb_db_type { - GFDB_INVALID_DB = -1, - GFDB_HASH_FILE_STORE, - GFDB_ROCKS_DB, - GFDB_SQLITE3, - GFDB_HYPERDEX, - GFDB_DB_END /*Add DB type Entries above this only*/ + GFDB_INVALID_DB = -1, + GFDB_HASH_FILE_STORE, + GFDB_ROCKS_DB, + GFDB_SQLITE3, + GFDB_HYPERDEX, + GFDB_DB_END /*Add DB type Entries above this only*/ } gfdb_db_type_t; /*String related to the db types*/ -#define GFDB_STR_HASH_FILE_STORE "hashfile" -#define GFDB_STR_ROCKS_DB "rocksdb" -#define GFDB_STR_SQLITE3 "sqlite3" -#define GFDB_STR_HYPERDEX "hyperdex" +#define GFDB_STR_HASH_FILE_STORE "hashfile" +#define GFDB_STR_ROCKS_DB "rocksdb" +#define GFDB_STR_SQLITE3 "sqlite3" +#define GFDB_STR_HYPERDEX "hyperdex" /*Convert db type in string to gfdb_db_type_t*/ static inline int -gf_string2gfdbdbtype (char *db_option) +gf_string2gfdbdbtype(char *db_option) { - int ret = -1; - - if (!db_option) - goto out; - if (strcmp(db_option, GFDB_STR_HASH_FILE_STORE) == 0) { - ret = GFDB_HASH_FILE_STORE; - } else if (strcmp(db_option, GFDB_STR_ROCKS_DB) == 0) { - ret = GFDB_ROCKS_DB; - } else if (strcmp(db_option, GFDB_STR_SQLITE3) == 0) { - ret = GFDB_SQLITE3; - } else if (strcmp(db_option, GFDB_STR_HYPERDEX) == 0) { - ret = GFDB_HYPERDEX; - } + int ret = -1; + + if (!db_option) + goto out; + if (strcmp(db_option, GFDB_STR_HASH_FILE_STORE) == 0) { + ret = GFDB_HASH_FILE_STORE; + } else if (strcmp(db_option, GFDB_STR_ROCKS_DB) == 0) { + ret = GFDB_ROCKS_DB; + } else if (strcmp(db_option, GFDB_STR_SQLITE3) == 0) { + ret = GFDB_SQLITE3; + } else if (strcmp(db_option, GFDB_STR_HYPERDEX) == 0) { + ret = GFDB_HYPERDEX; + } out: - return ret; + return ret; } /*Tells the path of the fop*/ typedef enum gfdb_fop_path { - GFDB_FOP_INVALID = -1, - /*Filler value for zero*/ - GFDB_FOP_PATH_ZERO = 0, - /*have wind path below this*/ - GFDB_FOP_WIND = 1, - GFDB_FOP_WDEL = 2, - /*have unwind path below this*/ - GFDB_FOP_UNWIND = 4, - /*Delete unwind path*/ - GFDB_FOP_UNDEL = 8, - GFDB_FOP_UNDEL_ALL = 16 + GFDB_FOP_INVALID = -1, + /*Filler value for zero*/ + GFDB_FOP_PATH_ZERO = 0, + /*have wind path below this*/ + GFDB_FOP_WIND = 1, + GFDB_FOP_WDEL = 2, + /*have unwind path below this*/ + GFDB_FOP_UNWIND = 4, + /*Delete unwind path*/ + GFDB_FOP_UNDEL = 8, + GFDB_FOP_UNDEL_ALL = 16 } gfdb_fop_path_t; /*Strings related to the above fop path*/ #define GFDB_STR_FOP_INVALID "INVALID" @@ -178,107 +175,104 @@ typedef enum gfdb_fop_path { static inline gf_boolean_t iswindpath(gfdb_fop_path_t gfdb_fop_path) { - return ((gfdb_fop_path == GFDB_FOP_WIND) || - (gfdb_fop_path == GFDB_FOP_WDEL)) ? - _gf_true : _gf_false; + return ((gfdb_fop_path == GFDB_FOP_WIND) || + (gfdb_fop_path == GFDB_FOP_WDEL)) + ? _gf_true + : _gf_false; } static inline gf_boolean_t isunwindpath(gfdb_fop_path_t gfdb_fop_path) { - return (gfdb_fop_path >= GFDB_FOP_UNWIND) ? _gf_true : _gf_false; + return (gfdb_fop_path >= GFDB_FOP_UNWIND) ? _gf_true : _gf_false; } /*Tell what type of fop it was * Like whether a dentry fop or a inode fop * Read fop or a write fop etc*/ typedef enum gfdb_fop_type { - GFDB_FOP_INVALID_OP = -1, - /*Filler value for zero*/ - GFDB_FOP_TYPE_ZERO = 0, - GFDB_FOP_DENTRY_OP = 1, - GFDB_FOP_DENTRY_CREATE_OP = 2, - GFDB_FOP_INODE_OP = 4, - GFDB_FOP_WRITE_OP = 8, - GFDB_FOP_READ_OP = 16 + GFDB_FOP_INVALID_OP = -1, + /*Filler value for zero*/ + GFDB_FOP_TYPE_ZERO = 0, + GFDB_FOP_DENTRY_OP = 1, + GFDB_FOP_DENTRY_CREATE_OP = 2, + GFDB_FOP_INODE_OP = 4, + GFDB_FOP_WRITE_OP = 8, + GFDB_FOP_READ_OP = 16 } gfdb_fop_type_t; -#define GFDB_FOP_INODE_WRITE\ - (GFDB_FOP_INODE_OP | GFDB_FOP_WRITE_OP) +#define GFDB_FOP_INODE_WRITE (GFDB_FOP_INODE_OP | GFDB_FOP_WRITE_OP) -#define GFDB_FOP_DENTRY_WRITE\ - (GFDB_FOP_DENTRY_OP | GFDB_FOP_WRITE_OP) +#define GFDB_FOP_DENTRY_WRITE (GFDB_FOP_DENTRY_OP | GFDB_FOP_WRITE_OP) -#define GFDB_FOP_CREATE_WRITE\ - (GFDB_FOP_DENTRY_CREATE_OP | GFDB_FOP_WRITE_OP) +#define GFDB_FOP_CREATE_WRITE (GFDB_FOP_DENTRY_CREATE_OP | GFDB_FOP_WRITE_OP) -#define GFDB_FOP_INODE_READ\ - (GFDB_FOP_INODE_OP | GFDB_FOP_READ_OP) +#define GFDB_FOP_INODE_READ (GFDB_FOP_INODE_OP | GFDB_FOP_READ_OP) static inline gf_boolean_t isreadfop(gfdb_fop_type_t fop_type) { - return (fop_type & GFDB_FOP_READ_OP) ? _gf_true : _gf_false; + return (fop_type & GFDB_FOP_READ_OP) ? _gf_true : _gf_false; } static inline gf_boolean_t isdentryfop(gfdb_fop_type_t fop_type) { - return ((fop_type & GFDB_FOP_DENTRY_OP) || - (fop_type & GFDB_FOP_DENTRY_CREATE_OP)) ? _gf_true : _gf_false; + return ((fop_type & GFDB_FOP_DENTRY_OP) || + (fop_type & GFDB_FOP_DENTRY_CREATE_OP)) + ? _gf_true + : _gf_false; } static inline gf_boolean_t isdentrycreatefop(gfdb_fop_type_t fop_type) { - return (fop_type & GFDB_FOP_DENTRY_CREATE_OP) ? - _gf_true : _gf_false; + return (fop_type & GFDB_FOP_DENTRY_CREATE_OP) ? _gf_true : _gf_false; } /*The structure that is used to send insert/update the databases * using insert_db api*/ typedef struct gfdb_db_record { - /* GFID */ - uuid_t gfid; - /* Used during a rename refer ctr_rename() in changetimerecorder - * xlator*/ - uuid_t old_gfid; - /* Parent GFID */ - uuid_t pargfid; - uuid_t old_pargfid; - /* File names */ - char file_name[GF_NAME_MAX + 1]; - char old_file_name[GF_NAME_MAX + 1]; - /* FOP type and FOP path*/ - gfdb_fop_type_t gfdb_fop_type; - gfdb_fop_path_t gfdb_fop_path; - /*Time of change or access*/ - gfdb_time_t gfdb_wind_change_time; - gfdb_time_t gfdb_unwind_change_time; - /* For crash consistency while inserting/updating hard links */ - gf_boolean_t islinkupdate; - /* For link consistency we do a double update i.e mark the link - * during the wind and during the unwind we update/delete the link. - * This has a performance hit. We give a choice here whether we need - * link consistency to be spoton or not using link_consistency flag. - * This will have only one link update */ - gf_boolean_t link_consistency; - /* For dentry fops we can choose to ignore recording of unwind time */ - /* For inode fops "record_exit" volume option does the trick, */ - /* but for dentry fops we update the LINK_UPDATE, so an extra */ - /* flag is provided to ignore the recording of the unwind time. */ - gf_boolean_t do_record_uwind_time; - /* Global flag to record or not record counters */ - gf_boolean_t do_record_counters; - /* Global flag to Record/Not Record wind or wind time. - * This flag will overrule do_record_uwind_time*/ - gf_boolean_t do_record_times; - /* Ignoring errors while inserting. - * */ - gf_boolean_t ignore_errors; + /* GFID */ + uuid_t gfid; + /* Used during a rename refer ctr_rename() in changetimerecorder + * xlator*/ + uuid_t old_gfid; + /* Parent GFID */ + uuid_t pargfid; + uuid_t old_pargfid; + /* File names */ + char file_name[GF_NAME_MAX + 1]; + char old_file_name[GF_NAME_MAX + 1]; + /* FOP type and FOP path*/ + gfdb_fop_type_t gfdb_fop_type; + gfdb_fop_path_t gfdb_fop_path; + /*Time of change or access*/ + gfdb_time_t gfdb_wind_change_time; + gfdb_time_t gfdb_unwind_change_time; + /* For crash consistency while inserting/updating hard links */ + gf_boolean_t islinkupdate; + /* For link consistency we do a double update i.e mark the link + * during the wind and during the unwind we update/delete the link. + * This has a performance hit. We give a choice here whether we need + * link consistency to be spoton or not using link_consistency flag. + * This will have only one link update */ + gf_boolean_t link_consistency; + /* For dentry fops we can choose to ignore recording of unwind time */ + /* For inode fops "record_exit" volume option does the trick, */ + /* but for dentry fops we update the LINK_UPDATE, so an extra */ + /* flag is provided to ignore the recording of the unwind time. */ + gf_boolean_t do_record_uwind_time; + /* Global flag to record or not record counters */ + gf_boolean_t do_record_counters; + /* Global flag to Record/Not Record wind or wind time. + * This flag will overrule do_record_uwind_time*/ + gf_boolean_t do_record_times; + /* Ignoring errors while inserting. + * */ + gf_boolean_t ignore_errors; } gfdb_db_record_t; - /******************************************************************************* * * Signatures for the plugin functions @@ -289,8 +283,7 @@ typedef struct gfdb_db_record { * ****************************************************************************/ /*Call back function for querying the database*/ -typedef int -(*gf_query_callback_t)(gfdb_query_record_t *, void *); +typedef int (*gf_query_callback_t)(gfdb_query_record_t *, void *); /* Used to initialize db connection * Arguments: @@ -301,11 +294,7 @@ typedef int * If call is unsuccessful will have NULL. * Returns : if successful return 0 or * -ve value in case of failure*/ -typedef int -(*gfdb_init_db_t)(dict_t *args, void **db_conn); - - - +typedef int (*gfdb_init_db_t)(dict_t *args, void **db_conn); /* Used to terminate/de-initialize db connection * (Destructor function for db connection object) @@ -313,11 +302,7 @@ typedef int * db_conn : plugin specific data base connection * Returns : if successful return 0 or * -ve value in case of failure*/ -typedef int -(*gfdb_fini_db_t)(void **db_conn); - - - +typedef int (*gfdb_fini_db_t)(void **db_conn); /*Used to insert/updated records in the database * Arguments: @@ -325,12 +310,7 @@ typedef int * gfdb_db_record : Record to be inserted/updated * Returns : if successful return 0 or * -ve value in case of failure*/ -typedef int -(*gfdb_insert_record_t)(void *db_conn, - gfdb_db_record_t *db_record); - - - +typedef int (*gfdb_insert_record_t)(void *db_conn, gfdb_db_record_t *db_record); /*Used to delete record from the database * Arguments: @@ -338,12 +318,7 @@ typedef int * gfdb_db_record : Record to be deleted * Returns : if successful return 0 or * -ve value in case of failure*/ -typedef int -(*gfdb_delete_record_t)(void *db_conn, - gfdb_db_record_t *db_record); - - - +typedef int (*gfdb_delete_record_t)(void *db_conn, gfdb_db_record_t *db_record); /*Used to compact the database * Arguments: @@ -352,12 +327,8 @@ typedef int * compact_mode_switched : Was the compaction switch flipped? * Returns : if successful return 0 or * -ve value in case of failure*/ -typedef int -(*gfdb_compact_db_t)(void *db_conn, gf_boolean_t compact_active, - gf_boolean_t compact_mode_switched); - - - +typedef int (*gfdb_compact_db_t)(void *db_conn, gf_boolean_t compact_active, + gf_boolean_t compact_mode_switched); /* Query all the records from the database * Arguments: @@ -373,14 +344,9 @@ typedef int * * Returns : if successful return 0 or * -ve value in case of failure*/ -typedef int -(*gfdb_find_all_t)(void *db_conn, +typedef int (*gfdb_find_all_t)(void *db_conn, gf_query_callback_t query_callback, - void *_cbk_args, - int query_limit); - - - + void *_cbk_args, int query_limit); /* Query records/files that have not changed/accessed * from a time in past to current time @@ -394,13 +360,9 @@ typedef int * changed/accessed * Returns : if successful return 0 or * -ve value in case of failure*/ -typedef int -(*gfdb_find_unchanged_for_time_t)(void *db_conn, - gf_query_callback_t query_callback, - void *_cbk_args, - gfdb_time_t *_time); - - +typedef int (*gfdb_find_unchanged_for_time_t)( + void *db_conn, gf_query_callback_t query_callback, void *_cbk_args, + gfdb_time_t *_time); /* Query records/files that have changed/accessed from a * time in past to current time @@ -414,10 +376,9 @@ typedef int * changed/accessed * Returns : if successful return 0 or * -ve value in case of failure*/ -typedef int -(*gfdb_find_recently_changed_files_t)(void *db_conn, - gf_query_callback_t query_callback, - void *_cbk_args, gfdb_time_t *_time); +typedef int (*gfdb_find_recently_changed_files_t)( + void *db_conn, gf_query_callback_t query_callback, void *_cbk_args, + gfdb_time_t *_time); /* Query records/files that have not changed/accessed * from a time in past to current time, with @@ -437,16 +398,10 @@ typedef int * all files. * Returns : if successful return 0 or * -ve value in case of failure*/ -typedef int -(*gfdb_find_unchanged_for_time_freq_t) - (void *db_conn, - gf_query_callback_t query_callback, - void *_cbk_args, gfdb_time_t *_time, - int _write_freq, int _read_freq, - gf_boolean_t _clear_counters); - - - +typedef int (*gfdb_find_unchanged_for_time_freq_t)( + void *db_conn, gf_query_callback_t query_callback, void *_cbk_args, + gfdb_time_t *_time, int _write_freq, int _read_freq, + gf_boolean_t _clear_counters); /* Query records/files that have changed/accessed from a * time in past to current time, with a desired frequency @@ -464,47 +419,37 @@ typedef int * all files. * Returns : if successful return 0 or * -ve value in case of failure*/ -typedef int -(*gfdb_find_recently_changed_files_freq_t)(void *db_conn, - gf_query_callback_t query_callback, - void *_cbk_args, gfdb_time_t *_time, - int _write_freq, int _read_freq, - gf_boolean_t _clear_counters); - +typedef int (*gfdb_find_recently_changed_files_freq_t)( + void *db_conn, gf_query_callback_t query_callback, void *_cbk_args, + gfdb_time_t *_time, int _write_freq, int _read_freq, + gf_boolean_t _clear_counters); typedef int (*gfdb_clear_files_heat_t)(void *db_conn); -typedef int (*gfdb_get_db_version_t)(void *db_conn, - char **version); - -typedef int (*gfdb_get_db_params_t)(void *db_conn, - char *param_key, - char **param_value); - -typedef int (*gfdb_set_db_params_t)(void *db_conn, - char *param_key, - char *param_value); +typedef int (*gfdb_get_db_version_t)(void *db_conn, char **version); +typedef int (*gfdb_get_db_params_t)(void *db_conn, char *param_key, + char **param_value); +typedef int (*gfdb_set_db_params_t)(void *db_conn, char *param_key, + char *param_value); /*Data structure holding all the above plugin function pointers*/ typedef struct gfdb_db_operations { - gfdb_init_db_t init_db_op; - gfdb_fini_db_t fini_db_op; - gfdb_insert_record_t insert_record_op; - gfdb_delete_record_t delete_record_op; - gfdb_compact_db_t compact_db_op; - gfdb_find_all_t find_all_op; - gfdb_find_unchanged_for_time_t find_unchanged_for_time_op; - gfdb_find_recently_changed_files_t find_recently_changed_files_op; - gfdb_find_unchanged_for_time_freq_t - find_unchanged_for_time_freq_op; - gfdb_find_recently_changed_files_freq_t - find_recently_changed_files_freq_op; - gfdb_clear_files_heat_t clear_files_heat_op; - gfdb_get_db_version_t get_db_version; - gfdb_get_db_params_t get_db_params; - gfdb_set_db_params_t set_db_params; + gfdb_init_db_t init_db_op; + gfdb_fini_db_t fini_db_op; + gfdb_insert_record_t insert_record_op; + gfdb_delete_record_t delete_record_op; + gfdb_compact_db_t compact_db_op; + gfdb_find_all_t find_all_op; + gfdb_find_unchanged_for_time_t find_unchanged_for_time_op; + gfdb_find_recently_changed_files_t find_recently_changed_files_op; + gfdb_find_unchanged_for_time_freq_t find_unchanged_for_time_freq_op; + gfdb_find_recently_changed_files_freq_t find_recently_changed_files_freq_op; + gfdb_clear_files_heat_t clear_files_heat_op; + gfdb_get_db_version_t get_db_version; + gfdb_get_db_params_t get_db_params; + gfdb_set_db_params_t set_db_params; } gfdb_db_operations_t; /******************************************************************************* @@ -518,75 +463,70 @@ typedef struct gfdb_db_operations { * * ****************************************************************************/ - typedef struct gfdb_connection { - void *gf_db_connection; - gfdb_db_operations_t gfdb_db_operations; - gfdb_db_type_t gfdb_db_type; + void *gf_db_connection; + gfdb_db_operations_t gfdb_db_operations; + gfdb_db_type_t gfdb_db_type; } gfdb_connection_t; - - - /******************************************************************************* * * Macros for get and set db options * * ****************************************************************************/ - /*Set param_key : str_value into param_dict*/ -#define SET_DB_PARAM_TO_DICT(comp_name, params_dict, param_key,\ - str_value, ret, error)\ - do {\ - data_t *data = NULL;\ - data = str_to_data (str_value);\ - if (!data)\ - goto error;\ - ret = dict_add (params_dict, param_key, data);\ - if (ret) {\ - gf_msg (comp_name, GF_LOG_ERROR, 0,\ - LG_MSG_SET_PARAM_FAILED, "Failed setting %s "\ - "to params dictionary", param_key);\ - data_destroy (data);\ - goto error;\ - };\ - } while (0) +#define SET_DB_PARAM_TO_DICT(comp_name, params_dict, param_key, str_value, \ + ret, error) \ + do { \ + data_t *data = NULL; \ + data = str_to_data(str_value); \ + if (!data) \ + goto error; \ + ret = dict_add(params_dict, param_key, data); \ + if (ret) { \ + gf_msg(comp_name, GF_LOG_ERROR, 0, LG_MSG_SET_PARAM_FAILED, \ + "Failed setting %s " \ + "to params dictionary", \ + param_key); \ + data_destroy(data); \ + goto error; \ + }; \ + } while (0) /*get str_value of param_key from param_dict*/ -#define GET_DB_PARAM_FROM_DICT(comp_name, params_dict, param_key, str_value,\ - error)\ - do {\ - data_t *data = NULL;\ - data = dict_get (params_dict, param_key);\ - if (!data) {\ - gf_msg (comp_name, GF_LOG_ERROR, 0,\ - LG_MSG_GET_PARAM_FAILED, "Failed to retrieve "\ - "%s from params", param_key);\ - goto error;\ - } else {\ - str_value = data->data;\ - };\ - } while (0) - +#define GET_DB_PARAM_FROM_DICT(comp_name, params_dict, param_key, str_value, \ + error) \ + do { \ + data_t *data = NULL; \ + data = dict_get(params_dict, param_key); \ + if (!data) { \ + gf_msg(comp_name, GF_LOG_ERROR, 0, LG_MSG_GET_PARAM_FAILED, \ + "Failed to retrieve " \ + "%s from params", \ + param_key); \ + goto error; \ + } else { \ + str_value = data->data; \ + }; \ + } while (0) /*get str_value of param_key from param_dict. if param_key is not present * set _default_v to str_value */ -#define GET_DB_PARAM_FROM_DICT_DEFAULT(comp_name, params_dict, param_key,\ - str_value, _default_v)\ - do {\ - data_t *data = NULL;\ - data = dict_get (params_dict, param_key);\ - if (!data) {\ - str_value = _default_v;\ - gf_msg (comp_name, GF_LOG_TRACE, 0,\ - LG_MSG_GET_PARAM_FAILED, "Failed to retrieve "\ - "%s from params.Assigning default value: %s",\ - param_key, _default_v);\ - } else {\ - str_value = data->data;\ - };\ - } while (0) - +#define GET_DB_PARAM_FROM_DICT_DEFAULT(comp_name, params_dict, param_key, \ + str_value, _default_v) \ + do { \ + data_t *data = NULL; \ + data = dict_get(params_dict, param_key); \ + if (!data) { \ + str_value = _default_v; \ + gf_msg(comp_name, GF_LOG_TRACE, 0, LG_MSG_GET_PARAM_FAILED, \ + "Failed to retrieve " \ + "%s from params.Assigning default value: %s", \ + param_key, _default_v); \ + } else { \ + str_value = data->data; \ + }; \ + } while (0) #endif diff --git a/libglusterfs/src/gfdb/gfdb_mem-types.h b/libglusterfs/src/gfdb/gfdb_mem-types.h index 2a84b47fcf5..0ea543b7ce1 100644 --- a/libglusterfs/src/gfdb/gfdb_mem-types.h +++ b/libglusterfs/src/gfdb/gfdb_mem-types.h @@ -8,15 +8,10 @@ cases as published by the Free Software Foundation. */ - #ifndef __GFDB_MEM_TYPES_H__ #define __GFDB_MEM_TYPES_H__ #include "mem-types.h" -enum gfdb_mem_types_ { - gfdb_mtstart = gf_common_mt_end + 1, - gfdb_mt_end -}; +enum gfdb_mem_types_ { gfdb_mtstart = gf_common_mt_end + 1, gfdb_mt_end }; #endif - diff --git a/libglusterfs/src/gfdb/gfdb_sqlite3.h b/libglusterfs/src/gfdb/gfdb_sqlite3.h index 11bf3e82707..d8af800db3c 100644 --- a/libglusterfs/src/gfdb/gfdb_sqlite3.h +++ b/libglusterfs/src/gfdb/gfdb_sqlite3.h @@ -10,7 +10,6 @@ #ifndef __GFDB_SQLITE3_H #define __GFDB_SQLITE3_H - /*Sqlite3 header file*/ #include <sqlite3.h> @@ -19,271 +18,255 @@ #include "gfdb_mem-types.h" #include "libglusterfs-messages.h" -#define GF_STMT_SIZE_MAX 2048 +#define GF_STMT_SIZE_MAX 2048 -#define GF_DB_NAME "gfdb.db" -#define GF_FILE_TABLE "GF_FILE_TB" -#define GF_FILE_LINK_TABLE "GF_FLINK_TB" -#define GF_MASTER_TABLE "sqlite_master" +#define GF_DB_NAME "gfdb.db" +#define GF_FILE_TABLE "GF_FILE_TB" +#define GF_FILE_LINK_TABLE "GF_FLINK_TB" +#define GF_MASTER_TABLE "sqlite_master" /*Since we have multiple tables to be created we put it in a transaction*/ -#define GF_CREATE_STMT(out_str)\ -do {\ - sprintf (out_str , "BEGIN; CREATE TABLE IF NOT EXISTS "\ - GF_FILE_TABLE\ - "(GF_ID TEXT PRIMARY KEY NOT NULL, "\ - "W_SEC INTEGER NOT NULL DEFAULT 0, "\ - "W_MSEC INTEGER NOT NULL DEFAULT 0, "\ - "UW_SEC INTEGER NOT NULL DEFAULT 0, "\ - "UW_MSEC INTEGER NOT NULL DEFAULT 0, "\ - "W_READ_SEC INTEGER NOT NULL DEFAULT 0, "\ - "W_READ_MSEC INTEGER NOT NULL DEFAULT 0, "\ - "UW_READ_SEC INTEGER NOT NULL DEFAULT 0, "\ - "UW_READ_MSEC INTEGER NOT NULL DEFAULT 0, "\ - "WRITE_FREQ_CNTR INTEGER NOT NULL DEFAULT 1, "\ - "READ_FREQ_CNTR INTEGER NOT NULL DEFAULT 1); "\ - "CREATE TABLE IF NOT EXISTS "\ - GF_FILE_LINK_TABLE\ - "(GF_ID TEXT NOT NULL, "\ - "GF_PID TEXT NOT NULL, "\ - "FNAME TEXT NOT NULL, "\ - "W_DEL_FLAG INTEGER NOT NULL DEFAULT 0, "\ - "LINK_UPDATE INTEGER NOT NULL DEFAULT 0, "\ - "PRIMARY KEY ( GF_ID, GF_PID, FNAME) "\ - ");"\ - "COMMIT;"\ - );;\ -} while (0) - -#define GF_COL_TB_WSEC GF_FILE_TABLE "." GF_COL_WSEC -#define GF_COL_TB_WMSEC GF_FILE_TABLE "." GF_COL_WMSEC -#define GF_COL_TB_UWSEC GF_FILE_TABLE "." GF_COL_UWSEC -#define GF_COL_TB_UWMSEC GF_FILE_TABLE "." GF_COL_UWMSEC -#define GF_COL_TB_RWSEC GF_FILE_TABLE "." GF_COL_WSEC_READ -#define GF_COL_TB_RWMSEC GF_FILE_TABLE "." GF_COL_WMSEC_READ -#define GF_COL_TB_RUWSEC GF_FILE_TABLE "." GF_COL_UWSEC_READ -#define GF_COL_TB_RUWMSEC GF_FILE_TABLE "." GF_COL_UWMSEC_READ -#define GF_COL_TB_WFC GF_FILE_TABLE "." GF_COL_WRITE_FREQ_CNTR -#define GF_COL_TB_RFC GF_FILE_TABLE "." GF_COL_READ_FREQ_CNTR - +#define GF_CREATE_STMT(out_str) \ + do { \ + sprintf(out_str, "BEGIN; CREATE TABLE IF NOT EXISTS " GF_FILE_TABLE \ + "(GF_ID TEXT PRIMARY KEY NOT NULL, " \ + "W_SEC INTEGER NOT NULL DEFAULT 0, " \ + "W_MSEC INTEGER NOT NULL DEFAULT 0, " \ + "UW_SEC INTEGER NOT NULL DEFAULT 0, " \ + "UW_MSEC INTEGER NOT NULL DEFAULT 0, " \ + "W_READ_SEC INTEGER NOT NULL DEFAULT 0, " \ + "W_READ_MSEC INTEGER NOT NULL DEFAULT 0, " \ + "UW_READ_SEC INTEGER NOT NULL DEFAULT 0, " \ + "UW_READ_MSEC INTEGER NOT NULL DEFAULT 0, " \ + "WRITE_FREQ_CNTR INTEGER NOT NULL DEFAULT 1, " \ + "READ_FREQ_CNTR INTEGER NOT NULL DEFAULT 1); " \ + "CREATE TABLE IF NOT EXISTS " GF_FILE_LINK_TABLE \ + "(GF_ID TEXT NOT NULL, " \ + "GF_PID TEXT NOT NULL, " \ + "FNAME TEXT NOT NULL, " \ + "W_DEL_FLAG INTEGER NOT NULL DEFAULT 0, " \ + "LINK_UPDATE INTEGER NOT NULL DEFAULT 0, " \ + "PRIMARY KEY ( GF_ID, GF_PID, FNAME) " \ + ");" \ + "COMMIT;"); \ + ; \ + } while (0) + +#define GF_COL_TB_WSEC GF_FILE_TABLE "." GF_COL_WSEC +#define GF_COL_TB_WMSEC GF_FILE_TABLE "." GF_COL_WMSEC +#define GF_COL_TB_UWSEC GF_FILE_TABLE "." GF_COL_UWSEC +#define GF_COL_TB_UWMSEC GF_FILE_TABLE "." GF_COL_UWMSEC +#define GF_COL_TB_RWSEC GF_FILE_TABLE "." GF_COL_WSEC_READ +#define GF_COL_TB_RWMSEC GF_FILE_TABLE "." GF_COL_WMSEC_READ +#define GF_COL_TB_RUWSEC GF_FILE_TABLE "." GF_COL_UWSEC_READ +#define GF_COL_TB_RUWMSEC GF_FILE_TABLE "." GF_COL_UWMSEC_READ +#define GF_COL_TB_WFC GF_FILE_TABLE "." GF_COL_WRITE_FREQ_CNTR +#define GF_COL_TB_RFC GF_FILE_TABLE "." GF_COL_READ_FREQ_CNTR /******************************************************************************* -* SQLITE3 Connection details and PRAGMA -* ****************************************************************************/ - -#define GF_SQL_AV_NONE "none" -#define GF_SQL_AV_FULL "full" -#define GF_SQL_AV_INCR "incremental" - -#define GF_SQL_SYNC_OFF "off" -#define GF_SQL_SYNC_NORMAL "normal" -#define GF_SQL_SYNC_FULL "full" - -#define GF_SQL_JM_DELETE "delete" -#define GF_SQL_JM_TRUNCATE "truncate" -#define GF_SQL_JM_PERSIST "persist" -#define GF_SQL_JM_MEMORY "memory" -#define GF_SQL_JM_WAL "wal" -#define GF_SQL_JM_OFF "off" - -#define GF_SQL_COMPACT_NONE 0 -#define GF_SQL_COMPACT_FULL 1 -#define GF_SQL_COMPACT_INCR 2 + * SQLITE3 Connection details and PRAGMA + * ****************************************************************************/ + +#define GF_SQL_AV_NONE "none" +#define GF_SQL_AV_FULL "full" +#define GF_SQL_AV_INCR "incremental" + +#define GF_SQL_SYNC_OFF "off" +#define GF_SQL_SYNC_NORMAL "normal" +#define GF_SQL_SYNC_FULL "full" + +#define GF_SQL_JM_DELETE "delete" +#define GF_SQL_JM_TRUNCATE "truncate" +#define GF_SQL_JM_PERSIST "persist" +#define GF_SQL_JM_MEMORY "memory" +#define GF_SQL_JM_WAL "wal" +#define GF_SQL_JM_OFF "off" + +#define GF_SQL_COMPACT_NONE 0 +#define GF_SQL_COMPACT_FULL 1 +#define GF_SQL_COMPACT_INCR 2 #define GF_SQL_COMPACT_MANUAL 3 -#define GF_SQL_COMPACT_DEF GF_SQL_COMPACT_INCR +#define GF_SQL_COMPACT_DEF GF_SQL_COMPACT_INCR typedef enum gf_sql_auto_vacuum { - gf_sql_av_none = 0, - gf_sql_av_full, - gf_sql_av_incr, - gf_sql_av_invalid + gf_sql_av_none = 0, + gf_sql_av_full, + gf_sql_av_incr, + gf_sql_av_invalid } gf_sql_auto_vacuum_t; typedef enum gf_sql_sync { - gf_sql_sync_off = 0, - gf_sql_sync_normal, - gf_sql_sync_full, - gf_sql_sync_invalid + gf_sql_sync_off = 0, + gf_sql_sync_normal, + gf_sql_sync_full, + gf_sql_sync_invalid } gf_sql_sync_t; - typedef enum gf_sql_journal_mode { - gf_sql_jm_wal = 0, - gf_sql_jm_delete, - gf_sql_jm_truncate, - gf_sql_jm_persist, - gf_sql_jm_memory, - gf_sql_jm_off, - gf_sql_jm_invalid + gf_sql_jm_wal = 0, + gf_sql_jm_delete, + gf_sql_jm_truncate, + gf_sql_jm_persist, + gf_sql_jm_memory, + gf_sql_jm_off, + gf_sql_jm_invalid } gf_sql_journal_mode_t; - typedef struct gf_sql_connection { - char sqlite3_db_path[PATH_MAX]; - sqlite3 *sqlite3_db_conn; - ssize_t cache_size; - ssize_t page_size; - ssize_t wal_autocheckpoint; - gf_sql_journal_mode_t journal_mode; - gf_sql_sync_t synchronous; - gf_sql_auto_vacuum_t auto_vacuum; + char sqlite3_db_path[PATH_MAX]; + sqlite3 *sqlite3_db_conn; + ssize_t cache_size; + ssize_t page_size; + ssize_t wal_autocheckpoint; + gf_sql_journal_mode_t journal_mode; + gf_sql_sync_t synchronous; + gf_sql_auto_vacuum_t auto_vacuum; } gf_sql_connection_t; - - -#define CHECK_SQL_CONN(sql_conn, out)\ -do {\ - GF_VALIDATE_OR_GOTO(GFDB_STR_SQLITE3, sql_conn, out);\ - if (!sql_conn->sqlite3_db_conn) {\ - gf_msg (GFDB_STR_SQLITE3, GF_LOG_ERROR, 0,\ - LG_MSG_CONNECTION_INIT_FAILED,\ - "sqlite3 connection not initialized");\ - goto out;\ - };\ -} while (0) - -#define GF_SQLITE3_SET_PRAGMA(sqlite3_config_str, param_key, format, value,\ - ret, error)\ -do {\ - sprintf (sqlite3_config_str, "PRAGMA %s = " format , param_key,\ - value);\ - ret = sqlite3_exec (sql_conn->sqlite3_db_conn, sqlite3_config_str,\ - NULL, NULL, NULL);\ - if (ret != SQLITE_OK) {\ - gf_msg (GFDB_STR_SQLITE3, GF_LOG_ERROR, 0, LG_MSG_EXEC_FAILED,\ - "Failed executing: %s : %s",\ - sqlite3_config_str, sqlite3_errmsg\ - (sql_conn->sqlite3_db_conn));\ - ret = -1;\ - goto error;\ - };\ -} while (0) +#define CHECK_SQL_CONN(sql_conn, out) \ + do { \ + GF_VALIDATE_OR_GOTO(GFDB_STR_SQLITE3, sql_conn, out); \ + if (!sql_conn->sqlite3_db_conn) { \ + gf_msg(GFDB_STR_SQLITE3, GF_LOG_ERROR, 0, \ + LG_MSG_CONNECTION_INIT_FAILED, \ + "sqlite3 connection not initialized"); \ + goto out; \ + }; \ + } while (0) + +#define GF_SQLITE3_SET_PRAGMA(sqlite3_config_str, param_key, format, value, \ + ret, error) \ + do { \ + sprintf(sqlite3_config_str, "PRAGMA %s = " format, param_key, value); \ + ret = sqlite3_exec(sql_conn->sqlite3_db_conn, sqlite3_config_str, \ + NULL, NULL, NULL); \ + if (ret != SQLITE_OK) { \ + gf_msg(GFDB_STR_SQLITE3, GF_LOG_ERROR, 0, LG_MSG_EXEC_FAILED, \ + "Failed executing: %s : %s", sqlite3_config_str, \ + sqlite3_errmsg(sql_conn->sqlite3_db_conn)); \ + ret = -1; \ + goto error; \ + }; \ + } while (0) /************************SQLITE3 PARAMS KEYS***********************************/ -#define GFDB_SQL_PARAM_DBPATH "sql-db-path" -#define GFDB_SQL_PARAM_CACHE_SIZE "sql-db-cachesize" -#define GFDB_SQL_PARAM_PAGE_SIZE "sql-db-pagesize" -#define GFDB_SQL_PARAM_JOURNAL_MODE "sql-db-journalmode" -#define GFDB_SQL_PARAM_WAL_AUTOCHECK "sql-db-wal-autocheckpoint" -#define GFDB_SQL_PARAM_SYNC "sql-db-sync" -#define GFDB_SQL_PARAM_AUTO_VACUUM "sql-db-autovacuum" - -#define GF_SQL_DEFAULT_DBPATH "" -#define GF_SQL_DEFAULT_PAGE_SIZE "4096" -#define GF_SQL_DEFAULT_CACHE_SIZE "12500" -#define GF_SQL_DEFAULT_WAL_AUTOCHECKPOINT "25000" -#define GF_SQL_DEFAULT_JOURNAL_MODE GF_SQL_JM_WAL -#define GF_SQL_DEFAULT_SYNC GF_SQL_SYNC_OFF -#define GF_SQL_DEFAULT_AUTO_VACUUM GF_SQL_AV_NONE - +#define GFDB_SQL_PARAM_DBPATH "sql-db-path" +#define GFDB_SQL_PARAM_CACHE_SIZE "sql-db-cachesize" +#define GFDB_SQL_PARAM_PAGE_SIZE "sql-db-pagesize" +#define GFDB_SQL_PARAM_JOURNAL_MODE "sql-db-journalmode" +#define GFDB_SQL_PARAM_WAL_AUTOCHECK "sql-db-wal-autocheckpoint" +#define GFDB_SQL_PARAM_SYNC "sql-db-sync" +#define GFDB_SQL_PARAM_AUTO_VACUUM "sql-db-autovacuum" + +#define GF_SQL_DEFAULT_DBPATH "" +#define GF_SQL_DEFAULT_PAGE_SIZE "4096" +#define GF_SQL_DEFAULT_CACHE_SIZE "12500" +#define GF_SQL_DEFAULT_WAL_AUTOCHECKPOINT "25000" +#define GF_SQL_DEFAULT_JOURNAL_MODE GF_SQL_JM_WAL +#define GF_SQL_DEFAULT_SYNC GF_SQL_SYNC_OFF +#define GF_SQL_DEFAULT_AUTO_VACUUM GF_SQL_AV_NONE /* Defines the indexs for sqlite params * The order should be maintained*/ typedef enum sqlite_param_index { - sql_dbpath_ix = 0, - sql_pagesize_ix, - sql_cachesize_ix, - sql_journalmode_ix, - sql_walautocheck_ix, - sql_dbsync_ix, - sql_autovacuum_ix, - /*This should be in the end*/ - sql_index_max + sql_dbpath_ix = 0, + sql_pagesize_ix, + sql_cachesize_ix, + sql_journalmode_ix, + sql_walautocheck_ix, + sql_dbsync_ix, + sql_autovacuum_ix, + /*This should be in the end*/ + sql_index_max } sqlite_param_index_t; /* Array to hold the sqlite param keys * The order should be maintained as sqlite_param_index_t*/ static char *sqlite_params_keys[] = { - GFDB_SQL_PARAM_DBPATH, - GFDB_SQL_PARAM_PAGE_SIZE, - GFDB_SQL_PARAM_CACHE_SIZE, - GFDB_SQL_PARAM_JOURNAL_MODE, - GFDB_SQL_PARAM_WAL_AUTOCHECK, - GFDB_SQL_PARAM_SYNC, - GFDB_SQL_PARAM_AUTO_VACUUM -}; - + GFDB_SQL_PARAM_DBPATH, GFDB_SQL_PARAM_PAGE_SIZE, + GFDB_SQL_PARAM_CACHE_SIZE, GFDB_SQL_PARAM_JOURNAL_MODE, + GFDB_SQL_PARAM_WAL_AUTOCHECK, GFDB_SQL_PARAM_SYNC, + GFDB_SQL_PARAM_AUTO_VACUUM}; /* Array of default values for sqlite params * The order should be maintained as sqlite_param_index_t*/ -static char *sqlite_params_default_value[] = { - GF_SQL_DEFAULT_DBPATH, - GF_SQL_DEFAULT_PAGE_SIZE, - GF_SQL_DEFAULT_CACHE_SIZE, - GF_SQL_DEFAULT_JOURNAL_MODE, - GF_SQL_DEFAULT_WAL_AUTOCHECKPOINT, - GF_SQL_DEFAULT_SYNC, - GF_SQL_DEFAULT_AUTO_VACUUM -}; +static char *sqlite_params_default_value[] = {GF_SQL_DEFAULT_DBPATH, + GF_SQL_DEFAULT_PAGE_SIZE, + GF_SQL_DEFAULT_CACHE_SIZE, + GF_SQL_DEFAULT_JOURNAL_MODE, + GF_SQL_DEFAULT_WAL_AUTOCHECKPOINT, + GF_SQL_DEFAULT_SYNC, + GF_SQL_DEFAULT_AUTO_VACUUM}; /*Extract sql params from page_size to auto_vacumm * The dbpath is extracted in a different way*/ static inline int gfdb_set_sql_params(char *comp_name, dict_t *from_dict, dict_t *to_dict) { - sqlite_param_index_t sql_index = sql_pagesize_ix; - char *_val_str = NULL; - int ret = -1; - - GF_ASSERT (comp_name); - GF_ASSERT (from_dict); - GF_ASSERT (to_dict); - - /*Extract and Set of the sql params from page_size*/ - for (sql_index = sql_pagesize_ix; sql_index < sql_index_max; - sql_index++) { - _val_str = NULL; - GET_DB_PARAM_FROM_DICT_DEFAULT (comp_name, from_dict, - sqlite_params_keys[sql_index], _val_str, - sqlite_params_default_value[sql_index]); - SET_DB_PARAM_TO_DICT (comp_name, to_dict, - sqlite_params_keys[sql_index], _val_str, ret, out); - } + sqlite_param_index_t sql_index = sql_pagesize_ix; + char *_val_str = NULL; + int ret = -1; + + GF_ASSERT(comp_name); + GF_ASSERT(from_dict); + GF_ASSERT(to_dict); + + /*Extract and Set of the sql params from page_size*/ + for (sql_index = sql_pagesize_ix; sql_index < sql_index_max; sql_index++) { + _val_str = NULL; + GET_DB_PARAM_FROM_DICT_DEFAULT(comp_name, from_dict, + sqlite_params_keys[sql_index], _val_str, + sqlite_params_default_value[sql_index]); + SET_DB_PARAM_TO_DICT(comp_name, to_dict, sqlite_params_keys[sql_index], + _val_str, ret, out); + } out: - return ret; + return ret; } - - - /*************************SQLITE3 GFDB PLUGINS*********************************/ /*Db init and fini modules*/ -int gf_sqlite3_fini (void **db_conn); -int gf_sqlite3_init (dict_t *args, void **db_conn); +int +gf_sqlite3_fini(void **db_conn); +int +gf_sqlite3_init(dict_t *args, void **db_conn); /*insert/update/delete modules*/ -int gf_sqlite3_insert (void *db_conn, gfdb_db_record_t *); -int gf_sqlite3_delete (void *db_conn, gfdb_db_record_t *); +int +gf_sqlite3_insert(void *db_conn, gfdb_db_record_t *); +int +gf_sqlite3_delete(void *db_conn, gfdb_db_record_t *); /*querying modules*/ -int gf_sqlite3_find_all (void *db_conn, gf_query_callback_t, - void *_query_cbk_args, - int query_limit); -int gf_sqlite3_find_unchanged_for_time (void *db_conn, - gf_query_callback_t query_callback, - void *_query_cbk_args, - gfdb_time_t *for_time); -int gf_sqlite3_find_recently_changed_files (void *db_conn, - gf_query_callback_t query_callback, - void *_query_cbk_args, - gfdb_time_t *from_time); -int gf_sqlite3_find_unchanged_for_time_freq (void *db_conn, +int +gf_sqlite3_find_all(void *db_conn, gf_query_callback_t, void *_query_cbk_args, + int query_limit); +int +gf_sqlite3_find_unchanged_for_time(void *db_conn, + gf_query_callback_t query_callback, + void *_query_cbk_args, + gfdb_time_t *for_time); +int +gf_sqlite3_find_recently_changed_files(void *db_conn, + gf_query_callback_t query_callback, + void *_query_cbk_args, + gfdb_time_t *from_time); +int +gf_sqlite3_find_unchanged_for_time_freq(void *db_conn, gf_query_callback_t query_callback, void *_query_cbk_args, gfdb_time_t *for_time, - int write_freq_cnt, - int read_freq_cnt, - gf_boolean_t clear_counters); -int gf_sqlite3_find_recently_changed_files_freq (void *db_conn, - gf_query_callback_t query_callback, - void *_query_cbk_args, - gfdb_time_t *from_time, - int write_freq_cnt, - int read_freq_cnt, + int write_freq_cnt, int read_freq_cnt, gf_boolean_t clear_counters); +int +gf_sqlite3_find_recently_changed_files_freq( + void *db_conn, gf_query_callback_t query_callback, void *_query_cbk_args, + gfdb_time_t *from_time, int write_freq_cnt, int read_freq_cnt, + gf_boolean_t clear_counters); -int gf_sqlite3_clear_files_heat (void *db_conn); +int +gf_sqlite3_clear_files_heat(void *db_conn); /* Function to extract version of sqlite db * Input: @@ -296,7 +279,8 @@ int gf_sqlite3_clear_files_heat (void *db_conn); * extracted. * On failure return -1 * */ -int gf_sqlite3_version (void *db_conn, char **version); +int +gf_sqlite3_version(void *db_conn, char **version); /* Function to extract PRAGMA or setting from sqlite db * Input: @@ -310,7 +294,8 @@ int gf_sqlite3_version (void *db_conn, char **version); * extracted. * On failure return -1 * */ -int gf_sqlite3_pragma (void *db_conn, char *pragma_key, char **pragma_value); +int +gf_sqlite3_pragma(void *db_conn, char *pragma_key, char **pragma_value); /* Function to set PRAGMA to sqlite db * Input: @@ -322,7 +307,7 @@ int gf_sqlite3_pragma (void *db_conn, char *pragma_key, char **pragma_value); * On failure return -1 * */ int -gf_sqlite3_set_pragma (void *db_conn, char *pragma_key, char *pragma_value); +gf_sqlite3_set_pragma(void *db_conn, char *pragma_key, char *pragma_value); /* Function to vacuum of sqlite db * Input: @@ -334,10 +319,10 @@ gf_sqlite3_set_pragma (void *db_conn, char *pragma_key, char *pragma_value); * On failure return -1 * */ int -gf_sqlite3_vacuum (void *db_conn, gf_boolean_t compact_active, - gf_boolean_t compact_mode_switched); - -void gf_sqlite3_fill_db_operations (gfdb_db_operations_t *gfdb_db_ops); +gf_sqlite3_vacuum(void *db_conn, gf_boolean_t compact_active, + gf_boolean_t compact_mode_switched); +void +gf_sqlite3_fill_db_operations(gfdb_db_operations_t *gfdb_db_ops); #endif diff --git a/libglusterfs/src/gfdb/gfdb_sqlite3_helper.h b/libglusterfs/src/gfdb/gfdb_sqlite3_helper.h index 0d222305d01..f19344a353c 100644 --- a/libglusterfs/src/gfdb/gfdb_sqlite3_helper.h +++ b/libglusterfs/src/gfdb/gfdb_sqlite3_helper.h @@ -10,7 +10,6 @@ #ifndef __GFDB_SQLITE3_HELPER_H #define __GFDB_SQLITE3_HELPER_H - #include "gfdb_sqlite3.h" /****************************************************************************** @@ -19,27 +18,21 @@ * * ****************************************************************************/ - int -gf_sql_insert_wind (gf_sql_connection_t *sql_conn, - gfdb_db_record_t *gfdb_db_record); +gf_sql_insert_wind(gf_sql_connection_t *sql_conn, + gfdb_db_record_t *gfdb_db_record); int -gf_sql_insert_unwind (gf_sql_connection_t *sql_conn, - gfdb_db_record_t *gfdb_db_record); - +gf_sql_insert_unwind(gf_sql_connection_t *sql_conn, + gfdb_db_record_t *gfdb_db_record); int -gf_sql_update_delete_wind (gf_sql_connection_t *sql_conn, - gfdb_db_record_t *gfdb_db_record); +gf_sql_update_delete_wind(gf_sql_connection_t *sql_conn, + gfdb_db_record_t *gfdb_db_record); int -gf_sql_delete_unwind (gf_sql_connection_t *sql_conn, - gfdb_db_record_t *gfdb_db_record); - - - - +gf_sql_delete_unwind(gf_sql_connection_t *sql_conn, + gfdb_db_record_t *gfdb_db_record); /****************************************************************************** * @@ -47,13 +40,12 @@ gf_sql_delete_unwind (gf_sql_connection_t *sql_conn, * * ****************************************************************************/ - int -gf_sql_query_function (sqlite3_stmt *prep_stmt, - gf_query_callback_t query_callback, - void *_query_cbk_args); +gf_sql_query_function(sqlite3_stmt *prep_stmt, + gf_query_callback_t query_callback, + void *_query_cbk_args); int -gf_sql_clear_counters (gf_sql_connection_t *sql_conn); +gf_sql_clear_counters(gf_sql_connection_t *sql_conn); #endif diff --git a/libglusterfs/src/gidcache.h b/libglusterfs/src/gidcache.h index 886721e719f..3a7de47dec7 100644 --- a/libglusterfs/src/gidcache.h +++ b/libglusterfs/src/gidcache.h @@ -26,30 +26,35 @@ * to scan more entries with every lookup/update. */ -#define AUX_GID_CACHE_ASSOC 4 -#define AUX_GID_CACHE_BUCKETS 256 -#define AUX_GID_CACHE_SIZE (AUX_GID_CACHE_ASSOC * AUX_GID_CACHE_BUCKETS) +#define AUX_GID_CACHE_ASSOC 4 +#define AUX_GID_CACHE_BUCKETS 256 +#define AUX_GID_CACHE_SIZE (AUX_GID_CACHE_ASSOC * AUX_GID_CACHE_BUCKETS) typedef struct { - uint64_t gl_id; - uint64_t gl_uid; - uint64_t gl_gid; - int gl_count; - gid_t *gl_list; - time_t gl_deadline; + uint64_t gl_id; + uint64_t gl_uid; + uint64_t gl_gid; + int gl_count; + gid_t *gl_list; + time_t gl_deadline; } gid_list_t; typedef struct { - gf_lock_t gc_lock; - uint32_t gc_max_age; - unsigned int gc_nbuckets; - gid_list_t gc_cache[AUX_GID_CACHE_SIZE]; + gf_lock_t gc_lock; + uint32_t gc_max_age; + unsigned int gc_nbuckets; + gid_list_t gc_cache[AUX_GID_CACHE_SIZE]; } gid_cache_t; -int gid_cache_init(gid_cache_t *, uint32_t); -int gid_cache_reconf(gid_cache_t *, uint32_t); -const gid_list_t *gid_cache_lookup(gid_cache_t *, uint64_t, uint64_t, uint64_t); -void gid_cache_release(gid_cache_t *, const gid_list_t *); -int gid_cache_add(gid_cache_t *, gid_list_t *); +int +gid_cache_init(gid_cache_t *, uint32_t); +int +gid_cache_reconf(gid_cache_t *, uint32_t); +const gid_list_t * +gid_cache_lookup(gid_cache_t *, uint64_t, uint64_t, uint64_t); +void +gid_cache_release(gid_cache_t *, const gid_list_t *); +int +gid_cache_add(gid_cache_t *, gid_list_t *); #endif /* __GIDCACHE_H__ */ diff --git a/libglusterfs/src/glfs-message-id.h b/libglusterfs/src/glfs-message-id.h index 9702a18ffe4..21d5397d2e6 100644 --- a/libglusterfs/src/glfs-message-id.h +++ b/libglusterfs/src/glfs-message-id.h @@ -13,86 +13,87 @@ /* Base of all message IDs, all message IDs would be * greater than this */ -#define GLFS_MSGID_BASE 100000 +#define GLFS_MSGID_BASE 100000 /* Segment size of allocated range. Any component needing more than this * segment size should take multiple segments (at times non contiguous, * if extensions are being made post the next segment already allocated) */ -#define GLFS_MSGID_SEGMENT 1000 +#define GLFS_MSGID_SEGMENT 1000 /* Macro to define a range of messages for a component. The first argument is * the name of the component. The second argument is the number of segments * to allocate. The defined values will be GLFS_MSGID_COMP_<name> and * GLFS_MSGID_COMP_<name>_END. */ -#define GLFS_MSGID_COMP(_name, _blocks) \ - GLFS_MSGID_COMP_##_name, \ - GLFS_MSGID_COMP_##_name##_END = (GLFS_MSGID_COMP_##_name + \ +#define GLFS_MSGID_COMP(_name, _blocks) \ + GLFS_MSGID_COMP_##_name, \ + GLFS_MSGID_COMP_##_name##_END = (GLFS_MSGID_COMP_##_name + \ (GLFS_MSGID_SEGMENT * (_blocks)) - 1) -#define GLFS_MSGID(_name, _msgs...) \ - enum _msgid_table_##_name { \ - GLFS_##_name##_COMP_BASE = GLFS_MSGID_COMP_##_name, ## _msgs, \ - GLGS_##_name##_COMP_END \ - } +#define GLFS_MSGID(_name, _msgs...) \ + enum _msgid_table_##_name \ + { \ + GLFS_##_name##_COMP_BASE = GLFS_MSGID_COMP_##_name, ##_msgs, \ + GLGS_##_name##_COMP_END \ + } /* Per module message segments allocated */ /* NOTE: For any new module add to the end the modules */ enum _msgid_comp { - GLFS_MSGID_RESERVED = GLFS_MSGID_BASE - 1, + GLFS_MSGID_RESERVED = GLFS_MSGID_BASE - 1, - GLFS_MSGID_COMP(GLUSTERFSD, 1), - GLFS_MSGID_COMP(LIBGLUSTERFS, 1), - GLFS_MSGID_COMP(RPC_LIB, 1), - GLFS_MSGID_COMP(RPC_TRANS_RDMA, 1), - GLFS_MSGID_COMP(API, 1), - GLFS_MSGID_COMP(CLI, 1), -/* glusterd has a lot of messages, taking 2 segments for the same */ - GLFS_MSGID_COMP(GLUSTERD, 2), - GLFS_MSGID_COMP(AFR, 1), - GLFS_MSGID_COMP(DHT, 1), -/* there is no component called 'common', however reserving this segment - * for common actions/errors like dict_{get/set}, memory accounting*/ - GLFS_MSGID_COMP(COMMON, 1), - GLFS_MSGID_COMP(UPCALL, 1), - GLFS_MSGID_COMP(NFS, 1), - GLFS_MSGID_COMP(POSIX, 1), - GLFS_MSGID_COMP(PC, 1), - GLFS_MSGID_COMP(PS, 1), - GLFS_MSGID_COMP(BITROT_STUB, 1), - GLFS_MSGID_COMP(CHANGELOG, 1), - GLFS_MSGID_COMP(BITROT_BITD, 1), - GLFS_MSGID_COMP(RPC_TRANS_SOCKET, 1), - GLFS_MSGID_COMP(QUOTA, 1), - GLFS_MSGID_COMP(CTR, 1), - GLFS_MSGID_COMP(EC, 1), - GLFS_MSGID_COMP(IO_CACHE, 1), - GLFS_MSGID_COMP(IO_THREADS, 1), - GLFS_MSGID_COMP(MD_CACHE, 1), - GLFS_MSGID_COMP(OPEN_BEHIND, 1), - GLFS_MSGID_COMP(QUICK_READ, 1), - GLFS_MSGID_COMP(READ_AHEAD, 1), - GLFS_MSGID_COMP(READDIR_AHEAD, 1), - GLFS_MSGID_COMP(SYMLINK_CACHE, 1), - GLFS_MSGID_COMP(WRITE_BEHIND, 1), - GLFS_MSGID_COMP(CHANGELOG_LIB, 1), - GLFS_MSGID_COMP(SHARD, 1), - GLFS_MSGID_COMP(JBR, 1), - GLFS_MSGID_COMP(PL, 1), - GLFS_MSGID_COMP(DC, 1), - GLFS_MSGID_COMP(LEASES, 1), - GLFS_MSGID_COMP(INDEX, 1), - GLFS_MSGID_COMP(POSIX_ACL, 1), - GLFS_MSGID_COMP(NLC, 1), - GLFS_MSGID_COMP(SL, 1), - GLFS_MSGID_COMP(HAM, 1), - GLFS_MSGID_COMP(SDFS, 1), - GLFS_MSGID_COMP(QUIESCE, 1), - GLFS_MSGID_COMP(TA, 1), - GLFS_MSGID_COMP(TEMPLATE, 1), + GLFS_MSGID_COMP(GLUSTERFSD, 1), + GLFS_MSGID_COMP(LIBGLUSTERFS, 1), + GLFS_MSGID_COMP(RPC_LIB, 1), + GLFS_MSGID_COMP(RPC_TRANS_RDMA, 1), + GLFS_MSGID_COMP(API, 1), + GLFS_MSGID_COMP(CLI, 1), + /* glusterd has a lot of messages, taking 2 segments for the same */ + GLFS_MSGID_COMP(GLUSTERD, 2), + GLFS_MSGID_COMP(AFR, 1), + GLFS_MSGID_COMP(DHT, 1), + /* there is no component called 'common', however reserving this segment + * for common actions/errors like dict_{get/set}, memory accounting*/ + GLFS_MSGID_COMP(COMMON, 1), + GLFS_MSGID_COMP(UPCALL, 1), + GLFS_MSGID_COMP(NFS, 1), + GLFS_MSGID_COMP(POSIX, 1), + GLFS_MSGID_COMP(PC, 1), + GLFS_MSGID_COMP(PS, 1), + GLFS_MSGID_COMP(BITROT_STUB, 1), + GLFS_MSGID_COMP(CHANGELOG, 1), + GLFS_MSGID_COMP(BITROT_BITD, 1), + GLFS_MSGID_COMP(RPC_TRANS_SOCKET, 1), + GLFS_MSGID_COMP(QUOTA, 1), + GLFS_MSGID_COMP(CTR, 1), + GLFS_MSGID_COMP(EC, 1), + GLFS_MSGID_COMP(IO_CACHE, 1), + GLFS_MSGID_COMP(IO_THREADS, 1), + GLFS_MSGID_COMP(MD_CACHE, 1), + GLFS_MSGID_COMP(OPEN_BEHIND, 1), + GLFS_MSGID_COMP(QUICK_READ, 1), + GLFS_MSGID_COMP(READ_AHEAD, 1), + GLFS_MSGID_COMP(READDIR_AHEAD, 1), + GLFS_MSGID_COMP(SYMLINK_CACHE, 1), + GLFS_MSGID_COMP(WRITE_BEHIND, 1), + GLFS_MSGID_COMP(CHANGELOG_LIB, 1), + GLFS_MSGID_COMP(SHARD, 1), + GLFS_MSGID_COMP(JBR, 1), + GLFS_MSGID_COMP(PL, 1), + GLFS_MSGID_COMP(DC, 1), + GLFS_MSGID_COMP(LEASES, 1), + GLFS_MSGID_COMP(INDEX, 1), + GLFS_MSGID_COMP(POSIX_ACL, 1), + GLFS_MSGID_COMP(NLC, 1), + GLFS_MSGID_COMP(SL, 1), + GLFS_MSGID_COMP(HAM, 1), + GLFS_MSGID_COMP(SDFS, 1), + GLFS_MSGID_COMP(QUIESCE, 1), + GLFS_MSGID_COMP(TA, 1), + GLFS_MSGID_COMP(TEMPLATE, 1), -/* --- new segments for messages goes above this line --- */ + /* --- new segments for messages goes above this line --- */ - GLFS_MSGID_END + GLFS_MSGID_END }; #endif /* !_GLFS_MESSAGE_ID_H_ */ diff --git a/libglusterfs/src/globals.h b/libglusterfs/src/globals.h index fb1f839b259..95082f04588 100644 --- a/libglusterfs/src/globals.h +++ b/libglusterfs/src/globals.h @@ -15,7 +15,7 @@ #define GF_DEFAULT_VOLFILE_TRANSPORT "tcp" #define GF_GLOBAL_XLATOR_NAME "global" -#define GD_OP_VERSION_KEY "operating-version" +#define GD_OP_VERSION_KEY "operating-version" #define GD_MIN_OP_VERSION_KEY "minimum-operating-version" #define GD_MAX_OP_VERSION_KEY "maximum-operating-version" @@ -23,7 +23,6 @@ #define GF_AVOID_OVERWRITE "glusterfs.avoid.overwrite" #define GF_CLEAN_WRITE_PROTECTION "glusterfs.clean.writexattr" - /* Gluster versions - OP-VERSION mapping * * 3.3.x - 1 @@ -42,73 +41,75 @@ * should allow for some gaps between two Y releases for backports of features * in Z releases. */ -#define GD_OP_VERSION_MIN 1 /* MIN is the fresh start op-version, mostly - should not change */ -#define GD_OP_VERSION_MAX GD_OP_VERSION_4_2_0 /* MAX VERSION is the maximum - count in VME table, should - keep changing with - introduction of newer - versions */ +#define GD_OP_VERSION_MIN \ + 1 /* MIN is the fresh start op-version, mostly \ + should not change */ +#define GD_OP_VERSION_MAX \ + GD_OP_VERSION_4_2_0 /* MAX VERSION is the maximum \ + count in VME table, should \ + keep changing with \ + introduction of newer \ + versions */ -#define GD_OP_VERSION_3_6_0 30600 /* Op-Version for GlusterFS 3.6.0 */ +#define GD_OP_VERSION_3_6_0 30600 /* Op-Version for GlusterFS 3.6.0 */ -#define GD_OP_VERSION_3_7_0 30700 /* Op-version for GlusterFS 3.7.0 */ +#define GD_OP_VERSION_3_7_0 30700 /* Op-version for GlusterFS 3.7.0 */ -#define GD_OP_VERSION_3_7_1 30701 /* Op-version for GlusterFS 3.7.1 */ +#define GD_OP_VERSION_3_7_1 30701 /* Op-version for GlusterFS 3.7.1 */ -#define GD_OP_VERSION_3_7_2 30702 /* Op-version for GlusterFS 3.7.2 */ +#define GD_OP_VERSION_3_7_2 30702 /* Op-version for GlusterFS 3.7.2 */ -#define GD_OP_VERSION_3_7_3 30703 /* Op-version for GlusterFS 3.7.3 */ +#define GD_OP_VERSION_3_7_3 30703 /* Op-version for GlusterFS 3.7.3 */ -#define GD_OP_VERSION_3_7_4 30704 /* Op-version for GlusterFS 3.7.4 */ +#define GD_OP_VERSION_3_7_4 30704 /* Op-version for GlusterFS 3.7.4 */ -#define GD_OP_VERSION_3_7_5 30705 /* Op-version for GlusterFS 3.7.5 */ +#define GD_OP_VERSION_3_7_5 30705 /* Op-version for GlusterFS 3.7.5 */ -#define GD_OP_VERSION_3_7_6 30706 /* Op-version for GlusterFS 3.7.6 */ +#define GD_OP_VERSION_3_7_6 30706 /* Op-version for GlusterFS 3.7.6 */ -#define GD_OP_VERSION_3_7_7 30707 /* Op-version for GlusterFS 3.7.7 */ +#define GD_OP_VERSION_3_7_7 30707 /* Op-version for GlusterFS 3.7.7 */ -#define GD_OP_VERSION_3_7_10 30710 /* Op-version for GlusterFS 3.7.10 */ +#define GD_OP_VERSION_3_7_10 30710 /* Op-version for GlusterFS 3.7.10 */ -#define GD_OP_VERSION_3_7_12 30712 /* Op-version for GlusterFS 3.7.12 */ +#define GD_OP_VERSION_3_7_12 30712 /* Op-version for GlusterFS 3.7.12 */ -#define GD_OP_VERSION_3_8_0 30800 /* Op-version for GlusterFS 3.8.0 */ +#define GD_OP_VERSION_3_8_0 30800 /* Op-version for GlusterFS 3.8.0 */ -#define GD_OP_VERSION_3_8_3 30803 /* Op-version for GlusterFS 3.8.3 */ +#define GD_OP_VERSION_3_8_3 30803 /* Op-version for GlusterFS 3.8.3 */ -#define GD_OP_VERSION_3_8_4 30804 /* Op-version for GlusterFS 3.8.4 */ +#define GD_OP_VERSION_3_8_4 30804 /* Op-version for GlusterFS 3.8.4 */ -#define GD_OP_VERSION_3_9_0 30900 /* Op-version for GlusterFS 3.9.0 */ +#define GD_OP_VERSION_3_9_0 30900 /* Op-version for GlusterFS 3.9.0 */ -#define GD_OP_VERSION_3_9_1 30901 /* Op-version for GlusterFS 3.9.1 */ +#define GD_OP_VERSION_3_9_1 30901 /* Op-version for GlusterFS 3.9.1 */ -#define GD_OP_VERSION_3_10_0 31000 /* Op-version for GlusterFS 3.10.0 */ +#define GD_OP_VERSION_3_10_0 31000 /* Op-version for GlusterFS 3.10.0 */ -#define GD_OP_VERSION_3_10_1 31001 /* Op-version for GlusterFS 3.10.1 */ +#define GD_OP_VERSION_3_10_1 31001 /* Op-version for GlusterFS 3.10.1 */ -#define GD_OP_VERSION_3_10_2 31002 /* Op-version for GlusterFS 3.10.2 */ +#define GD_OP_VERSION_3_10_2 31002 /* Op-version for GlusterFS 3.10.2 */ -#define GD_OP_VERSION_3_11_0 31100 /* Op-version for GlusterFS 3.11.0 */ +#define GD_OP_VERSION_3_11_0 31100 /* Op-version for GlusterFS 3.11.0 */ -#define GD_OP_VERSION_3_11_1 31101 /* Op-version for GlusterFS 3.11.1 */ +#define GD_OP_VERSION_3_11_1 31101 /* Op-version for GlusterFS 3.11.1 */ -#define GD_OP_VERSION_3_12_0 31200 /* Op-version for GlusterFS 3.12.0 */ +#define GD_OP_VERSION_3_12_0 31200 /* Op-version for GlusterFS 3.12.0 */ -#define GD_OP_VERSION_3_12_2 31202 /* Op-version for GlusterFS 3.12.2 */ +#define GD_OP_VERSION_3_12_2 31202 /* Op-version for GlusterFS 3.12.2 */ -#define GD_OP_VERSION_3_12_3 31203 /* Op-version for GlusterFS 3.12.3 */ +#define GD_OP_VERSION_3_12_3 31203 /* Op-version for GlusterFS 3.12.3 */ -#define GD_OP_VERSION_3_13_0 31300 /* Op-version for GlusterFS 3.13.0 */ +#define GD_OP_VERSION_3_13_0 31300 /* Op-version for GlusterFS 3.13.0 */ -#define GD_OP_VERSION_3_13_1 31301 /* Op-version for GlusterFS 3.13.1 */ +#define GD_OP_VERSION_3_13_1 31301 /* Op-version for GlusterFS 3.13.1 */ -#define GD_OP_VERSION_3_13_2 31302 /* Op-version for GlusterFS 3.13.2 */ +#define GD_OP_VERSION_3_13_2 31302 /* Op-version for GlusterFS 3.13.2 */ -#define GD_OP_VERSION_4_0_0 40000 /* Op-version for GlusterFS 4.0.0 */ +#define GD_OP_VERSION_4_0_0 40000 /* Op-version for GlusterFS 4.0.0 */ -#define GD_OP_VERSION_4_1_0 40100 /* Op-version for GlusterFS 4.1.0 */ +#define GD_OP_VERSION_4_1_0 40100 /* Op-version for GlusterFS 4.1.0 */ -#define GD_OP_VERSION_4_2_0 40200 /* Op-version for GlusterFS 4.2.0 */ +#define GD_OP_VERSION_4_2_0 40200 /* Op-version for GlusterFS 4.2.0 */ #define GD_OP_VER_PERSISTENT_AFR_XATTRS GD_OP_VERSION_3_6_0 @@ -117,41 +118,57 @@ /* THIS */ #define THIS (*__glusterfs_this_location()) -#define DECLARE_OLD_THIS xlator_t *old_THIS = THIS +#define DECLARE_OLD_THIS xlator_t *old_THIS = THIS -xlator_t **__glusterfs_this_location (void); -xlator_t *glusterfs_this_get (void); -int glusterfs_this_set (xlator_t *); +xlator_t ** +__glusterfs_this_location(void); +xlator_t * +glusterfs_this_get(void); +int +glusterfs_this_set(xlator_t *); extern xlator_t global_xlator; extern struct volume_options global_xl_options[]; /* syncopctx */ -void *syncopctx_getctx (void); -int syncopctx_setctx (void *ctx); +void * +syncopctx_getctx(void); +int +syncopctx_setctx(void *ctx); /* task */ -void *synctask_get (void); -int synctask_set (void *); +void * +synctask_get(void); +int +synctask_set(void *); /* uuid_buf */ -char *glusterfs_uuid_buf_get (void); +char * +glusterfs_uuid_buf_get(void); /* lkowner_buf */ -char *glusterfs_lkowner_buf_get (void); +char * +glusterfs_lkowner_buf_get(void); /* leaseid buf */ -char *glusterfs_leaseid_buf_get (void); -char *glusterfs_leaseid_exist (void); +char * +glusterfs_leaseid_buf_get(void); +char * +glusterfs_leaseid_exist(void); /* init */ -int glusterfs_globals_init (glusterfs_ctx_t *ctx); +int +glusterfs_globals_init(glusterfs_ctx_t *ctx); -struct tvec_base* glusterfs_ctx_tw_get (glusterfs_ctx_t *ctx); -void glusterfs_ctx_tw_put (glusterfs_ctx_t *ctx); +struct tvec_base * +glusterfs_ctx_tw_get(glusterfs_ctx_t *ctx); +void +glusterfs_ctx_tw_put(glusterfs_ctx_t *ctx); extern const char *gf_fop_list[]; extern const char *gf_upcall_list[]; /* mem acct enable/disable */ -int gf_global_mem_acct_enable_get (void); -int gf_global_mem_acct_enable_set (int val); +int +gf_global_mem_acct_enable_get(void); +int +gf_global_mem_acct_enable_set(int val); #endif /* !_GLOBALS_H */ diff --git a/libglusterfs/src/glusterfs-acl.h b/libglusterfs/src/glusterfs-acl.h index 6194f320ab0..8c731fc771b 100644 --- a/libglusterfs/src/glusterfs-acl.h +++ b/libglusterfs/src/glusterfs-acl.h @@ -11,7 +11,6 @@ #ifndef _GLUSTERFS_ACL_H #define _GLUSTERFS_ACL_H - /* WARNING: Much if this code is restricted to Linux usage. * * It would be much cleaner to replace the code with something that is based on @@ -27,139 +26,136 @@ #include "locking.h" /* For gf_lock_t in struct posix_acl_conf */ -#define ACL_PROGRAM 100227 -#define ACLV3_VERSION 3 +#define ACL_PROGRAM 100227 +#define ACLV3_VERSION 3 -#define POSIX_ACL_MINIMAL_ACE_COUNT 3 +#define POSIX_ACL_MINIMAL_ACE_COUNT 3 -#define POSIX_ACL_READ (0x04) -#define POSIX_ACL_WRITE (0x02) -#define POSIX_ACL_EXECUTE (0x01) +#define POSIX_ACL_READ (0x04) +#define POSIX_ACL_WRITE (0x02) +#define POSIX_ACL_EXECUTE (0x01) -#define POSIX_ACL_UNDEFINED_TAG (0x00) -#define POSIX_ACL_USER_OBJ (0x01) -#define POSIX_ACL_USER (0x02) -#define POSIX_ACL_GROUP_OBJ (0x04) -#define POSIX_ACL_GROUP (0x08) -#define POSIX_ACL_MASK (0x10) -#define POSIX_ACL_OTHER (0x20) +#define POSIX_ACL_UNDEFINED_TAG (0x00) +#define POSIX_ACL_USER_OBJ (0x01) +#define POSIX_ACL_USER (0x02) +#define POSIX_ACL_GROUP_OBJ (0x04) +#define POSIX_ACL_GROUP (0x08) +#define POSIX_ACL_MASK (0x10) +#define POSIX_ACL_OTHER (0x20) -#define POSIX_ACL_UNDEFINED_ID (-1) +#define POSIX_ACL_UNDEFINED_ID (-1) -#define POSIX_ACL_XATTR_VERSION (0x02) +#define POSIX_ACL_XATTR_VERSION (0x02) -#define POSIX_ACL_ACCESS_XATTR "system.posix_acl_access" -#define POSIX_ACL_DEFAULT_XATTR "system.posix_acl_default" +#define POSIX_ACL_ACCESS_XATTR "system.posix_acl_access" +#define POSIX_ACL_DEFAULT_XATTR "system.posix_acl_default" struct posix_acl_xattr_entry { - uint16_t tag; - uint16_t perm; - uint32_t id; + uint16_t tag; + uint16_t perm; + uint32_t id; }; struct posix_acl_xattr_header { - uint32_t version; - struct posix_acl_xattr_entry entries[]; + uint32_t version; + struct posix_acl_xattr_entry entries[]; }; -typedef struct posix_acl_xattr_entry posix_acl_xattr_entry; +typedef struct posix_acl_xattr_entry posix_acl_xattr_entry; typedef struct posix_acl_xattr_header posix_acl_xattr_header; static inline size_t -posix_acl_xattr_size (unsigned int count) +posix_acl_xattr_size(unsigned int count) { - return (sizeof(posix_acl_xattr_header) + - (count * sizeof(posix_acl_xattr_entry))); + return (sizeof(posix_acl_xattr_header) + + (count * sizeof(posix_acl_xattr_entry))); } static inline ssize_t -posix_acl_xattr_count (size_t size) +posix_acl_xattr_count(size_t size) { - if (size < sizeof(posix_acl_xattr_header)) - return (-1); - size -= sizeof(posix_acl_xattr_header); - if (size % sizeof(posix_acl_xattr_entry)) - return (-1); - return (size / sizeof(posix_acl_xattr_entry)); + if (size < sizeof(posix_acl_xattr_header)) + return (-1); + size -= sizeof(posix_acl_xattr_header); + if (size % sizeof(posix_acl_xattr_entry)) + return (-1); + return (size / sizeof(posix_acl_xattr_entry)); } struct posix_ace { - uint16_t tag; - uint16_t perm; - uint32_t id; + uint16_t tag; + uint16_t perm; + uint32_t id; }; - struct posix_acl { - int refcnt; - int count; - struct posix_ace entries[]; + int refcnt; + int count; + struct posix_ace entries[]; }; struct posix_acl_ctx { - uid_t uid; - gid_t gid; - mode_t perm; - glusterfs_fop_t fop; - struct posix_acl *acl_access; - struct posix_acl *acl_default; + uid_t uid; + gid_t gid; + mode_t perm; + glusterfs_fop_t fop; + struct posix_acl *acl_access; + struct posix_acl *acl_default; }; struct posix_acl_conf { - gf_lock_t acl_lock; - uid_t super_uid; - struct posix_acl *minimal_acl; + gf_lock_t acl_lock; + uid_t super_uid; + struct posix_acl *minimal_acl; }; - /* Above this comment, the legacy POSIX ACL support is kept until it is not * used anymore. Below you will find the more portable version to support POSIX * ACls based on the implementation of libacl (see sys/acl.h). */ /* virtual xattrs passed over RPC, not stored on disk */ -#define GF_POSIX_ACL_ACCESS "glusterfs.posix.acl" -#define GF_POSIX_ACL_DEFAULT "glusterfs.posix.default_acl" -#define GF_POSIX_ACL_REQUEST(key) \ - (!strncmp(key, GF_POSIX_ACL_ACCESS, SLEN (GF_POSIX_ACL_ACCESS)) || \ - !strncmp(key, GF_POSIX_ACL_DEFAULT, SLEN (GF_POSIX_ACL_DEFAULT))) +#define GF_POSIX_ACL_ACCESS "glusterfs.posix.acl" +#define GF_POSIX_ACL_DEFAULT "glusterfs.posix.default_acl" +#define GF_POSIX_ACL_REQUEST(key) \ + (!strncmp(key, GF_POSIX_ACL_ACCESS, SLEN(GF_POSIX_ACL_ACCESS)) || \ + !strncmp(key, GF_POSIX_ACL_DEFAULT, SLEN(GF_POSIX_ACL_DEFAULT))) #ifdef HAVE_SYS_ACL_H /* only NetBSD does not support POSIX ACLs */ #include <sys/acl.h> -static inline const char* -gf_posix_acl_get_key (const acl_type_t type) +static inline const char * +gf_posix_acl_get_key(const acl_type_t type) { - char *acl_key = NULL; + char *acl_key = NULL; - switch (type) { + switch (type) { case ACL_TYPE_ACCESS: - acl_key = GF_POSIX_ACL_ACCESS; - break; + acl_key = GF_POSIX_ACL_ACCESS; + break; case ACL_TYPE_DEFAULT: - acl_key = GF_POSIX_ACL_DEFAULT; - break; + acl_key = GF_POSIX_ACL_DEFAULT; + break; default: - errno = EINVAL; - } + errno = EINVAL; + } - return acl_key; + return acl_key; } static inline const acl_type_t -gf_posix_acl_get_type (const char *key) +gf_posix_acl_get_type(const char *key) { - acl_type_t type = 0; + acl_type_t type = 0; - if (!strncmp (key, GF_POSIX_ACL_ACCESS, SLEN (GF_POSIX_ACL_ACCESS))) - type = ACL_TYPE_ACCESS; - else if (!strncmp (key, GF_POSIX_ACL_DEFAULT, - SLEN (GF_POSIX_ACL_DEFAULT))) - type = ACL_TYPE_DEFAULT; - else - errno = EINVAL; + if (!strncmp(key, GF_POSIX_ACL_ACCESS, SLEN(GF_POSIX_ACL_ACCESS))) + type = ACL_TYPE_ACCESS; + else if (!strncmp(key, GF_POSIX_ACL_DEFAULT, SLEN(GF_POSIX_ACL_DEFAULT))) + type = ACL_TYPE_DEFAULT; + else + errno = EINVAL; - return type; + return type; } #endif /* HAVE_SYS_ACL_H */ diff --git a/libglusterfs/src/glusterfs.h b/libglusterfs/src/glusterfs.h index b046e0dd783..376b7a7c673 100644 --- a/libglusterfs/src/glusterfs.h +++ b/libglusterfs/src/glusterfs.h @@ -54,7 +54,7 @@ #include "atomic.h" #define GF_YES 1 -#define GF_NO 0 +#define GF_NO 0 #ifndef O_LARGEFILE /* savannah bug #20053, patch for compiling on darwin */ @@ -63,7 +63,7 @@ #ifndef O_FMODE_EXEC /* redhat bug 843080, added from linux/fs.h */ -#define O_FMODE_EXEC 040 //0x20 +#define O_FMODE_EXEC 040 // 0x20 #endif #ifndef O_DIRECT @@ -88,95 +88,95 @@ /*gets max-offset on all architectures correctly*/ #define GF_OFF_MAX ((1ULL << (sizeof(off_t) * 8 - 1)) - 1ULL) -#define GLUSTERD_MAX_SNAP_NAME 255 -#define GLUSTERFS_SOCKET_LISTEN_BACKLOG 10 +#define GLUSTERD_MAX_SNAP_NAME 255 +#define GLUSTERFS_SOCKET_LISTEN_BACKLOG 10 #define SLEN(str) (sizeof(str) - 1) -#define ZR_MOUNTPOINT_OPT "mountpoint" -#define ZR_ATTR_TIMEOUT_OPT "attribute-timeout" -#define ZR_ENTRY_TIMEOUT_OPT "entry-timeout" +#define ZR_MOUNTPOINT_OPT "mountpoint" +#define ZR_ATTR_TIMEOUT_OPT "attribute-timeout" +#define ZR_ENTRY_TIMEOUT_OPT "entry-timeout" #define ZR_NEGATIVE_TIMEOUT_OPT "negative-timeout" -#define ZR_DIRECT_IO_OPT "direct-io-mode" +#define ZR_DIRECT_IO_OPT "direct-io-mode" #define ZR_STRICT_VOLFILE_CHECK "strict-volfile-check" -#define ZR_DUMP_FUSE "dump-fuse" -#define ZR_FUSE_MOUNTOPTS "fuse-mountopts" +#define ZR_DUMP_FUSE "dump-fuse" +#define ZR_FUSE_MOUNTOPTS "fuse-mountopts" #define IO_THREADS_QUEUE_SIZE_KEY "io-thread-queue-size" -#define GF_XATTR_CLRLK_CMD "glusterfs.clrlk" -#define GF_XATTR_PATHINFO_KEY "trusted.glusterfs.pathinfo" -#define GF_XATTR_NODE_UUID_KEY "trusted.glusterfs.node-uuid" +#define GF_XATTR_CLRLK_CMD "glusterfs.clrlk" +#define GF_XATTR_PATHINFO_KEY "trusted.glusterfs.pathinfo" +#define GF_XATTR_NODE_UUID_KEY "trusted.glusterfs.node-uuid" #define GF_XATTR_LIST_NODE_UUIDS_KEY "trusted.glusterfs.list-node-uuids" #define GF_REBAL_FIND_LOCAL_SUBVOL "glusterfs.find-local-subvol" #define GF_REBAL_OLD_FIND_LOCAL_SUBVOL "glusterfs.old-find-local-subvol" -#define GF_XATTR_VOL_ID_KEY "trusted.glusterfs.volume-id" -#define GF_XATTR_LOCKINFO_KEY "trusted.glusterfs.lockinfo" -#define GF_META_LOCK_KEY "glusterfs.lock-migration-meta-lock" -#define GF_META_UNLOCK_KEY "glusterfs.lock-migration-meta-unlock" +#define GF_XATTR_VOL_ID_KEY "trusted.glusterfs.volume-id" +#define GF_XATTR_LOCKINFO_KEY "trusted.glusterfs.lockinfo" +#define GF_META_LOCK_KEY "glusterfs.lock-migration-meta-lock" +#define GF_META_UNLOCK_KEY "glusterfs.lock-migration-meta-unlock" #define GF_XATTR_GET_REAL_FILENAME_KEY "glusterfs.get_real_filename:" -#define GF_XATTR_USER_PATHINFO_KEY "glusterfs.pathinfo" +#define GF_XATTR_USER_PATHINFO_KEY "glusterfs.pathinfo" #define GF_INTERNAL_IGNORE_DEEM_STATFS "ignore-deem-statfs" #define GF_XATTR_IOSTATS_DUMP_KEY "trusted.io-stats-dump" -#define GF_READDIR_SKIP_DIRS "readdir-filter-directories" -#define GF_MDC_LOADED_KEY_NAMES "glusterfs.mdc.loaded.key.names" - -#define BD_XATTR_KEY "user.glusterfs" -#define GF_PREOP_PARENT_KEY "glusterfs.preop.parent.key" -#define GF_PREOP_CHECK_FAILED "glusterfs.preop.check.failed" - -#define XATTR_IS_PATHINFO(x) ((strncmp (x, GF_XATTR_PATHINFO_KEY, \ - strlen (x)) == 0) || \ - (strncmp (x, GF_XATTR_USER_PATHINFO_KEY, \ - strlen (x)) == 0)) -#define XATTR_IS_NODE_UUID(x) (strncmp (x, GF_XATTR_NODE_UUID_KEY, \ - SLEN (GF_XATTR_NODE_UUID_KEY)) == 0) -#define XATTR_IS_NODE_UUID_LIST(x) (strncmp (x, GF_XATTR_LIST_NODE_UUIDS_KEY, \ - SLEN (GF_XATTR_LIST_NODE_UUIDS_KEY)) == 0) -#define XATTR_IS_LOCKINFO(x) (strncmp (x, GF_XATTR_LOCKINFO_KEY, \ - SLEN (GF_XATTR_LOCKINFO_KEY)) == 0) - -#define XATTR_IS_BD(x) (strncmp (x, BD_XATTR_KEY, SLEN (BD_XATTR_KEY)) == 0) - -#define GF_XATTR_LINKINFO_KEY "trusted.distribute.linkinfo" -#define GFID_XATTR_KEY "trusted.gfid" -#define PGFID_XATTR_KEY_PREFIX "trusted.pgfid." -#define GFID2PATH_VIRT_XATTR_KEY "glusterfs.gfidtopath" -#define GFID2PATH_XATTR_KEY_PREFIX "trusted.gfid2path." +#define GF_READDIR_SKIP_DIRS "readdir-filter-directories" +#define GF_MDC_LOADED_KEY_NAMES "glusterfs.mdc.loaded.key.names" + +#define BD_XATTR_KEY "user.glusterfs" +#define GF_PREOP_PARENT_KEY "glusterfs.preop.parent.key" +#define GF_PREOP_CHECK_FAILED "glusterfs.preop.check.failed" + +#define XATTR_IS_PATHINFO(x) \ + ((strncmp(x, GF_XATTR_PATHINFO_KEY, strlen(x)) == 0) || \ + (strncmp(x, GF_XATTR_USER_PATHINFO_KEY, strlen(x)) == 0)) +#define XATTR_IS_NODE_UUID(x) \ + (strncmp(x, GF_XATTR_NODE_UUID_KEY, SLEN(GF_XATTR_NODE_UUID_KEY)) == 0) +#define XATTR_IS_NODE_UUID_LIST(x) \ + (strncmp(x, GF_XATTR_LIST_NODE_UUIDS_KEY, \ + SLEN(GF_XATTR_LIST_NODE_UUIDS_KEY)) == 0) +#define XATTR_IS_LOCKINFO(x) \ + (strncmp(x, GF_XATTR_LOCKINFO_KEY, SLEN(GF_XATTR_LOCKINFO_KEY)) == 0) + +#define XATTR_IS_BD(x) (strncmp(x, BD_XATTR_KEY, SLEN(BD_XATTR_KEY)) == 0) + +#define GF_XATTR_LINKINFO_KEY "trusted.distribute.linkinfo" +#define GFID_XATTR_KEY "trusted.gfid" +#define PGFID_XATTR_KEY_PREFIX "trusted.pgfid." +#define GFID2PATH_VIRT_XATTR_KEY "glusterfs.gfidtopath" +#define GFID2PATH_XATTR_KEY_PREFIX "trusted.gfid2path." #define GFID2PATH_XATTR_KEY_PREFIX_LENGTH 18 -#define VIRTUAL_GFID_XATTR_KEY_STR "glusterfs.gfid.string" -#define VIRTUAL_GFID_XATTR_KEY "glusterfs.gfid" -#define GF_XATTR_MDATA_KEY "trusted.glusterfs.mdata" +#define VIRTUAL_GFID_XATTR_KEY_STR "glusterfs.gfid.string" +#define VIRTUAL_GFID_XATTR_KEY "glusterfs.gfid" +#define GF_XATTR_MDATA_KEY "trusted.glusterfs.mdata" #define UUID_CANONICAL_FORM_LEN 36 #define GET_ANCESTRY_PATH_KEY "glusterfs.ancestry.path" #define GET_ANCESTRY_DENTRY_KEY "glusterfs.ancestry.dentry" -#define BITROT_DEFAULT_CURRENT_VERSION (unsigned long)1 -#define BITROT_DEFAULT_SIGNING_VERSION (unsigned long)0 +#define BITROT_DEFAULT_CURRENT_VERSION (unsigned long)1 +#define BITROT_DEFAULT_SIGNING_VERSION (unsigned long)0 /* on-disk object signature keys */ -#define BITROT_OBJECT_BAD_KEY "trusted.bit-rot.bad-file" -#define BITROT_CURRENT_VERSION_KEY "trusted.bit-rot.version" -#define BITROT_SIGNING_VERSION_KEY "trusted.bit-rot.signature" +#define BITROT_OBJECT_BAD_KEY "trusted.bit-rot.bad-file" +#define BITROT_CURRENT_VERSION_KEY "trusted.bit-rot.version" +#define BITROT_SIGNING_VERSION_KEY "trusted.bit-rot.signature" /* globally usable bad file marker */ -#define GLUSTERFS_BAD_INODE "glusterfs.bad-inode" +#define GLUSTERFS_BAD_INODE "glusterfs.bad-inode" /* on-disk size of signing xattr (not the signature itself) */ -#define BITROT_SIGNING_XATTR_SIZE_KEY "trusted.glusterfs.bit-rot.size" +#define BITROT_SIGNING_XATTR_SIZE_KEY "trusted.glusterfs.bit-rot.size" /* GET/SET object signature */ #define GLUSTERFS_GET_OBJECT_SIGNATURE "trusted.glusterfs.get-signature" #define GLUSTERFS_SET_OBJECT_SIGNATURE "trusted.glusterfs.set-signature" /* operation needs to be durable on-disk */ -#define GLUSTERFS_DURABLE_OP "trusted.glusterfs.durable-op" +#define GLUSTERFS_DURABLE_OP "trusted.glusterfs.durable-op" /* key for version exchange b/w bitrot stub and changelog */ -#define GLUSTERFS_VERSION_XCHG_KEY "glusterfs.version.xchg" +#define GLUSTERFS_VERSION_XCHG_KEY "glusterfs.version.xchg" -#define GLUSTERFS_INTERNAL_FOP_KEY "glusterfs-internal-fop" +#define GLUSTERFS_INTERNAL_FOP_KEY "glusterfs-internal-fop" /* GlusterFS Internal FOP Indicator flags * (To pass information on the context in which a paritcular @@ -186,7 +186,7 @@ * a scenario where there is a need for such context across translators. * So it cannot be an absolute information on context. */ -#define GF_INTERNAL_CTX_KEY "glusterfs.internal-ctx" +#define GF_INTERNAL_CTX_KEY "glusterfs.internal-ctx" /* * Always append entries to end of the enum, do not delete entries. @@ -194,7 +194,7 @@ * needs to grow beyond this dict_set_flag has to be changed accordingly */ enum gf_internal_fop_indicator { - GF_DHT_HEAL_DIR /* Index 0 in bit array*/ + GF_DHT_HEAL_DIR /* Index 0 in bit array*/ }; /* Todo: @@ -203,8 +203,7 @@ enum gf_internal_fop_indicator { * GLUSTERFS_INTERNAL_FOP_KEY with this flag */ - -#define DHT_CHANGELOG_RENAME_OP_KEY "changelog.rename-op" +#define DHT_CHANGELOG_RENAME_OP_KEY "changelog.rename-op" #define GLUSTERFS_WRITE_IS_APPEND "glusterfs.write-is-append" #define GLUSTERFS_WRITE_UPDATE_ATOMIC "glusterfs.write-update-atomic" @@ -255,79 +254,80 @@ enum gf_internal_fop_indicator { #define GF_GFIDLESS_LOOKUP "gfidless-lookup" /* replace-brick and pump related internal xattrs */ -#define RB_PUMP_CMD_START "glusterfs.pump.start" -#define RB_PUMP_CMD_PAUSE "glusterfs.pump.pause" -#define RB_PUMP_CMD_COMMIT "glusterfs.pump.commit" -#define RB_PUMP_CMD_ABORT "glusterfs.pump.abort" -#define RB_PUMP_CMD_STATUS "glusterfs.pump.status" +#define RB_PUMP_CMD_START "glusterfs.pump.start" +#define RB_PUMP_CMD_PAUSE "glusterfs.pump.pause" +#define RB_PUMP_CMD_COMMIT "glusterfs.pump.commit" +#define RB_PUMP_CMD_ABORT "glusterfs.pump.abort" +#define RB_PUMP_CMD_STATUS "glusterfs.pump.status" #define GLUSTERFS_MARKER_DONT_ACCOUNT_KEY "glusters.marker.dont-account" -#define GLUSTERFS_RDMA_INLINE_THRESHOLD (2048) -#define GLUSTERFS_RDMA_MAX_HEADER_SIZE (228) /* (sizeof (rdma_header_t) \ - + RDMA_MAX_SEGMENTS \ - * sizeof (rdma_read_chunk_t)) - */ +#define GLUSTERFS_RDMA_INLINE_THRESHOLD (2048) +#define GLUSTERFS_RDMA_MAX_HEADER_SIZE \ + (228) /* (sizeof (rdma_header_t) \ + + RDMA_MAX_SEGMENTS \ + * sizeof (rdma_read_chunk_t)) \ + */ -#define GLUSTERFS_RPC_REPLY_SIZE 24 +#define GLUSTERFS_RPC_REPLY_SIZE 24 -#define STARTING_EVENT_THREADS 1 +#define STARTING_EVENT_THREADS 1 -#define DEFAULT_VAR_RUN_DIRECTORY DATADIR "/run/gluster" +#define DEFAULT_VAR_RUN_DIRECTORY DATADIR "/run/gluster" #define DEFAULT_GLUSTERFSD_MISC_DIRETORY DATADIR "/lib/misc/glusterfsd" #ifdef GF_LINUX_HOST_OS #define GLUSTERD_DEFAULT_WORKDIR DATADIR "/lib/glusterd" #else #define GLUSTERD_DEFAULT_WORKDIR DATADIR "/db/glusterd" #endif -#define GF_REPLICATE_TRASH_DIR ".landfill" +#define GF_REPLICATE_TRASH_DIR ".landfill" /* GlusterFS's maximum supported Auxiliary GIDs */ -#define GF_MAX_AUX_GROUPS 65535 +#define GF_MAX_AUX_GROUPS 65535 #define GF_UUID_BUF_SIZE 50 #define GF_UUID_BNAME_BUF_SIZE (320) /* (64 + 256) */ -#define GF_REBALANCE_TID_KEY "rebalance-id" -#define GF_REMOVE_BRICK_TID_KEY "remove-brick-id" -#define GF_TIER_TID_KEY "tier-id" -#define GF_TIER_ENABLED "tier-enabled" +#define GF_REBALANCE_TID_KEY "rebalance-id" +#define GF_REMOVE_BRICK_TID_KEY "remove-brick-id" +#define GF_TIER_TID_KEY "tier-id" +#define GF_TIER_ENABLED "tier-enabled" -#define UUID_CANONICAL_FORM_LEN 36 +#define UUID_CANONICAL_FORM_LEN 36 /* Adding this here instead of any glusterd*.h files as it is also required by * cli */ -#define DEFAULT_GLUSTERD_SOCKFILE DATADIR "/run/glusterd.socket" +#define DEFAULT_GLUSTERD_SOCKFILE DATADIR "/run/glusterd.socket" /* features/marker-quota also needs to have knowledge of link-files so as to * exclude them from accounting. */ -#define DHT_LINKFILE_MODE (S_ISVTX) +#define DHT_LINKFILE_MODE (S_ISVTX) -#define IS_DHT_LINKFILE_MODE(iabuf) ((st_mode_from_ia ((iabuf)->ia_prot, \ - (iabuf)->ia_type) & ~S_IFMT)\ - == DHT_LINKFILE_MODE) +#define IS_DHT_LINKFILE_MODE(iabuf) \ + ((st_mode_from_ia((iabuf)->ia_prot, (iabuf)->ia_type) & ~S_IFMT) == \ + DHT_LINKFILE_MODE) #define DHT_LINKFILE_STR "linkto" #define DHT_COMMITHASH_STR "commithash" -#define DHT_SKIP_NON_LINKTO_UNLINK "unlink-only-if-dht-linkto-file" -#define TIER_SKIP_NON_LINKTO_UNLINK "unlink-only-if-tier-linkto-file" -#define TIER_LINKFILE_GFID "tier-linkfile-gfid" -#define DHT_SKIP_OPEN_FD_UNLINK "dont-unlink-for-open-fd" -#define DHT_IATT_IN_XDATA_KEY "dht-get-iatt-in-xattr" -#define DHT_MODE_IN_XDATA_KEY "dht-get-mode-in-xattr" -#define GET_LINK_COUNT "get-link-count" -#define GF_GET_SIZE "get-size" -#define GF_PRESTAT "virt-gf-prestat" -#define GF_POSTSTAT "virt-gf-poststat" +#define DHT_SKIP_NON_LINKTO_UNLINK "unlink-only-if-dht-linkto-file" +#define TIER_SKIP_NON_LINKTO_UNLINK "unlink-only-if-tier-linkto-file" +#define TIER_LINKFILE_GFID "tier-linkfile-gfid" +#define DHT_SKIP_OPEN_FD_UNLINK "dont-unlink-for-open-fd" +#define DHT_IATT_IN_XDATA_KEY "dht-get-iatt-in-xattr" +#define DHT_MODE_IN_XDATA_KEY "dht-get-mode-in-xattr" +#define GET_LINK_COUNT "get-link-count" +#define GF_GET_SIZE "get-size" +#define GF_PRESTAT "virt-gf-prestat" +#define GF_POSTSTAT "virt-gf-poststat" /*CTR and Marker requires inode dentry link count from posix*/ #define GF_RESPONSE_LINK_COUNT_XDATA "gf_response_link_count" -#define GF_REQUEST_LINK_COUNT_XDATA "gf_request_link_count" +#define GF_REQUEST_LINK_COUNT_XDATA "gf_request_link_count" -#define CTR_ATTACH_TIER_LOOKUP "ctr_attach_tier_lookup" +#define CTR_ATTACH_TIER_LOOKUP "ctr_attach_tier_lookup" -#define CLIENT_CMD_CONNECT "trusted.glusterfs.client-connect" +#define CLIENT_CMD_CONNECT "trusted.glusterfs.client-connect" #define CLIENT_CMD_DISCONNECT "trusted.glusterfs.client-disconnect" #define GF_LOG_LRU_BUFSIZE_DEFAULT 5 @@ -343,22 +343,22 @@ enum gf_internal_fop_indicator { #define GF_LOG_FLUSH_TIMEOUT_MAX_STR "300" #define GF_LOG_LOCALTIME_DEFAULT 0 -#define GF_BACKTRACE_LEN 4096 +#define GF_BACKTRACE_LEN 4096 #define GF_BACKTRACE_FRAME_COUNT 7 -#define GF_LK_ADVISORY 0 /* maps to GLFS_LK_ADVISORY from libgfapi*/ +#define GF_LK_ADVISORY 0 /* maps to GLFS_LK_ADVISORY from libgfapi*/ #define GF_LK_MANDATORY 1 /* maps to GLFS_LK_MANDATORY from libgfapi*/ #define GF_LOCK_MODE "glusterfs.lk.lkmode" -#define GF_CHECK_XATTR_KEY_AND_GOTO(key, cmpkey, errval, lbl) \ - do { \ - if (key && strcmp (key, cmpkey) == 0) { \ - errval = -EINVAL; \ - goto lbl; \ - } \ - } while (0) \ +#define GF_CHECK_XATTR_KEY_AND_GOTO(key, cmpkey, errval, lbl) \ + do { \ + if (key && strcmp(key, cmpkey) == 0) { \ + errval = -EINVAL; \ + goto lbl; \ + } \ + } while (0) -#define GF_CS_OBJECT_SIZE "trusted.glusterfs.cs.object_size" +#define GF_CS_OBJECT_SIZE "trusted.glusterfs.cs.object_size" #define GF_CS_OBJECT_UPLOAD_COMPLETE "trusted.glusterfs.csou.complete" #define GF_CS_OBJECT_REMOTE "trusted.glusterfs.cs.remote" @@ -368,376 +368,370 @@ enum gf_internal_fop_indicator { #define GF_CS_OBJECT_REPAIR "trusted.glusterfs.cs.repair" typedef enum { - GF_CS_LOCAL = 1, - GF_CS_REMOTE = 2, - GF_CS_REPAIR = 4, - GF_CS_DOWNLOADING = 8, - GF_CS_ERROR = 16, + GF_CS_LOCAL = 1, + GF_CS_REMOTE = 2, + GF_CS_REPAIR = 4, + GF_CS_DOWNLOADING = 8, + GF_CS_ERROR = 16, } gf_cs_obj_state; typedef enum { - GF_FOP_PRI_UNSPEC = -1, /* Priority not specified */ - GF_FOP_PRI_HI = 0, /* low latency */ - GF_FOP_PRI_NORMAL, /* normal */ - GF_FOP_PRI_LO, /* bulk */ - GF_FOP_PRI_LEAST, /* least */ - GF_FOP_PRI_MAX, /* Highest */ + GF_FOP_PRI_UNSPEC = -1, /* Priority not specified */ + GF_FOP_PRI_HI = 0, /* low latency */ + GF_FOP_PRI_NORMAL, /* normal */ + GF_FOP_PRI_LO, /* bulk */ + GF_FOP_PRI_LEAST, /* least */ + GF_FOP_PRI_MAX, /* Highest */ } gf_fop_pri_t; typedef enum { - /* The 'component' (xlator / option) is not yet setting the flag */ - GF_UNCLASSIFIED = 0, - /* The 'component' is experimental, should not be recommened - in production mode */ - GF_EXPERIMENTAL, - /* The 'component' is tech preview, ie, it is 'mostly' working as - expected, but can have some of the corner cases, which is not - handled. */ - GF_TECH_PREVIEW, - /* The 'component' is good to run. Has good enough test and - documentation coverage. */ - GF_MAINTAINED, - /* The component is: - - no more a focus - - no more solving a valid use case - - no more maintained, no volunteers to maintain - - there is 'maintained' or 'tech-preview' feature, - which does the same thing, better. - */ - GF_DEPRECATED, - /* The 'component' is no more 'built'. */ - GF_OBSOLETE, - /* The 'component' exist for Documentation purposes. - No real usecase */ - GF_DOCUMENT_PURPOSE, + /* The 'component' (xlator / option) is not yet setting the flag */ + GF_UNCLASSIFIED = 0, + /* The 'component' is experimental, should not be recommened + in production mode */ + GF_EXPERIMENTAL, + /* The 'component' is tech preview, ie, it is 'mostly' working as + expected, but can have some of the corner cases, which is not + handled. */ + GF_TECH_PREVIEW, + /* The 'component' is good to run. Has good enough test and + documentation coverage. */ + GF_MAINTAINED, + /* The component is: + - no more a focus + - no more solving a valid use case + - no more maintained, no volunteers to maintain + - there is 'maintained' or 'tech-preview' feature, + which does the same thing, better. + */ + GF_DEPRECATED, + /* The 'component' is no more 'built'. */ + GF_OBSOLETE, + /* The 'component' exist for Documentation purposes. + No real usecase */ + GF_DOCUMENT_PURPOSE, } gf_category_t; +static const char *const FOP_PRI_STRINGS[] = {"HIGH", "NORMAL", "LOW", "LEAST"}; -static const char * const FOP_PRI_STRINGS[] = { - "HIGH", - "NORMAL", - "LOW", - "LEAST" -}; - -static inline const char *fop_pri_to_string (gf_fop_pri_t pri) +static inline const char * +fop_pri_to_string(gf_fop_pri_t pri) { - if (pri < 0) - return "UNSPEC"; + if (pri < 0) + return "UNSPEC"; - if (pri >= GF_FOP_PRI_MAX) - return "INVALID"; + if (pri >= GF_FOP_PRI_MAX) + return "INVALID"; - return FOP_PRI_STRINGS[pri]; + return FOP_PRI_STRINGS[pri]; } -const char *fop_enum_to_pri_string (glusterfs_fop_t fop); +const char * +fop_enum_to_pri_string(glusterfs_fop_t fop); #define GF_SET_IF_NOT_PRESENT 0x1 /* default behaviour */ -#define GF_SET_OVERWRITE 0x2 /* Overwrite with the buf given */ -#define GF_SET_DIR_ONLY 0x4 -#define GF_SET_EPOCH_TIME 0x8 /* used by afr dir lookup selfheal */ -#define GF_AUXILLARY_PARGFID 0xd /* RIO dummy parent gfid */ +#define GF_SET_OVERWRITE 0x2 /* Overwrite with the buf given */ +#define GF_SET_DIR_ONLY 0x4 +#define GF_SET_EPOCH_TIME 0x8 /* used by afr dir lookup selfheal */ +#define GF_AUXILLARY_PARGFID 0xd /* RIO dummy parent gfid */ /* key value which quick read uses to get small files in lookup cbk */ #define GF_CONTENT_KEY "glusterfs.content" struct _xlator_cmdline_option { - struct list_head cmd_args; - char *volume; - char *key; - char *value; + struct list_head cmd_args; + char *volume; + char *key; + char *value; }; typedef struct _xlator_cmdline_option xlator_cmdline_option_t; struct _server_cmdline { - struct list_head list; - char *volfile_server; - char *transport; - int port; + struct list_head list; + char *volfile_server; + char *transport; + int port; }; typedef struct _server_cmdline server_cmdline_t; -#define GF_OPTION_ENABLE _gf_true -#define GF_OPTION_DISABLE _gf_false +#define GF_OPTION_ENABLE _gf_true +#define GF_OPTION_DISABLE _gf_false #define GF_OPTION_DEFERRED 2 struct _cmd_args { - /* basic options */ - char *volfile_server; - server_cmdline_t *curr_server; - /* List of backup volfile servers, including original */ - struct list_head volfile_servers; - char *volfile; - char *log_server; - gf_loglevel_t log_level; - char *log_file; - char *log_ident; - gf_log_logger_t logger; - gf_log_format_t log_format; - uint32_t log_buf_size; - uint32_t log_flush_timeout; - int32_t max_connect_attempts; - char *print_exports; - char *print_netgroups; - int print_xlatordir; - int print_statedumpdir; - int print_logdir; - int print_libexecdir; - /* advanced options */ - uint32_t volfile_server_port; - char *volfile_server_transport; - uint32_t log_server_port; - char *pid_file; - char *sock_file; - int no_daemon_mode; - char *run_id; - int debug_mode; - int read_only; - int acl; - int selinux; - int capability; - int enable_ino32; - int worm; - int mac_compat; - int fopen_keep_cache; - int gid_timeout; - char gid_timeout_set; - int aux_gfid_mount; - - /* need a process wide timer-wheel? */ - int global_timer_wheel; - - /* list of xlator_option_t */ - struct list_head xlator_options; - - /* fuse options */ - int fuse_direct_io_mode; - char *use_readdirp; - int no_root_squash; - int volfile_check; - double fuse_entry_timeout; - double fuse_negative_timeout; - double fuse_attribute_timeout; - char *volume_name; - int fuse_nodev; - int fuse_nosuid; - char *dump_fuse; - pid_t client_pid; - int client_pid_set; - unsigned uid_map_root; - int background_qlen; - int congestion_threshold; - char *fuse_mountopts; - int mem_acct; - int resolve_gids; - - /* key args */ - char *mount_point; - char *volfile_id; - - /* required for portmap */ - int brick_port; - char *brick_name; - int brick_port2; - - /* Should management connections use SSL? */ - int secure_mgmt; - - /* Linux-only OOM killer adjustment */ + /* basic options */ + char *volfile_server; + server_cmdline_t *curr_server; + /* List of backup volfile servers, including original */ + struct list_head volfile_servers; + char *volfile; + char *log_server; + gf_loglevel_t log_level; + char *log_file; + char *log_ident; + gf_log_logger_t logger; + gf_log_format_t log_format; + uint32_t log_buf_size; + uint32_t log_flush_timeout; + int32_t max_connect_attempts; + char *print_exports; + char *print_netgroups; + int print_xlatordir; + int print_statedumpdir; + int print_logdir; + int print_libexecdir; + /* advanced options */ + uint32_t volfile_server_port; + char *volfile_server_transport; + uint32_t log_server_port; + char *pid_file; + char *sock_file; + int no_daemon_mode; + char *run_id; + int debug_mode; + int read_only; + int acl; + int selinux; + int capability; + int enable_ino32; + int worm; + int mac_compat; + int fopen_keep_cache; + int gid_timeout; + char gid_timeout_set; + int aux_gfid_mount; + + /* need a process wide timer-wheel? */ + int global_timer_wheel; + + /* list of xlator_option_t */ + struct list_head xlator_options; + + /* fuse options */ + int fuse_direct_io_mode; + char *use_readdirp; + int no_root_squash; + int volfile_check; + double fuse_entry_timeout; + double fuse_negative_timeout; + double fuse_attribute_timeout; + char *volume_name; + int fuse_nodev; + int fuse_nosuid; + char *dump_fuse; + pid_t client_pid; + int client_pid_set; + unsigned uid_map_root; + int background_qlen; + int congestion_threshold; + char *fuse_mountopts; + int mem_acct; + int resolve_gids; + + /* key args */ + char *mount_point; + char *volfile_id; + + /* required for portmap */ + int brick_port; + char *brick_name; + int brick_port2; + + /* Should management connections use SSL? */ + int secure_mgmt; + + /* Linux-only OOM killer adjustment */ #ifdef GF_LINUX_HOST_OS - char *oom_score_adj; + char *oom_score_adj; #endif - /* Run this process with valgrind? Might want to prevent calling - * functions that prevent valgrind from working correctly, like - * dlclose(). */ - int valgrind; - int localtime_logging; + /* Run this process with valgrind? Might want to prevent calling + * functions that prevent valgrind from working correctly, like + * dlclose(). */ + int valgrind; + int localtime_logging; - /* For the subdir mount */ - char *subdir_mount; + /* For the subdir mount */ + char *subdir_mount; - char *process_name; - char *event_history; - int thin_client; - uint32_t reader_thread_count; + char *process_name; + char *event_history; + int thin_client; + uint32_t reader_thread_count; - /* FUSE writeback cache support */ - int kernel_writeback_cache; - uint32_t attr_times_granularity; + /* FUSE writeback cache support */ + int kernel_writeback_cache; + uint32_t attr_times_granularity; }; typedef struct _cmd_args cmd_args_t; - struct _glusterfs_graph { - struct list_head list; - char graph_uuid[128]; - struct timeval dob; - void *first; - void *top; /* selected by -n */ - uint32_t leaf_count; - int xl_count; - int id; /* Used in logging */ - int used; /* Should be set when fuse gets - first CHILD_UP */ - uint32_t volfile_checksum; + struct list_head list; + char graph_uuid[128]; + struct timeval dob; + void *first; + void *top; /* selected by -n */ + uint32_t leaf_count; + int xl_count; + int id; /* Used in logging */ + int used; /* Should be set when fuse gets + first CHILD_UP */ + uint32_t volfile_checksum; }; typedef struct _glusterfs_graph glusterfs_graph_t; - -typedef int32_t (*glusterfsd_mgmt_event_notify_fn_t) (int32_t event, void *data, - ...); +typedef int32_t (*glusterfsd_mgmt_event_notify_fn_t)(int32_t event, void *data, + ...); typedef enum { - MGMT_SSL_NEVER = 0, - MGMT_SSL_COPY_IO, - MGMT_SSL_ALWAYS + MGMT_SSL_NEVER = 0, + MGMT_SSL_COPY_IO, + MGMT_SSL_ALWAYS } mgmt_ssl_t; struct tvec_base; /* reference counting for the global (per ctx) timer-wheel */ struct gf_ctx_tw { - GF_REF_DECL; - struct tvec_base *timer_wheel; /* global timer-wheel instance */ + GF_REF_DECL; + struct tvec_base *timer_wheel; /* global timer-wheel instance */ }; struct _glusterfs_ctx { - cmd_args_t cmd_args; - char *process_uuid; - FILE *pidfp; - char fin; - void *timer; - void *ib; - struct call_pool *pool; - void *event_pool; - void *iobuf_pool; - void *logbuf_pool; - gf_lock_t lock; - size_t page_size; - - /* one per volfile parse */ - struct list_head graphs; - - /* the latest graph in use */ - glusterfs_graph_t *active; - - /* fuse or nfs (but not protocol/server) */ - void *master; - - /* xlator implementing MOPs for centralized logging, volfile server */ - void *mgmt; - - /* listener of the commands from glusterd */ - void *listener; - - /* toggle switch for latency measurement */ - unsigned char measure_latency; - pthread_t sigwaiter; - char *cmdlinestr; - struct mem_pool *stub_mem_pool; - unsigned char cleanup_started; - int graph_id; /* Incremented per graph, value should - indicate how many times the graph has - got changed */ - pid_t mnt_pid; /* pid of the mount agent */ - int process_mode; /*mode in which process is runninng*/ - struct syncenv *env; /* The env pointer to the synctasks */ - - struct list_head mempool_list; /* used to keep a global list of - mempools, used to log details of - mempool in statedump */ - char *statedump_path; - - struct mem_pool *dict_pool; - struct mem_pool *dict_pair_pool; - struct mem_pool *dict_data_pool; - - glusterfsd_mgmt_event_notify_fn_t notify; /* Used for xlators to make - call to fsd-mgmt */ - gf_log_handle_t log; /* all logging related variables */ - - int mem_acct_enable; - - int daemon_pipe[2]; - - struct clienttable *clienttable; - - /* - * Should management connections use SSL? This is the only place we - * can put it where both daemon-startup and socket code will see it. - * - * Why is it an int? Because we're included before common-utils.h, - * which defines gf_boolean_t (what we really want). It doesn't make - * any sense, but it's not worth turning the codebase upside-down to - * fix it. Thus, an int. - */ - int secure_mgmt; - - /* The option is use to set cert_depth while management connection - use SSL - */ - int ssl_cert_depth; - - /* - * Should *our* server/inbound connections use SSL? This is only true - * if we're glusterd and secure_mgmt is set, or if we're glusterfsd - * and SSL is set on the I/O path. It should never be set e.g. for - * NFS. - */ - mgmt_ssl_t secure_srvr; - /* Buffer to 'save' backtrace even under OOM-kill like situations*/ - char btbuf[GF_BACKTRACE_LEN]; - - pthread_mutex_t notify_lock; - pthread_cond_t notify_cond; - int notifying; - - struct gf_ctx_tw *tw; /* refcounted timer_wheel */ - - gf_lock_t volfile_lock; - - /* configuration related elements, which gets changed - from global xlator */ - struct { - char *metrics_dumppath; - } config; - - struct { - gf_atomic_t max_dict_pairs; - gf_atomic_t total_pairs_used; - gf_atomic_t total_dicts_used; - } stats; - - struct list_head volfile_list; + cmd_args_t cmd_args; + char *process_uuid; + FILE *pidfp; + char fin; + void *timer; + void *ib; + struct call_pool *pool; + void *event_pool; + void *iobuf_pool; + void *logbuf_pool; + gf_lock_t lock; + size_t page_size; + + /* one per volfile parse */ + struct list_head graphs; + + /* the latest graph in use */ + glusterfs_graph_t *active; + + /* fuse or nfs (but not protocol/server) */ + void *master; + + /* xlator implementing MOPs for centralized logging, volfile server */ + void *mgmt; + + /* listener of the commands from glusterd */ + void *listener; + + /* toggle switch for latency measurement */ + unsigned char measure_latency; + pthread_t sigwaiter; + char *cmdlinestr; + struct mem_pool *stub_mem_pool; + unsigned char cleanup_started; + int graph_id; /* Incremented per graph, value should + indicate how many times the graph has + got changed */ + pid_t mnt_pid; /* pid of the mount agent */ + int process_mode; /*mode in which process is runninng*/ + struct syncenv *env; /* The env pointer to the synctasks */ + + struct list_head mempool_list; /* used to keep a global list of + mempools, used to log details of + mempool in statedump */ + char *statedump_path; + + struct mem_pool *dict_pool; + struct mem_pool *dict_pair_pool; + struct mem_pool *dict_data_pool; + + glusterfsd_mgmt_event_notify_fn_t notify; /* Used for xlators to make + call to fsd-mgmt */ + gf_log_handle_t log; /* all logging related variables */ + + int mem_acct_enable; + + int daemon_pipe[2]; + + struct clienttable *clienttable; + + /* + * Should management connections use SSL? This is the only place we + * can put it where both daemon-startup and socket code will see it. + * + * Why is it an int? Because we're included before common-utils.h, + * which defines gf_boolean_t (what we really want). It doesn't make + * any sense, but it's not worth turning the codebase upside-down to + * fix it. Thus, an int. + */ + int secure_mgmt; + + /* The option is use to set cert_depth while management connection + use SSL + */ + int ssl_cert_depth; + + /* + * Should *our* server/inbound connections use SSL? This is only true + * if we're glusterd and secure_mgmt is set, or if we're glusterfsd + * and SSL is set on the I/O path. It should never be set e.g. for + * NFS. + */ + mgmt_ssl_t secure_srvr; + /* Buffer to 'save' backtrace even under OOM-kill like situations*/ + char btbuf[GF_BACKTRACE_LEN]; + + pthread_mutex_t notify_lock; + pthread_cond_t notify_cond; + int notifying; + + struct gf_ctx_tw *tw; /* refcounted timer_wheel */ + + gf_lock_t volfile_lock; + + /* configuration related elements, which gets changed + from global xlator */ + struct { + char *metrics_dumppath; + } config; + + struct { + gf_atomic_t max_dict_pairs; + gf_atomic_t total_pairs_used; + gf_atomic_t total_dicts_used; + } stats; + + struct list_head volfile_list; }; typedef struct _glusterfs_ctx glusterfs_ctx_t; typedef struct { - char volfile_checksum[SHA256_DIGEST_LENGTH]; - char vol_id[NAME_MAX+1]; - struct list_head volfile_list; + char volfile_checksum[SHA256_DIGEST_LENGTH]; + char vol_id[NAME_MAX + 1]; + struct list_head volfile_list; } gf_volfile_t; - -glusterfs_ctx_t *glusterfs_ctx_new (void); +glusterfs_ctx_t * +glusterfs_ctx_new(void); struct gf_flock { - short l_type; - short l_whence; - off_t l_start; - off_t l_len; - pid_t l_pid; - gf_lkowner_t l_owner; + short l_type; + short l_whence; + off_t l_start; + off_t l_len; + pid_t l_pid; + gf_lkowner_t l_owner; }; typedef struct lock_migration_info { - struct list_head list; - struct gf_flock flock; - char *client_uid; - uint32_t lk_flags; + struct list_head list; + struct gf_flock flock; + char *client_uid; + uint32_t lk_flags; } lock_migration_info_t; #define GF_MUST_CHECK __attribute__((warn_unused_result)) @@ -766,26 +760,39 @@ typedef struct lock_migration_info { * done using secure connections for all tests without change elsewhere). * */ -#define SECURE_ACCESS_FILE GLUSTERD_DEFAULT_WORKDIR "/secure-access" - -int glusterfs_graph_prepare (glusterfs_graph_t *graph, glusterfs_ctx_t *ctx, - char *volume_name); -int glusterfs_graph_destroy_residual (glusterfs_graph_t *graph); -int glusterfs_graph_deactivate (glusterfs_graph_t *graph); -int glusterfs_graph_destroy (glusterfs_graph_t *graph); -int glusterfs_get_leaf_count (glusterfs_graph_t *graph); -int glusterfs_graph_activate (glusterfs_graph_t *graph, glusterfs_ctx_t *ctx); -glusterfs_graph_t *glusterfs_graph_construct (FILE *fp); -int glusterfs_graph_init (glusterfs_graph_t *graph); -glusterfs_graph_t *glusterfs_graph_new (void); -int glusterfs_graph_reconfigure (glusterfs_graph_t *oldgraph, - glusterfs_graph_t *newgraph); -int glusterfs_graph_attach (glusterfs_graph_t *orig_graph, char *path, - glusterfs_graph_t **newgraph); -int glusterfs_graph_parent_up (glusterfs_graph_t *graph); +#define SECURE_ACCESS_FILE GLUSTERD_DEFAULT_WORKDIR "/secure-access" + +int +glusterfs_graph_prepare(glusterfs_graph_t *graph, glusterfs_ctx_t *ctx, + char *volume_name); +int +glusterfs_graph_destroy_residual(glusterfs_graph_t *graph); +int +glusterfs_graph_deactivate(glusterfs_graph_t *graph); +int +glusterfs_graph_destroy(glusterfs_graph_t *graph); +int +glusterfs_get_leaf_count(glusterfs_graph_t *graph); +int +glusterfs_graph_activate(glusterfs_graph_t *graph, glusterfs_ctx_t *ctx); +glusterfs_graph_t * +glusterfs_graph_construct(FILE *fp); +int +glusterfs_graph_init(glusterfs_graph_t *graph); +glusterfs_graph_t * +glusterfs_graph_new(void); +int +glusterfs_graph_reconfigure(glusterfs_graph_t *oldgraph, + glusterfs_graph_t *newgraph); +int +glusterfs_graph_attach(glusterfs_graph_t *orig_graph, char *path, + glusterfs_graph_t **newgraph); +int +glusterfs_graph_parent_up(glusterfs_graph_t *graph); void -gf_free_mig_locks (lock_migration_info_t *locks); +gf_free_mig_locks(lock_migration_info_t *locks); -int glusterfs_read_secure_access_file (void); +int +glusterfs_read_secure_access_file(void); #endif /* _GLUSTERFS_H */ diff --git a/libglusterfs/src/graph-utils.h b/libglusterfs/src/graph-utils.h index 207664fdb1f..c0e87268c5c 100644 --- a/libglusterfs/src/graph-utils.h +++ b/libglusterfs/src/graph-utils.h @@ -11,10 +11,14 @@ #ifndef _GRAPH_H_ #define _GRAPH_H_ -int glusterfs_graph_print_file (FILE *file, glusterfs_graph_t *graph); +int +glusterfs_graph_print_file(FILE *file, glusterfs_graph_t *graph); -char *glusterfs_graph_print_buf (glusterfs_graph_t *graph); +char * +glusterfs_graph_print_buf(glusterfs_graph_t *graph); -int glusterfs_xlator_link (xlator_t *pxl, xlator_t *cxl); -void glusterfs_graph_set_first (glusterfs_graph_t *graph, xlator_t *xl); +int +glusterfs_xlator_link(xlator_t *pxl, xlator_t *cxl); +void +glusterfs_graph_set_first(glusterfs_graph_t *graph, xlator_t *xl); #endif diff --git a/libglusterfs/src/hashfn.h b/libglusterfs/src/hashfn.h index fed464e11cd..a4cb33f072a 100644 --- a/libglusterfs/src/hashfn.h +++ b/libglusterfs/src/hashfn.h @@ -14,9 +14,12 @@ #include <sys/types.h> #include <stdint.h> -uint32_t SuperFastHash (const char * data, int32_t len); +uint32_t +SuperFastHash(const char *data, int32_t len); -uint32_t gf_dm_hashfn (const char *msg, int len); +uint32_t +gf_dm_hashfn(const char *msg, int len); -uint32_t ReallySimpleHash (char *path, int len); +uint32_t +ReallySimpleHash(char *path, int len); #endif /* __HASHFN_H__ */ diff --git a/libglusterfs/src/iatt.h b/libglusterfs/src/iatt.h index 500ccb01324..db366472970 100644 --- a/libglusterfs/src/iatt.h +++ b/libglusterfs/src/iatt.h @@ -8,7 +8,6 @@ cases as published by the Free Software Foundation. */ - #ifndef _IATT_H #define _IATT_H @@ -23,90 +22,90 @@ #include "compat-uuid.h" typedef enum { - IA_INVAL = 0, - IA_IFREG, - IA_IFDIR, - IA_IFLNK, - IA_IFBLK, - IA_IFCHR, - IA_IFIFO, - IA_IFSOCK + IA_INVAL = 0, + IA_IFREG, + IA_IFDIR, + IA_IFLNK, + IA_IFBLK, + IA_IFCHR, + IA_IFIFO, + IA_IFSOCK } ia_type_t; typedef struct { - uint8_t suid:1; - uint8_t sgid:1; - uint8_t sticky:1; - struct { - uint8_t read:1; - uint8_t write:1; - uint8_t exec:1; - } owner, group, other; + uint8_t suid : 1; + uint8_t sgid : 1; + uint8_t sticky : 1; + struct { + uint8_t read : 1; + uint8_t write : 1; + uint8_t exec : 1; + } owner, group, other; } ia_prot_t; struct iatt { - uint64_t ia_flags; - uint64_t ia_ino; /* inode number */ - uint64_t ia_dev; /* backing device ID */ - uint64_t ia_rdev; /* device ID (if special file) */ - uint64_t ia_size; /* file size in bytes */ - uint32_t ia_nlink; /* Link count */ - uint32_t ia_uid; /* user ID of owner */ - uint32_t ia_gid; /* group ID of owner */ - uint32_t ia_blksize; /* blocksize for filesystem I/O */ - uint64_t ia_blocks; /* number of 512B blocks allocated */ - int64_t ia_atime; /* last access time */ - int64_t ia_mtime; /* last modification time */ - int64_t ia_ctime; /* last status change time */ - int64_t ia_btime; /* creation time. Fill using statx */ - uint32_t ia_atime_nsec; - uint32_t ia_mtime_nsec; - uint32_t ia_ctime_nsec; - uint32_t ia_btime_nsec; - uint64_t ia_attributes; /* chattr related:compressed, immutable, - * append only, encrypted etc.*/ - uint64_t ia_attributes_mask; /* Mask for the attributes */ - - uuid_t ia_gfid; - ia_type_t ia_type; /* type of file */ - ia_prot_t ia_prot; /* protection */ + uint64_t ia_flags; + uint64_t ia_ino; /* inode number */ + uint64_t ia_dev; /* backing device ID */ + uint64_t ia_rdev; /* device ID (if special file) */ + uint64_t ia_size; /* file size in bytes */ + uint32_t ia_nlink; /* Link count */ + uint32_t ia_uid; /* user ID of owner */ + uint32_t ia_gid; /* group ID of owner */ + uint32_t ia_blksize; /* blocksize for filesystem I/O */ + uint64_t ia_blocks; /* number of 512B blocks allocated */ + int64_t ia_atime; /* last access time */ + int64_t ia_mtime; /* last modification time */ + int64_t ia_ctime; /* last status change time */ + int64_t ia_btime; /* creation time. Fill using statx */ + uint32_t ia_atime_nsec; + uint32_t ia_mtime_nsec; + uint32_t ia_ctime_nsec; + uint32_t ia_btime_nsec; + uint64_t ia_attributes; /* chattr related:compressed, immutable, + * append only, encrypted etc.*/ + uint64_t ia_attributes_mask; /* Mask for the attributes */ + + uuid_t ia_gfid; + ia_type_t ia_type; /* type of file */ + ia_prot_t ia_prot; /* protection */ }; struct old_iatt { - uint64_t ia_ino; /* inode number */ - uuid_t ia_gfid; - uint64_t ia_dev; /* backing device ID */ - ia_type_t ia_type; /* type of file */ - ia_prot_t ia_prot; /* protection */ - uint32_t ia_nlink; /* Link count */ - uint32_t ia_uid; /* user ID of owner */ - uint32_t ia_gid; /* group ID of owner */ - uint64_t ia_rdev; /* device ID (if special file) */ - uint64_t ia_size; /* file size in bytes */ - uint32_t ia_blksize; /* blocksize for filesystem I/O */ - uint64_t ia_blocks; /* number of 512B blocks allocated */ - uint32_t ia_atime; /* last access time */ - uint32_t ia_atime_nsec; - uint32_t ia_mtime; /* last modification time */ - uint32_t ia_mtime_nsec; - uint32_t ia_ctime; /* last status change time */ - uint32_t ia_ctime_nsec; + uint64_t ia_ino; /* inode number */ + uuid_t ia_gfid; + uint64_t ia_dev; /* backing device ID */ + ia_type_t ia_type; /* type of file */ + ia_prot_t ia_prot; /* protection */ + uint32_t ia_nlink; /* Link count */ + uint32_t ia_uid; /* user ID of owner */ + uint32_t ia_gid; /* group ID of owner */ + uint64_t ia_rdev; /* device ID (if special file) */ + uint64_t ia_size; /* file size in bytes */ + uint32_t ia_blksize; /* blocksize for filesystem I/O */ + uint64_t ia_blocks; /* number of 512B blocks allocated */ + uint32_t ia_atime; /* last access time */ + uint32_t ia_atime_nsec; + uint32_t ia_mtime; /* last modification time */ + uint32_t ia_mtime_nsec; + uint32_t ia_ctime; /* last status change time */ + uint32_t ia_ctime_nsec; }; /* 64-bit mask for valid members in struct iatt. */ -#define IATT_TYPE 0x0000000000000001U -#define IATT_MODE 0x0000000000000002U -#define IATT_NLINK 0x0000000000000004U -#define IATT_UID 0x0000000000000008U -#define IATT_GID 0x0000000000000010U -#define IATT_ATIME 0x0000000000000020U -#define IATT_MTIME 0x0000000000000040U -#define IATT_CTIME 0x0000000000000080U -#define IATT_INO 0x0000000000000100U -#define IATT_SIZE 0x0000000000000200U -#define IATT_BLOCKS 0x0000000000000400U -#define IATT_BTIME 0x0000000000000800U -#define IATT_GFID 0x0000000000001000U +#define IATT_TYPE 0x0000000000000001U +#define IATT_MODE 0x0000000000000002U +#define IATT_NLINK 0x0000000000000004U +#define IATT_UID 0x0000000000000008U +#define IATT_GID 0x0000000000000010U +#define IATT_ATIME 0x0000000000000020U +#define IATT_MTIME 0x0000000000000040U +#define IATT_CTIME 0x0000000000000080U +#define IATT_INO 0x0000000000000100U +#define IATT_SIZE 0x0000000000000200U +#define IATT_BLOCKS 0x0000000000000400U +#define IATT_BTIME 0x0000000000000800U +#define IATT_GFID 0x0000000000001000U /* Macros for checking validity of struct iatt members.*/ #define IATT_TYPE_VALID(iaflags) (iaflags & IATT_TYPE) @@ -132,339 +131,330 @@ struct old_iatt { #define IA_ISSOCK(t) (t == IA_IFSOCK) #define IA_ISINVAL(t) (t == IA_INVAL) -#define IA_PROT_RUSR(prot) ((prot).owner.read == 1) -#define IA_PROT_WUSR(prot) ((prot).owner.write == 1) -#define IA_PROT_XUSR(prot) ((prot).owner.exec == 1) +#define IA_PROT_RUSR(prot) ((prot).owner.read == 1) +#define IA_PROT_WUSR(prot) ((prot).owner.write == 1) +#define IA_PROT_XUSR(prot) ((prot).owner.exec == 1) -#define IA_PROT_RGRP(prot) ((prot).group.read == 1) -#define IA_PROT_WGRP(prot) ((prot).group.write == 1) -#define IA_PROT_XGRP(prot) ((prot).group.exec == 1) +#define IA_PROT_RGRP(prot) ((prot).group.read == 1) +#define IA_PROT_WGRP(prot) ((prot).group.write == 1) +#define IA_PROT_XGRP(prot) ((prot).group.exec == 1) -#define IA_PROT_ROTH(prot) ((prot).other.read == 1) -#define IA_PROT_WOTH(prot) ((prot).other.write == 1) -#define IA_PROT_XOTH(prot) ((prot).other.exec == 1) +#define IA_PROT_ROTH(prot) ((prot).other.read == 1) +#define IA_PROT_WOTH(prot) ((prot).other.write == 1) +#define IA_PROT_XOTH(prot) ((prot).other.exec == 1) -#define IA_PROT_SUID(prot) ((prot).suid == 1) -#define IA_PROT_SGID(prot) ((prot).sgid == 1) -#define IA_PROT_STCKY(prot) ((prot).sticky == 1) +#define IA_PROT_SUID(prot) ((prot).suid == 1) +#define IA_PROT_SGID(prot) ((prot).sgid == 1) +#define IA_PROT_STCKY(prot) ((prot).sticky == 1) -#define IA_FILE_OR_DIR(t) (IA_ISREG(t) || IA_ISDIR(t)) +#define IA_FILE_OR_DIR(t) (IA_ISREG(t) || IA_ISDIR(t)) static inline uint32_t -ia_major (uint64_t ia_dev) +ia_major(uint64_t ia_dev) { - return (uint32_t) (ia_dev >> 32); + return (uint32_t)(ia_dev >> 32); } - static inline uint32_t -ia_minor (uint64_t ia_dev) +ia_minor(uint64_t ia_dev) { - return (uint32_t) (ia_dev & 0xffffffff); + return (uint32_t)(ia_dev & 0xffffffff); } - static inline uint64_t -ia_makedev (uint32_t ia_maj, uint32_t ia_min) +ia_makedev(uint32_t ia_maj, uint32_t ia_min) { - return ((((uint64_t) ia_maj) << 32) | ia_min); + return ((((uint64_t)ia_maj) << 32) | ia_min); } - static inline ia_prot_t -ia_prot_from_st_mode (mode_t mode) +ia_prot_from_st_mode(mode_t mode) { - ia_prot_t ia_prot = {0, }; - - if (mode & S_ISUID) - ia_prot.suid = 1; - if (mode & S_ISGID) - ia_prot.sgid = 1; - if (mode & S_ISVTX) - ia_prot.sticky = 1; - - if (mode & S_IRUSR) - ia_prot.owner.read = 1; - if (mode & S_IWUSR) - ia_prot.owner.write = 1; - if (mode & S_IXUSR) - ia_prot.owner.exec = 1; - - if (mode & S_IRGRP) - ia_prot.group.read = 1; - if (mode & S_IWGRP) - ia_prot.group.write = 1; - if (mode & S_IXGRP) - ia_prot.group.exec = 1; - - if (mode & S_IROTH) - ia_prot.other.read = 1; - if (mode & S_IWOTH) - ia_prot.other.write = 1; - if (mode & S_IXOTH) - ia_prot.other.exec = 1; - - return ia_prot; + ia_prot_t ia_prot = { + 0, + }; + + if (mode & S_ISUID) + ia_prot.suid = 1; + if (mode & S_ISGID) + ia_prot.sgid = 1; + if (mode & S_ISVTX) + ia_prot.sticky = 1; + + if (mode & S_IRUSR) + ia_prot.owner.read = 1; + if (mode & S_IWUSR) + ia_prot.owner.write = 1; + if (mode & S_IXUSR) + ia_prot.owner.exec = 1; + + if (mode & S_IRGRP) + ia_prot.group.read = 1; + if (mode & S_IWGRP) + ia_prot.group.write = 1; + if (mode & S_IXGRP) + ia_prot.group.exec = 1; + + if (mode & S_IROTH) + ia_prot.other.read = 1; + if (mode & S_IWOTH) + ia_prot.other.write = 1; + if (mode & S_IXOTH) + ia_prot.other.exec = 1; + + return ia_prot; } - static inline ia_type_t -ia_type_from_st_mode (mode_t mode) +ia_type_from_st_mode(mode_t mode) { - ia_type_t type = IA_INVAL; - - if (S_ISREG (mode)) - type = IA_IFREG; - if (S_ISDIR (mode)) - type = IA_IFDIR; - if (S_ISLNK (mode)) - type = IA_IFLNK; - if (S_ISBLK (mode)) - type = IA_IFBLK; - if (S_ISCHR (mode)) - type = IA_IFCHR; - if (S_ISFIFO (mode)) - type = IA_IFIFO; - if (S_ISSOCK (mode)) - type = IA_IFSOCK; - - return type; + ia_type_t type = IA_INVAL; + + if (S_ISREG(mode)) + type = IA_IFREG; + if (S_ISDIR(mode)) + type = IA_IFDIR; + if (S_ISLNK(mode)) + type = IA_IFLNK; + if (S_ISBLK(mode)) + type = IA_IFBLK; + if (S_ISCHR(mode)) + type = IA_IFCHR; + if (S_ISFIFO(mode)) + type = IA_IFIFO; + if (S_ISSOCK(mode)) + type = IA_IFSOCK; + + return type; } - static inline uint32_t -st_mode_prot_from_ia (ia_prot_t prot) +st_mode_prot_from_ia(ia_prot_t prot) { - uint32_t prot_bit = 0; - - if (prot.suid) - prot_bit |= S_ISUID; - if (prot.sgid) - prot_bit |= S_ISGID; - if (prot.sticky) - prot_bit |= S_ISVTX; - - if (prot.owner.read) - prot_bit |= S_IRUSR; - if (prot.owner.write) - prot_bit |= S_IWUSR; - if (prot.owner.exec) - prot_bit |= S_IXUSR; - - if (prot.group.read) - prot_bit |= S_IRGRP; - if (prot.group.write) - prot_bit |= S_IWGRP; - if (prot.group.exec) - prot_bit |= S_IXGRP; - - if (prot.other.read) - prot_bit |= S_IROTH; - if (prot.other.write) - prot_bit |= S_IWOTH; - if (prot.other.exec) - prot_bit |= S_IXOTH; - - return prot_bit; + uint32_t prot_bit = 0; + + if (prot.suid) + prot_bit |= S_ISUID; + if (prot.sgid) + prot_bit |= S_ISGID; + if (prot.sticky) + prot_bit |= S_ISVTX; + + if (prot.owner.read) + prot_bit |= S_IRUSR; + if (prot.owner.write) + prot_bit |= S_IWUSR; + if (prot.owner.exec) + prot_bit |= S_IXUSR; + + if (prot.group.read) + prot_bit |= S_IRGRP; + if (prot.group.write) + prot_bit |= S_IWGRP; + if (prot.group.exec) + prot_bit |= S_IXGRP; + + if (prot.other.read) + prot_bit |= S_IROTH; + if (prot.other.write) + prot_bit |= S_IWOTH; + if (prot.other.exec) + prot_bit |= S_IXOTH; + + return prot_bit; } - static inline mode_t -st_mode_from_ia (ia_prot_t prot, ia_type_t type) +st_mode_from_ia(ia_prot_t prot, ia_type_t type) { - mode_t st_mode = 0; - uint32_t type_bit = 0; - uint32_t prot_bit = 0; + mode_t st_mode = 0; + uint32_t type_bit = 0; + uint32_t prot_bit = 0; - switch (type) { + switch (type) { case IA_IFREG: - type_bit = S_IFREG; - break; + type_bit = S_IFREG; + break; case IA_IFDIR: - type_bit = S_IFDIR; - break; + type_bit = S_IFDIR; + break; case IA_IFLNK: - type_bit = S_IFLNK; - break; + type_bit = S_IFLNK; + break; case IA_IFBLK: - type_bit = S_IFBLK; - break; + type_bit = S_IFBLK; + break; case IA_IFCHR: - type_bit = S_IFCHR; - break; + type_bit = S_IFCHR; + break; case IA_IFIFO: - type_bit = S_IFIFO; - break; + type_bit = S_IFIFO; + break; case IA_IFSOCK: - type_bit = S_IFSOCK; - break; + type_bit = S_IFSOCK; + break; case IA_INVAL: - break; - } + break; + } - prot_bit = st_mode_prot_from_ia (prot); + prot_bit = st_mode_prot_from_ia(prot); - st_mode = (type_bit | prot_bit); + st_mode = (type_bit | prot_bit); - return st_mode; + return st_mode; } - static inline int -iatt_from_stat (struct iatt *iatt, struct stat *stat) +iatt_from_stat(struct iatt *iatt, struct stat *stat) { - iatt->ia_dev = stat->st_dev; - iatt->ia_ino = stat->st_ino; + iatt->ia_dev = stat->st_dev; + iatt->ia_ino = stat->st_ino; - iatt->ia_type = ia_type_from_st_mode (stat->st_mode); - iatt->ia_prot = ia_prot_from_st_mode (stat->st_mode); + iatt->ia_type = ia_type_from_st_mode(stat->st_mode); + iatt->ia_prot = ia_prot_from_st_mode(stat->st_mode); - iatt->ia_nlink = stat->st_nlink; - iatt->ia_uid = stat->st_uid; - iatt->ia_gid = stat->st_gid; + iatt->ia_nlink = stat->st_nlink; + iatt->ia_uid = stat->st_uid; + iatt->ia_gid = stat->st_gid; - iatt->ia_rdev = ia_makedev (major (stat->st_rdev), - minor (stat->st_rdev)); + iatt->ia_rdev = ia_makedev(major(stat->st_rdev), minor(stat->st_rdev)); - iatt->ia_size = stat->st_size; - iatt->ia_blksize = stat->st_blksize; - iatt->ia_blocks = stat->st_blocks; + iatt->ia_size = stat->st_size; + iatt->ia_blksize = stat->st_blksize; + iatt->ia_blocks = stat->st_blocks; - /* There is a possibility that the backend FS (like XFS) can - allocate blocks beyond EOF for better performance reasons, which - results in 'st_blocks' with higher values than what is consumed by - the file descriptor. This would break few logic inside GlusterFS, - like quota behavior etc, thus we need the exact number of blocks - which are consumed by the file to the higher layers inside GlusterFS. - Currently, this logic won't work for sparse files (ie, file with - holes) - */ - { - uint64_t maxblocks; + /* There is a possibility that the backend FS (like XFS) can + allocate blocks beyond EOF for better performance reasons, which + results in 'st_blocks' with higher values than what is consumed by + the file descriptor. This would break few logic inside GlusterFS, + like quota behavior etc, thus we need the exact number of blocks + which are consumed by the file to the higher layers inside GlusterFS. + Currently, this logic won't work for sparse files (ie, file with + holes) + */ + { + uint64_t maxblocks; - maxblocks = (iatt->ia_size + 511) / 512; + maxblocks = (iatt->ia_size + 511) / 512; - if (iatt->ia_blocks > maxblocks) - iatt->ia_blocks = maxblocks; - } + if (iatt->ia_blocks > maxblocks) + iatt->ia_blocks = maxblocks; + } - iatt->ia_atime = stat->st_atime; - iatt->ia_atime_nsec = ST_ATIM_NSEC (stat); + iatt->ia_atime = stat->st_atime; + iatt->ia_atime_nsec = ST_ATIM_NSEC(stat); - iatt->ia_mtime = stat->st_mtime; - iatt->ia_mtime_nsec = ST_MTIM_NSEC (stat); + iatt->ia_mtime = stat->st_mtime; + iatt->ia_mtime_nsec = ST_MTIM_NSEC(stat); - iatt->ia_ctime = stat->st_ctime; - iatt->ia_ctime_nsec = ST_CTIM_NSEC (stat); + iatt->ia_ctime = stat->st_ctime; + iatt->ia_ctime_nsec = ST_CTIM_NSEC(stat); - /* Setting IATT_INO in ia_flags is done in posix_fill_ino_from_gfid. */ - iatt->ia_flags = iatt->ia_flags | IATT_TYPE | IATT_MODE | IATT_NLINK | - IATT_UID | IATT_GID | IATT_SIZE | IATT_BLOCKS | - IATT_ATIME | IATT_MTIME | IATT_CTIME; + /* Setting IATT_INO in ia_flags is done in posix_fill_ino_from_gfid. */ + iatt->ia_flags = iatt->ia_flags | IATT_TYPE | IATT_MODE | IATT_NLINK | + IATT_UID | IATT_GID | IATT_SIZE | IATT_BLOCKS | + IATT_ATIME | IATT_MTIME | IATT_CTIME; - return 0; + return 0; } - static inline int -iatt_to_stat (struct iatt *iatt, struct stat *stat) +iatt_to_stat(struct iatt *iatt, struct stat *stat) { - stat->st_dev = iatt->ia_dev; - stat->st_ino = iatt->ia_ino; + stat->st_dev = iatt->ia_dev; + stat->st_ino = iatt->ia_ino; - stat->st_mode = st_mode_from_ia (iatt->ia_prot, iatt->ia_type); + stat->st_mode = st_mode_from_ia(iatt->ia_prot, iatt->ia_type); - stat->st_nlink = iatt->ia_nlink; - stat->st_uid = iatt->ia_uid; - stat->st_gid = iatt->ia_gid; + stat->st_nlink = iatt->ia_nlink; + stat->st_uid = iatt->ia_uid; + stat->st_gid = iatt->ia_gid; - stat->st_rdev = makedev (ia_major (iatt->ia_rdev), - ia_minor (iatt->ia_rdev)); + stat->st_rdev = makedev(ia_major(iatt->ia_rdev), ia_minor(iatt->ia_rdev)); - stat->st_size = iatt->ia_size; - stat->st_blksize = iatt->ia_blksize; - stat->st_blocks = iatt->ia_blocks; + stat->st_size = iatt->ia_size; + stat->st_blksize = iatt->ia_blksize; + stat->st_blocks = iatt->ia_blocks; - stat->st_atime = iatt->ia_atime; - ST_ATIM_NSEC_SET (stat, iatt->ia_atime_nsec); + stat->st_atime = iatt->ia_atime; + ST_ATIM_NSEC_SET(stat, iatt->ia_atime_nsec); - stat->st_mtime = iatt->ia_mtime; - ST_MTIM_NSEC_SET (stat, iatt->ia_mtime_nsec); + stat->st_mtime = iatt->ia_mtime; + ST_MTIM_NSEC_SET(stat, iatt->ia_mtime_nsec); - stat->st_ctime = iatt->ia_ctime; - ST_CTIM_NSEC_SET (stat, iatt->ia_ctime_nsec); + stat->st_ctime = iatt->ia_ctime; + ST_CTIM_NSEC_SET(stat, iatt->ia_ctime_nsec); - return 0; + return 0; } static inline void -oldiatt_from_iatt (struct old_iatt *o_iatt, struct iatt *c_iatt) +oldiatt_from_iatt(struct old_iatt *o_iatt, struct iatt *c_iatt) { - o_iatt->ia_dev = c_iatt->ia_dev; - o_iatt->ia_ino = c_iatt->ia_ino; - o_iatt->ia_type = c_iatt->ia_type; - o_iatt->ia_prot = c_iatt->ia_prot; - o_iatt->ia_nlink = c_iatt->ia_nlink; - o_iatt->ia_uid = c_iatt->ia_uid; - o_iatt->ia_gid = c_iatt->ia_gid; - o_iatt->ia_rdev = c_iatt->ia_rdev; - o_iatt->ia_size = c_iatt->ia_size; - o_iatt->ia_blksize = c_iatt->ia_blksize; - o_iatt->ia_blocks = c_iatt->ia_blocks; - o_iatt->ia_atime = c_iatt->ia_atime; - o_iatt->ia_atime_nsec = c_iatt->ia_atime_nsec; - o_iatt->ia_mtime = c_iatt->ia_mtime; - o_iatt->ia_mtime_nsec = c_iatt->ia_mtime_nsec; - o_iatt->ia_ctime = c_iatt->ia_ctime; - o_iatt->ia_ctime_nsec = c_iatt->ia_ctime_nsec; - - gf_uuid_copy (o_iatt->ia_gfid, c_iatt->ia_gfid); - - return; + o_iatt->ia_dev = c_iatt->ia_dev; + o_iatt->ia_ino = c_iatt->ia_ino; + o_iatt->ia_type = c_iatt->ia_type; + o_iatt->ia_prot = c_iatt->ia_prot; + o_iatt->ia_nlink = c_iatt->ia_nlink; + o_iatt->ia_uid = c_iatt->ia_uid; + o_iatt->ia_gid = c_iatt->ia_gid; + o_iatt->ia_rdev = c_iatt->ia_rdev; + o_iatt->ia_size = c_iatt->ia_size; + o_iatt->ia_blksize = c_iatt->ia_blksize; + o_iatt->ia_blocks = c_iatt->ia_blocks; + o_iatt->ia_atime = c_iatt->ia_atime; + o_iatt->ia_atime_nsec = c_iatt->ia_atime_nsec; + o_iatt->ia_mtime = c_iatt->ia_mtime; + o_iatt->ia_mtime_nsec = c_iatt->ia_mtime_nsec; + o_iatt->ia_ctime = c_iatt->ia_ctime; + o_iatt->ia_ctime_nsec = c_iatt->ia_ctime_nsec; + + gf_uuid_copy(o_iatt->ia_gfid, c_iatt->ia_gfid); + + return; } static inline void -iatt_from_oldiatt (struct iatt *c_iatt, struct old_iatt *o_iatt) +iatt_from_oldiatt(struct iatt *c_iatt, struct old_iatt *o_iatt) { - c_iatt->ia_dev = o_iatt->ia_dev; - c_iatt->ia_ino = o_iatt->ia_ino; - c_iatt->ia_type = o_iatt->ia_type; - c_iatt->ia_prot = o_iatt->ia_prot; - c_iatt->ia_nlink = o_iatt->ia_nlink; - c_iatt->ia_uid = o_iatt->ia_uid; - c_iatt->ia_gid = o_iatt->ia_gid; - c_iatt->ia_rdev = o_iatt->ia_rdev; - c_iatt->ia_size = o_iatt->ia_size; - c_iatt->ia_blksize = o_iatt->ia_blksize; - c_iatt->ia_blocks = o_iatt->ia_blocks; - c_iatt->ia_atime = o_iatt->ia_atime; - c_iatt->ia_atime_nsec = o_iatt->ia_atime_nsec; - c_iatt->ia_mtime = o_iatt->ia_mtime; - c_iatt->ia_mtime_nsec = o_iatt->ia_mtime_nsec; - c_iatt->ia_ctime = o_iatt->ia_ctime; - c_iatt->ia_ctime_nsec = o_iatt->ia_ctime_nsec; - - gf_uuid_copy (c_iatt->ia_gfid, o_iatt->ia_gfid); - - c_iatt->ia_attributes = 0; - - c_iatt->ia_flags = IATT_TYPE | IATT_MODE | IATT_NLINK | IATT_INO | - IATT_UID | IATT_GID | IATT_SIZE | IATT_BLOCKS | - IATT_ATIME | IATT_MTIME | IATT_CTIME | IATT_GFID; - - return; + c_iatt->ia_dev = o_iatt->ia_dev; + c_iatt->ia_ino = o_iatt->ia_ino; + c_iatt->ia_type = o_iatt->ia_type; + c_iatt->ia_prot = o_iatt->ia_prot; + c_iatt->ia_nlink = o_iatt->ia_nlink; + c_iatt->ia_uid = o_iatt->ia_uid; + c_iatt->ia_gid = o_iatt->ia_gid; + c_iatt->ia_rdev = o_iatt->ia_rdev; + c_iatt->ia_size = o_iatt->ia_size; + c_iatt->ia_blksize = o_iatt->ia_blksize; + c_iatt->ia_blocks = o_iatt->ia_blocks; + c_iatt->ia_atime = o_iatt->ia_atime; + c_iatt->ia_atime_nsec = o_iatt->ia_atime_nsec; + c_iatt->ia_mtime = o_iatt->ia_mtime; + c_iatt->ia_mtime_nsec = o_iatt->ia_mtime_nsec; + c_iatt->ia_ctime = o_iatt->ia_ctime; + c_iatt->ia_ctime_nsec = o_iatt->ia_ctime_nsec; + + gf_uuid_copy(c_iatt->ia_gfid, o_iatt->ia_gfid); + + c_iatt->ia_attributes = 0; + + c_iatt->ia_flags = IATT_TYPE | IATT_MODE | IATT_NLINK | IATT_INO | + IATT_UID | IATT_GID | IATT_SIZE | IATT_BLOCKS | + IATT_ATIME | IATT_MTIME | IATT_CTIME | IATT_GFID; + + return; } static inline int -is_same_mode (ia_prot_t prot1, ia_prot_t prot2) +is_same_mode(ia_prot_t prot1, ia_prot_t prot2) { - int ret = 0; + int ret = 0; - if (st_mode_prot_from_ia(prot1) != st_mode_prot_from_ia(prot2)) - ret = -1; + if (st_mode_prot_from_ia(prot1) != st_mode_prot_from_ia(prot2)) + ret = -1; - return ret; + return ret; } - #endif /* _IATT_H */ diff --git a/libglusterfs/src/inode.h b/libglusterfs/src/inode.h index 658477700c0..276a1f1577c 100644 --- a/libglusterfs/src/inode.h +++ b/libglusterfs/src/inode.h @@ -17,7 +17,7 @@ #define LOOKUP_NEEDED 1 #define LOOKUP_NOT_NEEDED 2 -#define DEFAULT_INODE_MEMPOOL_ENTRIES 32 * 1024 +#define DEFAULT_INODE_MEMPOOL_ENTRIES 32 * 1024 #define INODE_PATH_FMT "<gfid:%s>" struct _inode_table; typedef struct _inode_table inode_table_t; @@ -34,259 +34,256 @@ typedef struct _dentry dentry_t; #include "fd.h" struct _inode_table { - pthread_mutex_t lock; - size_t hashsize; /* bucket size of inode hash and dentry hash */ - char *name; /* name of the inode table, just for gf_log() */ - inode_t *root; /* root directory inode, with number 1 */ - xlator_t *xl; /* xlator to be called to do purge */ - uint32_t lru_limit; /* maximum LRU cache size */ - struct list_head *inode_hash; /* buckets for inode hash table */ - struct list_head *name_hash; /* buckets for dentry hash table */ - struct list_head active; /* list of inodes currently active (in an fop) */ - uint32_t active_size; /* count of inodes in active list */ - struct list_head lru; /* list of inodes recently used. - lru.next most recent */ - uint32_t lru_size; /* count of inodes in lru list */ - struct list_head purge; /* list of inodes to be purged soon */ - uint32_t purge_size; /* count of inodes in purge list */ - - struct mem_pool *inode_pool; /* memory pool for inodes */ - struct mem_pool *dentry_pool; /* memory pool for dentrys */ - struct mem_pool *fd_mem_pool; /* memory pool for fd_t */ - int ctxcount; /* number of slots in inode->ctx */ + pthread_mutex_t lock; + size_t hashsize; /* bucket size of inode hash and dentry hash */ + char *name; /* name of the inode table, just for gf_log() */ + inode_t *root; /* root directory inode, with number 1 */ + xlator_t *xl; /* xlator to be called to do purge */ + uint32_t lru_limit; /* maximum LRU cache size */ + struct list_head *inode_hash; /* buckets for inode hash table */ + struct list_head *name_hash; /* buckets for dentry hash table */ + struct list_head active; /* list of inodes currently active (in an fop) */ + uint32_t active_size; /* count of inodes in active list */ + struct list_head lru; /* list of inodes recently used. + lru.next most recent */ + uint32_t lru_size; /* count of inodes in lru list */ + struct list_head purge; /* list of inodes to be purged soon */ + uint32_t purge_size; /* count of inodes in purge list */ + + struct mem_pool *inode_pool; /* memory pool for inodes */ + struct mem_pool *dentry_pool; /* memory pool for dentrys */ + struct mem_pool *fd_mem_pool; /* memory pool for fd_t */ + int ctxcount; /* number of slots in inode->ctx */ }; - struct _dentry { - struct list_head inode_list; /* list of dentries of inode */ - struct list_head hash; /* hash table pointers */ - inode_t *inode; /* inode of this directory entry */ - char *name; /* name of the directory entry */ - inode_t *parent; /* directory of the entry */ + struct list_head inode_list; /* list of dentries of inode */ + struct list_head hash; /* hash table pointers */ + inode_t *inode; /* inode of this directory entry */ + char *name; /* name of the directory entry */ + inode_t *parent; /* directory of the entry */ }; struct _inode_ctx { - union { - uint64_t key; - xlator_t *xl_key; - }; - /* if value1 is 0, then field is not set.. */ - union { - uint64_t value1; - void *ptr1; - }; - /* if value2 is 0, then field is not set.. */ - union { - uint64_t value2; - void *ptr2; - }; - int ref; /* This is for debugging inode ref leaks, - basically helps in identifying the xlator - causing th ref leak, it is printed in - statedump */ + union { + uint64_t key; + xlator_t *xl_key; + }; + /* if value1 is 0, then field is not set.. */ + union { + uint64_t value1; + void *ptr1; + }; + /* if value2 is 0, then field is not set.. */ + union { + uint64_t value2; + void *ptr2; + }; + int ref; /* This is for debugging inode ref leaks, + basically helps in identifying the xlator + causing th ref leak, it is printed in + statedump */ }; struct _inode { - inode_table_t *table; /* the table this inode belongs to */ - uuid_t gfid; - gf_lock_t lock; - uint64_t nlookup; - uint32_t fd_count; /* Open fd count */ - uint32_t active_fd_count; /* Active open fd count */ - uint32_t ref; /* reference count on this inode */ - ia_type_t ia_type; /* what kind of file */ - struct list_head fd_list; /* list of open files on this inode */ - struct list_head dentry_list; /* list of directory entries for this inode */ - struct list_head hash; /* hash table pointers */ - struct list_head list; /* active/lru/purge */ - - struct _inode_ctx *_ctx; /* replacement for dict_t *(inode->ctx) */ + inode_table_t *table; /* the table this inode belongs to */ + uuid_t gfid; + gf_lock_t lock; + uint64_t nlookup; + uint32_t fd_count; /* Open fd count */ + uint32_t active_fd_count; /* Active open fd count */ + uint32_t ref; /* reference count on this inode */ + ia_type_t ia_type; /* what kind of file */ + struct list_head fd_list; /* list of open files on this inode */ + struct list_head dentry_list; /* list of directory entries for this inode */ + struct list_head hash; /* hash table pointers */ + struct list_head list; /* active/lru/purge */ + + struct _inode_ctx *_ctx; /* replacement for dict_t *(inode->ctx) */ }; - #define UUID0_STR "00000000-0000-0000-0000-000000000000" #define GFID_STR_PFX "<gfid:" UUID0_STR ">" -#define GFID_STR_PFX_LEN (sizeof (GFID_STR_PFX) - 1) +#define GFID_STR_PFX_LEN (sizeof(GFID_STR_PFX) - 1) inode_table_t * -inode_table_new (size_t lru_limit, xlator_t *xl); +inode_table_new(size_t lru_limit, xlator_t *xl); void -inode_table_destroy_all (glusterfs_ctx_t *ctx); +inode_table_destroy_all(glusterfs_ctx_t *ctx); void -inode_table_destroy (inode_table_t *inode_table); +inode_table_destroy(inode_table_t *inode_table); inode_t * -inode_new (inode_table_t *table); +inode_new(inode_table_t *table); inode_t * -inode_link (inode_t *inode, inode_t *parent, - const char *name, struct iatt *stbuf); +inode_link(inode_t *inode, inode_t *parent, const char *name, + struct iatt *stbuf); void -inode_unlink (inode_t *inode, inode_t *parent, const char *name); +inode_unlink(inode_t *inode, inode_t *parent, const char *name); inode_t * -inode_parent (inode_t *inode, uuid_t pargfid, const char *name); +inode_parent(inode_t *inode, uuid_t pargfid, const char *name); inode_t * -inode_ref (inode_t *inode); +inode_ref(inode_t *inode); inode_t * -inode_unref (inode_t *inode); +inode_unref(inode_t *inode); int -inode_lookup (inode_t *inode); +inode_lookup(inode_t *inode); int -inode_forget (inode_t *inode, uint64_t nlookup); +inode_forget(inode_t *inode, uint64_t nlookup); int -inode_ref_reduce_by_n (inode_t *inode, uint64_t nref); +inode_ref_reduce_by_n(inode_t *inode, uint64_t nref); int inode_invalidate(inode_t *inode); int -inode_rename (inode_table_t *table, inode_t *olddir, const char *oldname, - inode_t *newdir, const char *newname, - inode_t *inode, struct iatt *stbuf); +inode_rename(inode_table_t *table, inode_t *olddir, const char *oldname, + inode_t *newdir, const char *newname, inode_t *inode, + struct iatt *stbuf); dentry_t * -__dentry_grep (inode_table_t *table, inode_t *parent, const char *name); +__dentry_grep(inode_table_t *table, inode_t *parent, const char *name); inode_t * -inode_grep (inode_table_t *table, inode_t *parent, const char *name); +inode_grep(inode_table_t *table, inode_t *parent, const char *name); int -inode_grep_for_gfid (inode_table_t *table, inode_t *parent, const char *name, - uuid_t gfid, ia_type_t *type); +inode_grep_for_gfid(inode_table_t *table, inode_t *parent, const char *name, + uuid_t gfid, ia_type_t *type); inode_t * -inode_find (inode_table_t *table, uuid_t gfid); +inode_find(inode_table_t *table, uuid_t gfid); int -inode_path (inode_t *inode, const char *name, char **bufp); +inode_path(inode_t *inode, const char *name, char **bufp); int -__inode_path (inode_t *inode, const char *name, char **bufp); +__inode_path(inode_t *inode, const char *name, char **bufp); inode_t * -inode_from_path (inode_table_t *table, const char *path); +inode_from_path(inode_table_t *table, const char *path); inode_t * -inode_resolve (inode_table_t *table, char *path); +inode_resolve(inode_table_t *table, char *path); /* deal with inode ctx's both values */ int -inode_ctx_set2 (inode_t *inode, xlator_t *xlator, uint64_t *value1, - uint64_t *value2); +inode_ctx_set2(inode_t *inode, xlator_t *xlator, uint64_t *value1, + uint64_t *value2); int -__inode_ctx_set2 (inode_t *inode, xlator_t *xlator, uint64_t *value1, - uint64_t *value2); +__inode_ctx_set2(inode_t *inode, xlator_t *xlator, uint64_t *value1, + uint64_t *value2); int -inode_ctx_get2 (inode_t *inode, xlator_t *xlator, uint64_t *value1, - uint64_t *value2); +inode_ctx_get2(inode_t *inode, xlator_t *xlator, uint64_t *value1, + uint64_t *value2); int -__inode_ctx_get2 (inode_t *inode, xlator_t *xlator, uint64_t *value1, - uint64_t *value2); +__inode_ctx_get2(inode_t *inode, xlator_t *xlator, uint64_t *value1, + uint64_t *value2); int -inode_ctx_del2 (inode_t *inode, xlator_t *xlator, uint64_t *value1, - uint64_t *value2); +inode_ctx_del2(inode_t *inode, xlator_t *xlator, uint64_t *value1, + uint64_t *value2); int -inode_ctx_reset2 (inode_t *inode, xlator_t *xlator, uint64_t *value1, - uint64_t *value2); +inode_ctx_reset2(inode_t *inode, xlator_t *xlator, uint64_t *value1, + uint64_t *value2); /* deal with inode ctx's 1st value */ int -inode_ctx_set0 (inode_t *inode, xlator_t *xlator, uint64_t *value1); +inode_ctx_set0(inode_t *inode, xlator_t *xlator, uint64_t *value1); int -__inode_ctx_set0 (inode_t *inode, xlator_t *xlator, uint64_t *value1); +__inode_ctx_set0(inode_t *inode, xlator_t *xlator, uint64_t *value1); int -inode_ctx_get0 (inode_t *inode, xlator_t *xlator, uint64_t *value1); +inode_ctx_get0(inode_t *inode, xlator_t *xlator, uint64_t *value1); int -__inode_ctx_get0 (inode_t *inode, xlator_t *xlator, uint64_t *value1); +__inode_ctx_get0(inode_t *inode, xlator_t *xlator, uint64_t *value1); int -inode_ctx_reset0 (inode_t *inode, xlator_t *xlator, uint64_t *value1); +inode_ctx_reset0(inode_t *inode, xlator_t *xlator, uint64_t *value1); /* deal with inode ctx's 2st value */ int -inode_ctx_set1 (inode_t *inode, xlator_t *xlator, uint64_t *value2); +inode_ctx_set1(inode_t *inode, xlator_t *xlator, uint64_t *value2); int -__inode_ctx_set1 (inode_t *inode, xlator_t *xlator, uint64_t *value2); +__inode_ctx_set1(inode_t *inode, xlator_t *xlator, uint64_t *value2); int -inode_ctx_get1 (inode_t *inode, xlator_t *xlator, uint64_t *value2); +inode_ctx_get1(inode_t *inode, xlator_t *xlator, uint64_t *value2); int -__inode_ctx_get1 (inode_t *inode, xlator_t *xlator, uint64_t *value2); +__inode_ctx_get1(inode_t *inode, xlator_t *xlator, uint64_t *value2); int -inode_ctx_reset1 (inode_t *inode, xlator_t *xlator, uint64_t *value2); - +inode_ctx_reset1(inode_t *inode, xlator_t *xlator, uint64_t *value2); static inline int __inode_ctx_put(inode_t *inode, xlator_t *this, uint64_t v) { - return __inode_ctx_set0 (inode, this, &v); + return __inode_ctx_set0(inode, this, &v); } static inline int inode_ctx_put(inode_t *inode, xlator_t *this, uint64_t v) { - return inode_ctx_set0 (inode, this, &v); + return inode_ctx_set0(inode, this, &v); } -#define __inode_ctx_set(i,x,v_p) __inode_ctx_set0(i,x,v_p) +#define __inode_ctx_set(i, x, v_p) __inode_ctx_set0(i, x, v_p) -#define inode_ctx_set(i,x,v_p) inode_ctx_set0(i,x,v_p) +#define inode_ctx_set(i, x, v_p) inode_ctx_set0(i, x, v_p) -#define inode_ctx_reset(i,x,v) inode_ctx_reset0(i,x,v) +#define inode_ctx_reset(i, x, v) inode_ctx_reset0(i, x, v) -#define __inode_ctx_get(i,x,v) __inode_ctx_get0(i,x,v) +#define __inode_ctx_get(i, x, v) __inode_ctx_get0(i, x, v) -#define inode_ctx_get(i,x,v) inode_ctx_get0(i,x,v) +#define inode_ctx_get(i, x, v) inode_ctx_get0(i, x, v) -#define inode_ctx_del(i,x,v) inode_ctx_del2(i,x,v,0) +#define inode_ctx_del(i, x, v) inode_ctx_del2(i, x, v, 0) #define inode_ctx_del1(i, x, v) inode_ctx_del2(i, x, 0, v) gf_boolean_t -__is_root_gfid (uuid_t gfid); +__is_root_gfid(uuid_t gfid); void -__inode_table_set_lru_limit (inode_table_t *table, uint32_t lru_limit); +__inode_table_set_lru_limit(inode_table_t *table, uint32_t lru_limit); void -inode_table_set_lru_limit (inode_table_t *table, uint32_t lru_limit); +inode_table_set_lru_limit(inode_table_t *table, uint32_t lru_limit); void -inode_ctx_merge (fd_t *fd, inode_t *inode, inode_t *linked_inode); +inode_ctx_merge(fd_t *fd, inode_t *inode, inode_t *linked_inode); int -inode_is_linked (inode_t *inode); +inode_is_linked(inode_t *inode); void -inode_set_need_lookup (inode_t *inode, xlator_t *this); +inode_set_need_lookup(inode_t *inode, xlator_t *this); gf_boolean_t -inode_needs_lookup (inode_t *inode, xlator_t *this); +inode_needs_lookup(inode_t *inode, xlator_t *this); int -inode_has_dentry (inode_t *inode); +inode_has_dentry(inode_t *inode); size_t -inode_ctx_size (inode_t *inode); +inode_ctx_size(inode_t *inode); void -inode_find_directory_name (inode_t *inode, const char **name); +inode_find_directory_name(inode_t *inode, const char **name); #endif /* _INODE_H */ diff --git a/libglusterfs/src/iobuf.h b/libglusterfs/src/iobuf.h index 21184da1d2e..41ac5dd191c 100644 --- a/libglusterfs/src/iobuf.h +++ b/libglusterfs/src/iobuf.h @@ -32,8 +32,8 @@ #define MAP_ANONYMOUS MAP_ANON #endif -#define GF_ALIGN_BUF(ptr,bound) ((void *)((unsigned long)(ptr + bound - 1) & \ - (unsigned long)(~(bound - 1)))) +#define GF_ALIGN_BUF(ptr, bound) \ + ((void *)((unsigned long)(ptr + bound - 1) & (unsigned long)(~(bound - 1)))) #define GF_IOBUF_ALIGN_SIZE 512 @@ -50,133 +50,144 @@ struct iobuf_arena; struct iobuf_pool; struct iobuf_init_config { - size_t pagesize; - int32_t num_pages; + size_t pagesize; + int32_t num_pages; }; struct iobuf { - union { - struct list_head list; - struct { - struct iobuf *next; - struct iobuf *prev; - }; + union { + struct list_head list; + struct { + struct iobuf *next; + struct iobuf *prev; }; - struct iobuf_arena *iobuf_arena; + }; + struct iobuf_arena *iobuf_arena; - gf_lock_t lock; /* for ->ptr and ->ref */ - gf_atomic_t ref; /* 0 == passive, >0 == active */ + gf_lock_t lock; /* for ->ptr and ->ref */ + gf_atomic_t ref; /* 0 == passive, >0 == active */ - void *ptr; /* usable memory region by the consumer */ + void *ptr; /* usable memory region by the consumer */ - void *free_ptr; /* in case of stdalloc, this is the - one to be freed */ + void *free_ptr; /* in case of stdalloc, this is the + one to be freed */ }; - struct iobuf_arena { - union { - struct list_head list; - struct { - struct iobuf_arena *next; - struct iobuf_arena *prev; - }; + union { + struct list_head list; + struct { + struct iobuf_arena *next; + struct iobuf_arena *prev; }; - - struct list_head all_list; - size_t page_size; /* size of all iobufs in this arena */ - size_t arena_size; - /* this is equal to rounded_size * num_iobufs. - (rounded_size comes with gf_iobuf_get_pagesize().) */ - size_t page_count; - - struct iobuf_pool *iobuf_pool; - - void *mem_base; - struct iobuf *iobufs; /* allocated iobufs list */ - - int active_cnt; - struct iobuf active; /* head node iobuf - (unused by itself) */ - int passive_cnt; - struct iobuf passive; /* head node iobuf - (unused by itself) */ - uint64_t alloc_cnt; /* total allocs in this pool */ - int max_active; /* max active buffers at a given time */ + }; + + struct list_head all_list; + size_t page_size; /* size of all iobufs in this arena */ + size_t arena_size; + /* this is equal to rounded_size * num_iobufs. + (rounded_size comes with gf_iobuf_get_pagesize().) */ + size_t page_count; + + struct iobuf_pool *iobuf_pool; + + void *mem_base; + struct iobuf *iobufs; /* allocated iobufs list */ + + int active_cnt; + struct iobuf active; /* head node iobuf + (unused by itself) */ + int passive_cnt; + struct iobuf passive; /* head node iobuf + (unused by itself) */ + uint64_t alloc_cnt; /* total allocs in this pool */ + int max_active; /* max active buffers at a given time */ }; - struct iobuf_pool { - pthread_mutex_t mutex; - size_t arena_size; /* size of memory region in - arena */ - size_t default_page_size; /* default size of iobuf */ - - int arena_cnt; - struct list_head all_arenas; - struct list_head arenas[GF_VARIABLE_IOBUF_COUNT]; - /* array of arenas. Each element of the array is a list of arenas - holding iobufs of particular page_size */ - - struct list_head filled[GF_VARIABLE_IOBUF_COUNT]; - /* array of arenas without free iobufs */ - - struct list_head purge[GF_VARIABLE_IOBUF_COUNT]; - /* array of of arenas which can be purged */ - - uint64_t request_misses; /* mostly the requests for higher - value of iobufs */ - int rdma_device_count; - struct list_head *mr_list[GF_RDMA_DEVICE_COUNT]; - void *device[GF_RDMA_DEVICE_COUNT]; - int (*rdma_registration)(void **, void*); - int (*rdma_deregistration)(struct list_head**, struct iobuf_arena *); - + pthread_mutex_t mutex; + size_t arena_size; /* size of memory region in + arena */ + size_t default_page_size; /* default size of iobuf */ + + int arena_cnt; + struct list_head all_arenas; + struct list_head arenas[GF_VARIABLE_IOBUF_COUNT]; + /* array of arenas. Each element of the array is a list of arenas + holding iobufs of particular page_size */ + + struct list_head filled[GF_VARIABLE_IOBUF_COUNT]; + /* array of arenas without free iobufs */ + + struct list_head purge[GF_VARIABLE_IOBUF_COUNT]; + /* array of of arenas which can be purged */ + + uint64_t request_misses; /* mostly the requests for higher + value of iobufs */ + int rdma_device_count; + struct list_head *mr_list[GF_RDMA_DEVICE_COUNT]; + void *device[GF_RDMA_DEVICE_COUNT]; + int (*rdma_registration)(void **, void *); + int (*rdma_deregistration)(struct list_head **, struct iobuf_arena *); }; - -struct iobuf_pool *iobuf_pool_new (void); -void iobuf_pool_destroy (struct iobuf_pool *iobuf_pool); -struct iobuf *iobuf_get (struct iobuf_pool *iobuf_pool); -void iobuf_unref (struct iobuf *iobuf); -struct iobuf *iobuf_ref (struct iobuf *iobuf); -void iobuf_pool_destroy (struct iobuf_pool *iobuf_pool); -void iobuf_to_iovec(struct iobuf *iob, struct iovec *iov); +struct iobuf_pool * +iobuf_pool_new(void); +void +iobuf_pool_destroy(struct iobuf_pool *iobuf_pool); +struct iobuf * +iobuf_get(struct iobuf_pool *iobuf_pool); +void +iobuf_unref(struct iobuf *iobuf); +struct iobuf * +iobuf_ref(struct iobuf *iobuf); +void +iobuf_pool_destroy(struct iobuf_pool *iobuf_pool); +void +iobuf_to_iovec(struct iobuf *iob, struct iovec *iov); #define iobuf_ptr(iob) ((iob)->ptr) #define iobpool_default_pagesize(iobpool) ((iobpool)->default_page_size) #define iobuf_pagesize(iob) (iob->iobuf_arena->page_size) - struct iobref { - gf_lock_t lock; - gf_atomic_t ref; - struct iobuf **iobrefs; - int allocated; - int used; + gf_lock_t lock; + gf_atomic_t ref; + struct iobuf **iobrefs; + int allocated; + int used; }; -struct iobref *iobref_new (void); -struct iobref *iobref_ref (struct iobref *iobref); -void iobref_unref (struct iobref *iobref); -int iobref_add (struct iobref *iobref, struct iobuf *iobuf); -int iobref_merge (struct iobref *to, struct iobref *from); -void iobref_clear (struct iobref *iobref); +struct iobref * +iobref_new(void); +struct iobref * +iobref_ref(struct iobref *iobref); +void +iobref_unref(struct iobref *iobref); +int +iobref_add(struct iobref *iobref, struct iobuf *iobuf); +int +iobref_merge(struct iobref *to, struct iobref *from); +void +iobref_clear(struct iobref *iobref); -size_t iobuf_size (struct iobuf *iobuf); -size_t iobref_size (struct iobref *iobref); -void iobuf_stats_dump (struct iobuf_pool *iobuf_pool); +size_t +iobuf_size(struct iobuf *iobuf); +size_t +iobref_size(struct iobref *iobref); +void +iobuf_stats_dump(struct iobuf_pool *iobuf_pool); struct iobuf * -iobuf_get2 (struct iobuf_pool *iobuf_pool, size_t page_size); +iobuf_get2(struct iobuf_pool *iobuf_pool, size_t page_size); struct iobuf * -iobuf_get_page_aligned (struct iobuf_pool *iobuf_pool, size_t page_size, - size_t align_size); +iobuf_get_page_aligned(struct iobuf_pool *iobuf_pool, size_t page_size, + size_t align_size); int -iobuf_copy (struct iobuf_pool *iobuf_pool, const struct iovec *iovec_src, - int iovcnt, struct iobref **iobref, struct iobuf **iobuf, - struct iovec *iov_dst); +iobuf_copy(struct iobuf_pool *iobuf_pool, const struct iovec *iovec_src, + int iovcnt, struct iobref **iobref, struct iobuf **iobuf, + struct iovec *iov_dst); #endif /* !_IOBUF_H_ */ diff --git a/libglusterfs/src/latency.h b/libglusterfs/src/latency.h index 73a93242341..063ea291ee2 100644 --- a/libglusterfs/src/latency.h +++ b/libglusterfs/src/latency.h @@ -14,10 +14,10 @@ #include "glusterfs.h" typedef struct fop_latency { - double min; /* min time for the call (microseconds) */ - double max; /* max time for the call (microseconds) */ - double total; /* total time (microseconds) */ - uint64_t count; + double min; /* min time for the call (microseconds) */ + double max; /* max time for the call (microseconds) */ + double total; /* total time (microseconds) */ + uint64_t count; } fop_latency_t; #endif /* __LATENCY_H__ */ diff --git a/libglusterfs/src/libglusterfs-messages.h b/libglusterfs/src/libglusterfs-messages.h index 66e92f2b8f1..d40d644fad9 100644 --- a/libglusterfs/src/libglusterfs-messages.h +++ b/libglusterfs/src/libglusterfs-messages.h @@ -23,221 +23,92 @@ * glfs-message-id.h. */ -GLFS_MSGID(LIBGLUSTERFS, - LG_MSG_ASPRINTF_FAILED, - LG_MSG_INVALID_ENTRY, - LG_MSG_COUNT_LESS_THAN_ZERO, - LG_MSG_COUNT_LESS_THAN_DATA_PAIRS, - LG_MSG_VALUE_LENGTH_LESS_THAN_ZERO, - LG_MSG_PAIRS_LESS_THAN_COUNT, - LG_MSG_KEY_OR_VALUE_NULL, - LG_MSG_FAILED_TO_LOG_DICT, - LG_MSG_NULL_VALUE_IN_DICT, - LG_MSG_DIR_OP_FAILED, - LG_MSG_STORE_HANDLE_CREATE_FAILED, - LG_MSG_FILE_OP_FAILED, - LG_MSG_FILE_STAT_FAILED, - LG_MSG_LOCK_FAILED, - LG_MSG_UNLOCK_FAILED, - LG_MSG_DICT_SERIAL_FAILED, - LG_MSG_DICT_UNSERIAL_FAILED, - LG_MSG_NO_MEMORY, - LG_MSG_VOLUME_ERROR, - LG_MSG_SUB_VOLUME_ERROR, - LG_MSG_SYNTAX_ERROR, - LG_MSG_BACKTICK_PARSE_FAILED, - LG_MSG_BUFFER_ERROR, - LG_MSG_STRDUP_ERROR, - LG_MSG_HASH_FUNC_ERROR, - LG_MSG_GET_BUCKET_FAILED, - LG_MSG_INSERT_FAILED, - LG_MSG_OUT_OF_RANGE, - LG_MSG_VALIDATE_RETURNS, - LG_MSG_VALIDATE_REC_FAILED, - LG_MSG_RB_TABLE_CREATE_FAILED, - LG_MSG_PATH_NOT_FOUND, - LG_MSG_EXPAND_FD_TABLE_FAILED, - LG_MSG_MAPPING_FAILED, - LG_MSG_INIT_IOBUF_FAILED, - LG_MSG_PAGE_SIZE_EXCEEDED, - LG_MSG_ARENA_NOT_FOUND, - LG_MSG_IOBUF_NOT_FOUND, - LG_MSG_POOL_NOT_FOUND, - LG_MSG_SET_ATTRIBUTE_FAILED, - LG_MSG_READ_ATTRIBUTE_FAILED, - LG_MSG_UNMOUNT_FAILED, - LG_MSG_LATENCY_MEASUREMENT_STATE, - LG_MSG_NO_PERM, - LG_MSG_NO_KEY, - LG_MSG_DICT_NULL, - LG_MSG_INIT_TIMER_FAILED, - LG_MSG_FD_ANONYMOUS_FAILED, - LG_MSG_FD_CREATE_FAILED, - LG_MSG_BUFFER_FULL, - LG_MSG_FWRITE_FAILED, - LG_MSG_PRINT_FAILED, - LG_MSG_MEM_POOL_DESTROY, - LG_MSG_EXPAND_CLIENT_TABLE_FAILED, - LG_MSG_DISCONNECT_CLIENT, - LG_MSG_PIPE_CREATE_FAILED, - LG_MSG_SET_PIPE_FAILED, - LG_MSG_REGISTER_PIPE_FAILED, - LG_MSG_POLL_IGNORE_MULTIPLE_THREADS, - LG_MSG_INDEX_NOT_FOUND, - LG_MSG_EPOLL_FD_CREATE_FAILED, - LG_MSG_SLOT_NOT_FOUND, - LG_MSG_STALE_FD_FOUND, - LG_MSG_GENERATION_MISMATCH, - LG_MSG_PTHREAD_KEY_CREATE_FAILED, - LG_MSG_TRANSLATOR_INIT_FAILED, - LG_MSG_UUID_BUF_INIT_FAILED, - LG_MSG_LKOWNER_BUF_INIT_FAILED, - LG_MSG_SYNCTASK_INIT_FAILED, - LG_MSG_SYNCOPCTX_INIT_FAILED, - LG_MSG_GLOBAL_INIT_FAILED, - LG_MSG_PTHREAD_FAILED, - LG_MSG_DIR_IS_SYMLINK, - LG_MSG_RESOLVE_HOSTNAME_FAILED, - LG_MSG_GETADDRINFO_FAILED, - LG_MSG_GETNAMEINFO_FAILED, - LG_MSG_PATH_ERROR, - LG_MSG_INET_PTON_FAILED, - LG_MSG_NEGATIVE_NUM_PASSED, - LG_MSG_GETHOSTNAME_FAILED, - LG_MSG_RESERVED_PORTS_ERROR, - LG_MSG_INVALID_PORT, - LG_MSG_INVALID_FAMILY, - LG_MSG_CONVERSION_FAILED, - LG_MSG_SKIP_HEADER_FAILED, - LG_MSG_INVALID_LOG, - LG_MSG_UTIMES_FAILED, - LG_MSG_BACKTRACE_SAVE_FAILED, - LG_MSG_INIT_FAILED, - LG_MSG_VALIDATION_FAILED, - LG_MSG_GRAPH_ERROR, - LG_MSG_UNKNOWN_OPTIONS_FAILED, - LG_MSG_CTX_NULL, - LG_MSG_TMPFILE_CREATE_FAILED, - LG_MSG_DLOPEN_FAILED, - LG_MSG_LOAD_FAILED, - LG_MSG_DLSYM_ERROR, - LG_MSG_TREE_NOT_FOUND, - LG_MSG_PER_DENTRY, - LG_MSG_DENTRY, - LG_MSG_GETIFADDRS_FAILED, - LG_MSG_REGEX_OP_FAILED, - LG_MSG_FRAME_ERROR, - LG_MSG_SET_PARAM_FAILED, - LG_MSG_GET_PARAM_FAILED, - LG_MSG_PREPARE_FAILED, - LG_MSG_EXEC_FAILED, - LG_MSG_BINDING_FAILED, - LG_MSG_DELETE_FAILED, - LG_MSG_GET_ID_FAILED, - LG_MSG_CREATE_FAILED, - LG_MSG_PARSE_FAILED, - LG_MSG_GETCONTEXT_FAILED, - LG_MSG_UPDATE_FAILED, - LG_MSG_QUERY_CALL_BACK_FAILED, - LG_MSG_GET_RECORD_FAILED, - LG_MSG_DB_ERROR, - LG_MSG_CONNECTION_ERROR, - LG_MSG_NOT_MULTITHREAD_MODE, - LG_MSG_SKIP_PATH, - LG_MSG_INVALID_FOP, - LG_MSG_QUERY_FAILED, - LG_MSG_CLEAR_COUNTER_FAILED, - LG_MSG_LOCK_LIST_FAILED, - LG_MSG_UNLOCK_LIST_FAILED, - LG_MSG_ADD_TO_LIST_FAILED, - LG_MSG_INIT_DB_FAILED, - LG_MSG_DELETE_FROM_LIST_FAILED, - LG_MSG_CLOSE_CONNECTION_FAILED, - LG_MSG_INSERT_OR_UPDATE_FAILED, - LG_MSG_FIND_OP_FAILED, - LG_MSG_CONNECTION_INIT_FAILED, - LG_MSG_COMPLETED_TASK, - LG_MSG_WAKE_UP_ZOMBIE, - LG_MSG_REWAITING_TASK, - LG_MSG_SLEEP_ZOMBIE, - LG_MSG_SWAPCONTEXT_FAILED, - LG_MSG_UNSUPPORTED_PLUGIN, - LG_MSG_INVALID_DB_TYPE, - LG_MSG_UNDERSIZED_BUF, - LG_MSG_DATA_CONVERSION_ERROR, - LG_MSG_DICT_ERROR, - LG_MSG_IOBUFS_NOT_FOUND, - LG_MSG_ENTRIES_NULL, - LG_MSG_FD_NOT_FOUND_IN_FDTABLE, - LG_MSG_REALLOC_FOR_FD_PTR_FAILED, - LG_MSG_DICT_SET_FAILED, - LG_MSG_NULL_PTR, - LG_MSG_RBTHASH_INIT_BUCKET_FAILED, - LG_MSG_ASSERTION_FAILED, - LG_MSG_HOSTNAME_NULL, - LG_MSG_INVALID_IPV4_FORMAT, - LG_MSG_CTX_CLEANUP_STARTED, - LG_MSG_TIMER_REGISTER_ERROR, - LG_MSG_PTR_HEADER_CORRUPTED, - LG_MSG_INVALID_UPLINK, - LG_MSG_CLIENT_NULL, - LG_MSG_XLATOR_DOES_NOT_IMPLEMENT, - LG_MSG_DENTRY_NOT_FOUND, - LG_MSG_INODE_NOT_FOUND, - LG_MSG_INODE_TABLE_NOT_FOUND, - LG_MSG_DENTRY_CREATE_FAILED, - LG_MSG_INODE_CONTEXT_FREED, - LG_MSG_UNKNOWN_LOCK_TYPE, - LG_MSG_UNLOCK_BEFORE_LOCK, - LG_MSG_LOCK_OWNER_ERROR, - LG_MSG_MEMPOOL_PTR_NULL, - LG_MSG_QUOTA_XATTRS_MISSING, - LG_MSG_INVALID_STRING, - LG_MSG_BIND_REF, - LG_MSG_REF_COUNT, - LG_MSG_INVALID_ARG, - LG_MSG_VOL_OPTION_ADD, - LG_MSG_XLATOR_OPTION_INVALID, - LG_MSG_GETTIMEOFDAY_FAILED, - LG_MSG_GRAPH_INIT_FAILED, - LG_MSG_EVENT_NOTIFY_FAILED, - LG_MSG_ACTIVE_GRAPH_NULL, - LG_MSG_VOLFILE_PARSE_ERROR, - LG_MSG_FD_INODE_NULL, - LG_MSG_INVALID_VOLFILE_ENTRY, - LG_MSG_PER_DENTRY_FAILED, - LG_MSG_PARENT_DENTRY_NOT_FOUND, - LG_MSG_DENTRY_CYCLIC_LOOP, - LG_MSG_INVALID_POLL_IN, - LG_MSG_INVALID_POLL_OUT, - LG_MSG_EPOLL_FD_ADD_FAILED, - LG_MSG_EPOLL_FD_DEL_FAILED, - LG_MSG_EPOLL_FD_MODIFY_FAILED, - LG_MSG_STARTED_EPOLL_THREAD, - LG_MSG_EXITED_EPOLL_THREAD, - LG_MSG_START_EPOLL_THREAD_FAILED, - LG_MSG_FALLBACK_TO_POLL, - LG_MSG_QUOTA_CONF_ERROR, - LG_MSG_RBTHASH_GET_ENTRY_FAILED, - LG_MSG_RBTHASH_GET_BUCKET_FAILED, - LG_MSG_RBTHASH_INSERT_FAILED, - LG_MSG_RBTHASH_INIT_ENTRY_FAILED, - LG_MSG_TMPFILE_DELETE_FAILED, - LG_MSG_MEMPOOL_INVALID_FREE, - LG_MSG_LOCK_FAILURE, - LG_MSG_SET_LOG_LEVEL, - LG_MSG_VERIFY_PLATFORM, - LG_MSG_RUNNER_LOG, - LG_MSG_LEASEID_BUF_INIT_FAILED, - LG_MSG_PTHREAD_ATTR_INIT_FAILED, - LG_MSG_INVALID_INODE_LIST, - LG_MSG_COMPACT_FAILED, - LG_MSG_COMPACT_STATUS, - LG_MSG_UTIMENSAT_FAILED, - LG_MSG_PTHREAD_NAMING_FAILED, - LG_MSG_SYSCALL_RETURNS_WRONG, - LG_MSG_XXH64_TO_GFID_FAILED -); +GLFS_MSGID( + LIBGLUSTERFS, LG_MSG_ASPRINTF_FAILED, LG_MSG_INVALID_ENTRY, + LG_MSG_COUNT_LESS_THAN_ZERO, LG_MSG_COUNT_LESS_THAN_DATA_PAIRS, + LG_MSG_VALUE_LENGTH_LESS_THAN_ZERO, LG_MSG_PAIRS_LESS_THAN_COUNT, + LG_MSG_KEY_OR_VALUE_NULL, LG_MSG_FAILED_TO_LOG_DICT, + LG_MSG_NULL_VALUE_IN_DICT, LG_MSG_DIR_OP_FAILED, + LG_MSG_STORE_HANDLE_CREATE_FAILED, LG_MSG_FILE_OP_FAILED, + LG_MSG_FILE_STAT_FAILED, LG_MSG_LOCK_FAILED, LG_MSG_UNLOCK_FAILED, + LG_MSG_DICT_SERIAL_FAILED, LG_MSG_DICT_UNSERIAL_FAILED, LG_MSG_NO_MEMORY, + LG_MSG_VOLUME_ERROR, LG_MSG_SUB_VOLUME_ERROR, LG_MSG_SYNTAX_ERROR, + LG_MSG_BACKTICK_PARSE_FAILED, LG_MSG_BUFFER_ERROR, LG_MSG_STRDUP_ERROR, + LG_MSG_HASH_FUNC_ERROR, LG_MSG_GET_BUCKET_FAILED, LG_MSG_INSERT_FAILED, + LG_MSG_OUT_OF_RANGE, LG_MSG_VALIDATE_RETURNS, LG_MSG_VALIDATE_REC_FAILED, + LG_MSG_RB_TABLE_CREATE_FAILED, LG_MSG_PATH_NOT_FOUND, + LG_MSG_EXPAND_FD_TABLE_FAILED, LG_MSG_MAPPING_FAILED, + LG_MSG_INIT_IOBUF_FAILED, LG_MSG_PAGE_SIZE_EXCEEDED, LG_MSG_ARENA_NOT_FOUND, + LG_MSG_IOBUF_NOT_FOUND, LG_MSG_POOL_NOT_FOUND, LG_MSG_SET_ATTRIBUTE_FAILED, + LG_MSG_READ_ATTRIBUTE_FAILED, LG_MSG_UNMOUNT_FAILED, + LG_MSG_LATENCY_MEASUREMENT_STATE, LG_MSG_NO_PERM, LG_MSG_NO_KEY, + LG_MSG_DICT_NULL, LG_MSG_INIT_TIMER_FAILED, LG_MSG_FD_ANONYMOUS_FAILED, + LG_MSG_FD_CREATE_FAILED, LG_MSG_BUFFER_FULL, LG_MSG_FWRITE_FAILED, + LG_MSG_PRINT_FAILED, LG_MSG_MEM_POOL_DESTROY, + LG_MSG_EXPAND_CLIENT_TABLE_FAILED, LG_MSG_DISCONNECT_CLIENT, + LG_MSG_PIPE_CREATE_FAILED, LG_MSG_SET_PIPE_FAILED, + LG_MSG_REGISTER_PIPE_FAILED, LG_MSG_POLL_IGNORE_MULTIPLE_THREADS, + LG_MSG_INDEX_NOT_FOUND, LG_MSG_EPOLL_FD_CREATE_FAILED, + LG_MSG_SLOT_NOT_FOUND, LG_MSG_STALE_FD_FOUND, LG_MSG_GENERATION_MISMATCH, + LG_MSG_PTHREAD_KEY_CREATE_FAILED, LG_MSG_TRANSLATOR_INIT_FAILED, + LG_MSG_UUID_BUF_INIT_FAILED, LG_MSG_LKOWNER_BUF_INIT_FAILED, + LG_MSG_SYNCTASK_INIT_FAILED, LG_MSG_SYNCOPCTX_INIT_FAILED, + LG_MSG_GLOBAL_INIT_FAILED, LG_MSG_PTHREAD_FAILED, LG_MSG_DIR_IS_SYMLINK, + LG_MSG_RESOLVE_HOSTNAME_FAILED, LG_MSG_GETADDRINFO_FAILED, + LG_MSG_GETNAMEINFO_FAILED, LG_MSG_PATH_ERROR, LG_MSG_INET_PTON_FAILED, + LG_MSG_NEGATIVE_NUM_PASSED, LG_MSG_GETHOSTNAME_FAILED, + LG_MSG_RESERVED_PORTS_ERROR, LG_MSG_INVALID_PORT, LG_MSG_INVALID_FAMILY, + LG_MSG_CONVERSION_FAILED, LG_MSG_SKIP_HEADER_FAILED, LG_MSG_INVALID_LOG, + LG_MSG_UTIMES_FAILED, LG_MSG_BACKTRACE_SAVE_FAILED, LG_MSG_INIT_FAILED, + LG_MSG_VALIDATION_FAILED, LG_MSG_GRAPH_ERROR, LG_MSG_UNKNOWN_OPTIONS_FAILED, + LG_MSG_CTX_NULL, LG_MSG_TMPFILE_CREATE_FAILED, LG_MSG_DLOPEN_FAILED, + LG_MSG_LOAD_FAILED, LG_MSG_DLSYM_ERROR, LG_MSG_TREE_NOT_FOUND, + LG_MSG_PER_DENTRY, LG_MSG_DENTRY, LG_MSG_GETIFADDRS_FAILED, + LG_MSG_REGEX_OP_FAILED, LG_MSG_FRAME_ERROR, LG_MSG_SET_PARAM_FAILED, + LG_MSG_GET_PARAM_FAILED, LG_MSG_PREPARE_FAILED, LG_MSG_EXEC_FAILED, + LG_MSG_BINDING_FAILED, LG_MSG_DELETE_FAILED, LG_MSG_GET_ID_FAILED, + LG_MSG_CREATE_FAILED, LG_MSG_PARSE_FAILED, LG_MSG_GETCONTEXT_FAILED, + LG_MSG_UPDATE_FAILED, LG_MSG_QUERY_CALL_BACK_FAILED, + LG_MSG_GET_RECORD_FAILED, LG_MSG_DB_ERROR, LG_MSG_CONNECTION_ERROR, + LG_MSG_NOT_MULTITHREAD_MODE, LG_MSG_SKIP_PATH, LG_MSG_INVALID_FOP, + LG_MSG_QUERY_FAILED, LG_MSG_CLEAR_COUNTER_FAILED, LG_MSG_LOCK_LIST_FAILED, + LG_MSG_UNLOCK_LIST_FAILED, LG_MSG_ADD_TO_LIST_FAILED, LG_MSG_INIT_DB_FAILED, + LG_MSG_DELETE_FROM_LIST_FAILED, LG_MSG_CLOSE_CONNECTION_FAILED, + LG_MSG_INSERT_OR_UPDATE_FAILED, LG_MSG_FIND_OP_FAILED, + LG_MSG_CONNECTION_INIT_FAILED, LG_MSG_COMPLETED_TASK, LG_MSG_WAKE_UP_ZOMBIE, + LG_MSG_REWAITING_TASK, LG_MSG_SLEEP_ZOMBIE, LG_MSG_SWAPCONTEXT_FAILED, + LG_MSG_UNSUPPORTED_PLUGIN, LG_MSG_INVALID_DB_TYPE, LG_MSG_UNDERSIZED_BUF, + LG_MSG_DATA_CONVERSION_ERROR, LG_MSG_DICT_ERROR, LG_MSG_IOBUFS_NOT_FOUND, + LG_MSG_ENTRIES_NULL, LG_MSG_FD_NOT_FOUND_IN_FDTABLE, + LG_MSG_REALLOC_FOR_FD_PTR_FAILED, LG_MSG_DICT_SET_FAILED, LG_MSG_NULL_PTR, + LG_MSG_RBTHASH_INIT_BUCKET_FAILED, LG_MSG_ASSERTION_FAILED, + LG_MSG_HOSTNAME_NULL, LG_MSG_INVALID_IPV4_FORMAT, + LG_MSG_CTX_CLEANUP_STARTED, LG_MSG_TIMER_REGISTER_ERROR, + LG_MSG_PTR_HEADER_CORRUPTED, LG_MSG_INVALID_UPLINK, LG_MSG_CLIENT_NULL, + LG_MSG_XLATOR_DOES_NOT_IMPLEMENT, LG_MSG_DENTRY_NOT_FOUND, + LG_MSG_INODE_NOT_FOUND, LG_MSG_INODE_TABLE_NOT_FOUND, + LG_MSG_DENTRY_CREATE_FAILED, LG_MSG_INODE_CONTEXT_FREED, + LG_MSG_UNKNOWN_LOCK_TYPE, LG_MSG_UNLOCK_BEFORE_LOCK, + LG_MSG_LOCK_OWNER_ERROR, LG_MSG_MEMPOOL_PTR_NULL, + LG_MSG_QUOTA_XATTRS_MISSING, LG_MSG_INVALID_STRING, LG_MSG_BIND_REF, + LG_MSG_REF_COUNT, LG_MSG_INVALID_ARG, LG_MSG_VOL_OPTION_ADD, + LG_MSG_XLATOR_OPTION_INVALID, LG_MSG_GETTIMEOFDAY_FAILED, + LG_MSG_GRAPH_INIT_FAILED, LG_MSG_EVENT_NOTIFY_FAILED, + LG_MSG_ACTIVE_GRAPH_NULL, LG_MSG_VOLFILE_PARSE_ERROR, LG_MSG_FD_INODE_NULL, + LG_MSG_INVALID_VOLFILE_ENTRY, LG_MSG_PER_DENTRY_FAILED, + LG_MSG_PARENT_DENTRY_NOT_FOUND, LG_MSG_DENTRY_CYCLIC_LOOP, + LG_MSG_INVALID_POLL_IN, LG_MSG_INVALID_POLL_OUT, LG_MSG_EPOLL_FD_ADD_FAILED, + LG_MSG_EPOLL_FD_DEL_FAILED, LG_MSG_EPOLL_FD_MODIFY_FAILED, + LG_MSG_STARTED_EPOLL_THREAD, LG_MSG_EXITED_EPOLL_THREAD, + LG_MSG_START_EPOLL_THREAD_FAILED, LG_MSG_FALLBACK_TO_POLL, + LG_MSG_QUOTA_CONF_ERROR, LG_MSG_RBTHASH_GET_ENTRY_FAILED, + LG_MSG_RBTHASH_GET_BUCKET_FAILED, LG_MSG_RBTHASH_INSERT_FAILED, + LG_MSG_RBTHASH_INIT_ENTRY_FAILED, LG_MSG_TMPFILE_DELETE_FAILED, + LG_MSG_MEMPOOL_INVALID_FREE, LG_MSG_LOCK_FAILURE, LG_MSG_SET_LOG_LEVEL, + LG_MSG_VERIFY_PLATFORM, LG_MSG_RUNNER_LOG, LG_MSG_LEASEID_BUF_INIT_FAILED, + LG_MSG_PTHREAD_ATTR_INIT_FAILED, LG_MSG_INVALID_INODE_LIST, + LG_MSG_COMPACT_FAILED, LG_MSG_COMPACT_STATUS, LG_MSG_UTIMENSAT_FAILED, + LG_MSG_PTHREAD_NAMING_FAILED, LG_MSG_SYSCALL_RETURNS_WRONG, + LG_MSG_XXH64_TO_GFID_FAILED); #endif /* !_LG_MESSAGES_H_ */ - diff --git a/libglusterfs/src/list.h b/libglusterfs/src/list.h index b8f9a6eebd8..221a710ca30 100644 --- a/libglusterfs/src/list.h +++ b/libglusterfs/src/list.h @@ -11,40 +11,36 @@ #ifndef _LLIST_H #define _LLIST_H - struct list_head { - struct list_head *next; - struct list_head *prev; + struct list_head *next; + struct list_head *prev; }; - -#define INIT_LIST_HEAD(head) do { \ - (head)->next = (head)->prev = head; \ - } while (0) - +#define INIT_LIST_HEAD(head) \ + do { \ + (head)->next = (head)->prev = head; \ + } while (0) static inline void -list_add (struct list_head *new, struct list_head *head) +list_add(struct list_head *new, struct list_head *head) { - new->prev = head; - new->next = head->next; + new->prev = head; + new->next = head->next; - new->prev->next = new; - new->next->prev = new; + new->prev->next = new; + new->next->prev = new; } - static inline void -list_add_tail (struct list_head *new, struct list_head *head) +list_add_tail(struct list_head *new, struct list_head *head) { - new->next = head; - new->prev = head->prev; + new->next = head; + new->prev = head->prev; - new->prev->next = new; - new->next->prev = new; + new->prev->next = new; + new->next->prev = new; } - /* This function will insert the element to the list in a order. Order will be based on the compare function provided as a input. If element to be inserted in ascending order compare should return: @@ -52,143 +48,133 @@ list_add_tail (struct list_head *new, struct list_head *head) >0: if first argument is greater than second argument <0: if first argument is less than second argument */ static inline void -list_add_order (struct list_head *new, struct list_head *head, - int (*compare)(struct list_head *, struct list_head *)) +list_add_order(struct list_head *new, struct list_head *head, + int (*compare)(struct list_head *, struct list_head *)) { - struct list_head *pos = head->prev; + struct list_head *pos = head->prev; - while ( pos != head ) { - if (compare(new, pos) >= 0) - break; + while (pos != head) { + if (compare(new, pos) >= 0) + break; - /* Iterate the list in the reverse order. This will have - better efficiency if the elements are inserted in the - ascending order */ - pos = pos->prev; - } + /* Iterate the list in the reverse order. This will have + better efficiency if the elements are inserted in the + ascending order */ + pos = pos->prev; + } - list_add (new, pos); + list_add(new, pos); } static inline void -list_del (struct list_head *old) +list_del(struct list_head *old) { - old->prev->next = old->next; - old->next->prev = old->prev; + old->prev->next = old->next; + old->next->prev = old->prev; - old->next = (void *)0xbabebabe; - old->prev = (void *)0xcafecafe; + old->next = (void *)0xbabebabe; + old->prev = (void *)0xcafecafe; } - static inline void -list_del_init (struct list_head *old) +list_del_init(struct list_head *old) { - old->prev->next = old->next; - old->next->prev = old->prev; + old->prev->next = old->next; + old->next->prev = old->prev; - old->next = old; - old->prev = old; + old->next = old; + old->prev = old; } - static inline void -list_move (struct list_head *list, struct list_head *head) +list_move(struct list_head *list, struct list_head *head) { - list_del (list); - list_add (list, head); + list_del(list); + list_add(list, head); } - static inline void -list_move_tail (struct list_head *list, struct list_head *head) +list_move_tail(struct list_head *list, struct list_head *head) { - list_del (list); - list_add_tail (list, head); + list_del(list); + list_add_tail(list, head); } - static inline int -list_empty (struct list_head *head) +list_empty(struct list_head *head) { - return (head->next == head); + return (head->next == head); } - static inline void -__list_splice (struct list_head *list, struct list_head *head) +__list_splice(struct list_head *list, struct list_head *head) { - (list->prev)->next = (head->next); - (head->next)->prev = (list->prev); + (list->prev)->next = (head->next); + (head->next)->prev = (list->prev); - (head)->next = (list->next); - (list->next)->prev = (head); + (head)->next = (list->next); + (list->next)->prev = (head); } - static inline void -list_splice (struct list_head *list, struct list_head *head) +list_splice(struct list_head *list, struct list_head *head) { - if (list_empty (list)) - return; + if (list_empty(list)) + return; - __list_splice (list, head); + __list_splice(list, head); } - /* Splice moves @list to the head of the list at @head. */ static inline void -list_splice_init (struct list_head *list, struct list_head *head) +list_splice_init(struct list_head *list, struct list_head *head) { - if (list_empty (list)) - return; + if (list_empty(list)) + return; - __list_splice (list, head); - INIT_LIST_HEAD (list); + __list_splice(list, head); + INIT_LIST_HEAD(list); } - static inline void -__list_append (struct list_head *list, struct list_head *head) +__list_append(struct list_head *list, struct list_head *head) { - (head->prev)->next = (list->next); - (list->next)->prev = (head->prev); - (head->prev) = (list->prev); - (list->prev)->next = head; + (head->prev)->next = (list->next); + (list->next)->prev = (head->prev); + (head->prev) = (list->prev); + (list->prev)->next = head; } - static inline void -list_append (struct list_head *list, struct list_head *head) +list_append(struct list_head *list, struct list_head *head) { - if (list_empty (list)) - return; + if (list_empty(list)) + return; - __list_append (list, head); + __list_append(list, head); } - /* Append moves @list to the end of @head */ static inline void -list_append_init (struct list_head *list, struct list_head *head) +list_append_init(struct list_head *list, struct list_head *head) { - if (list_empty (list)) - return; + if (list_empty(list)) + return; - __list_append (list, head); - INIT_LIST_HEAD (list); + __list_append(list, head); + INIT_LIST_HEAD(list); } static inline int -list_is_last (struct list_head *list, struct list_head *head) +list_is_last(struct list_head *list, struct list_head *head) { - return (list->next == head); + return (list->next == head); } static inline int list_is_singular(struct list_head *head) { - return !list_empty(head) && (head->next == head->prev); + return !list_empty(head) && (head->next == head->prev); } /** @@ -198,77 +184,75 @@ list_is_singular(struct list_head *head) * * If @old was empty, it will be overwritten. */ -static inline void list_replace(struct list_head *old, - struct list_head *new) +static inline void +list_replace(struct list_head *old, struct list_head *new) { - new->next = old->next; - new->next->prev = new; - new->prev = old->prev; - new->prev->next = new; + new->next = old->next; + new->next->prev = new; + new->prev = old->prev; + new->prev->next = new; } -static inline void list_replace_init(struct list_head *old, - struct list_head *new) +static inline void +list_replace_init(struct list_head *old, struct list_head *new) { - list_replace(old, new); - INIT_LIST_HEAD(old); + list_replace(old, new); + INIT_LIST_HEAD(old); } /** * list_rotate_left - rotate the list to the left * @head: the head of the list */ -static inline void list_rotate_left (struct list_head *head) +static inline void +list_rotate_left(struct list_head *head) { - struct list_head *first; + struct list_head *first; - if (!list_empty (head)) { - first = head->next; - list_move_tail (first, head); - } + if (!list_empty(head)) { + first = head->next; + list_move_tail(first, head); + } } -#define list_entry(ptr, type, member) \ - ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member))) - -#define list_first_entry(ptr, type, member) \ - list_entry((ptr)->next, type, member) - -#define list_last_entry(ptr, type, member) \ - list_entry((ptr)->prev, type, member) +#define list_entry(ptr, type, member) \ + ((type *)((char *)(ptr) - (unsigned long)(&((type *)0)->member))) -#define list_next_entry(pos, member) \ - list_entry((pos)->member.next, typeof(*(pos)), member) +#define list_first_entry(ptr, type, member) \ + list_entry((ptr)->next, type, member) -#define list_prev_entry(pos, member) \ - list_entry((pos)->member.prev, typeof(*(pos)), member) +#define list_last_entry(ptr, type, member) list_entry((ptr)->prev, type, member) -#define list_for_each(pos, head) \ - for (pos = (head)->next; pos != (head); pos = pos->next) +#define list_next_entry(pos, member) \ + list_entry((pos)->member.next, typeof(*(pos)), member) -#define list_for_each_entry(pos, head, member) \ - for (pos = list_entry((head)->next, typeof(*pos), member); \ - &pos->member != (head); \ - pos = list_entry(pos->member.next, typeof(*pos), member)) +#define list_prev_entry(pos, member) \ + list_entry((pos)->member.prev, typeof(*(pos)), member) +#define list_for_each(pos, head) \ + for (pos = (head)->next; pos != (head); pos = pos->next) -#define list_for_each_entry_safe(pos, n, head, member) \ - for (pos = list_entry((head)->next, typeof(*pos), member), \ - n = list_entry(pos->member.next, typeof(*pos), member); \ - &pos->member != (head); \ - pos = n, n = list_entry(n->member.next, typeof(*n), member)) +#define list_for_each_entry(pos, head, member) \ + for (pos = list_entry((head)->next, typeof(*pos), member); \ + &pos->member != (head); \ + pos = list_entry(pos->member.next, typeof(*pos), member)) -#define list_for_each_entry_reverse(pos, head, member) \ - for (pos = list_entry((head)->prev, typeof(*pos), member); \ - &pos->member != (head); \ - pos = list_entry(pos->member.prev, typeof(*pos), member)) +#define list_for_each_entry_safe(pos, n, head, member) \ + for (pos = list_entry((head)->next, typeof(*pos), member), \ + n = list_entry(pos->member.next, typeof(*pos), member); \ + &pos->member != (head); \ + pos = n, n = list_entry(n->member.next, typeof(*n), member)) +#define list_for_each_entry_reverse(pos, head, member) \ + for (pos = list_entry((head)->prev, typeof(*pos), member); \ + &pos->member != (head); \ + pos = list_entry(pos->member.prev, typeof(*pos), member)) -#define list_for_each_entry_safe_reverse(pos, n, head, member) \ - for (pos = list_entry((head)->prev, typeof(*pos), member), \ - n = list_entry(pos->member.prev, typeof(*pos), member); \ - &pos->member != (head); \ - pos = n, n = list_entry(n->member.prev, typeof(*n), member)) +#define list_for_each_entry_safe_reverse(pos, n, head, member) \ + for (pos = list_entry((head)->prev, typeof(*pos), member), \ + n = list_entry(pos->member.prev, typeof(*pos), member); \ + &pos->member != (head); \ + pos = n, n = list_entry(n->member.prev, typeof(*n), member)) /* * This list implementation has some advantages, but one disadvantage: you @@ -276,12 +260,14 @@ static inline void list_rotate_left (struct list_head *head) * address of the head has to be an argument for these macros. */ -#define list_next(ptr, head, type, member) \ - (((ptr)->member.next == head) ? NULL \ - : list_entry((ptr)->member.next, type, member)) +#define list_next(ptr, head, type, member) \ + (((ptr)->member.next == head) \ + ? NULL \ + : list_entry((ptr)->member.next, type, member)) -#define list_prev(ptr, head, type, member) \ - (((ptr)->member.prev == head) ? NULL \ - : list_entry((ptr)->member.prev, type, member)) +#define list_prev(ptr, head, type, member) \ + (((ptr)->member.prev == head) \ + ? NULL \ + : list_entry((ptr)->member.prev, type, member)) #endif /* _LLIST_H */ diff --git a/libglusterfs/src/lkowner.h b/libglusterfs/src/lkowner.h index 9712f176f30..b49e9af6bcb 100644 --- a/libglusterfs/src/lkowner.h +++ b/libglusterfs/src/lkowner.h @@ -15,79 +15,79 @@ /* LKOWNER to string functions */ static inline void -lkowner_unparse (gf_lkowner_t *lkowner, char *buf, int buf_len) +lkowner_unparse(gf_lkowner_t *lkowner, char *buf, int buf_len) { - int i = 0; - int j = 0; + int i = 0; + int j = 0; - for (i = 0; i < lkowner->len; i++) { - if (i && !(i % 8)) { - buf[j] = '-'; - j++; - } - sprintf (&buf[j], "%02hhx", lkowner->data[i]); - j += 2; - if (j == buf_len) - break; + for (i = 0; i < lkowner->len; i++) { + if (i && !(i % 8)) { + buf[j] = '-'; + j++; } - if (j < buf_len) - buf[j] = '\0'; + sprintf(&buf[j], "%02hhx", lkowner->data[i]); + j += 2; + if (j == buf_len) + break; + } + if (j < buf_len) + buf[j] = '\0'; } static inline void -set_lk_owner_from_ptr (gf_lkowner_t *lkowner, void *data) +set_lk_owner_from_ptr(gf_lkowner_t *lkowner, void *data) { - int i = 0; - int j = 0; + int i = 0; + int j = 0; - lkowner->len = sizeof (unsigned long); - for (i = 0, j = 0; i < lkowner->len; i++, j += 8) { - lkowner->data[i] = (char)((((unsigned long)data) >> j) & 0xff); - } + lkowner->len = sizeof(unsigned long); + for (i = 0, j = 0; i < lkowner->len; i++, j += 8) { + lkowner->data[i] = (char)((((unsigned long)data) >> j) & 0xff); + } } static inline void -set_lk_owner_from_uint64 (gf_lkowner_t *lkowner, uint64_t data) +set_lk_owner_from_uint64(gf_lkowner_t *lkowner, uint64_t data) { - int i = 0; - int j = 0; + int i = 0; + int j = 0; - lkowner->len = 8; - for (i = 0, j = 0; i < lkowner->len; i++, j += 8) { - lkowner->data[i] = (char)((data >> j) & 0xff); - } + lkowner->len = 8; + for (i = 0, j = 0; i < lkowner->len; i++, j += 8) { + lkowner->data[i] = (char)((data >> j) & 0xff); + } } /* Return true if the locks have the same owner */ static inline int -is_same_lkowner (gf_lkowner_t *l1, gf_lkowner_t *l2) +is_same_lkowner(gf_lkowner_t *l1, gf_lkowner_t *l2) { - return ((l1->len == l2->len) && !memcmp(l1->data, l2->data, l1->len)); + return ((l1->len == l2->len) && !memcmp(l1->data, l2->data, l1->len)); } static inline int -is_lk_owner_null (gf_lkowner_t *lkowner) +is_lk_owner_null(gf_lkowner_t *lkowner) { - int is_null = 1; - int i = 0; + int is_null = 1; + int i = 0; - if (lkowner == NULL || lkowner->len == 0) - goto out; + if (lkowner == NULL || lkowner->len == 0) + goto out; - for (i = 0; i < lkowner->len; i++) { - if (lkowner->data[i] != 0) { - is_null = 0; - break; - } + for (i = 0; i < lkowner->len; i++) { + if (lkowner->data[i] != 0) { + is_null = 0; + break; } + } out: - return is_null; + return is_null; } static inline void -lk_owner_copy (gf_lkowner_t *dst, gf_lkowner_t *src) +lk_owner_copy(gf_lkowner_t *dst, gf_lkowner_t *src) { - dst->len = src->len; - memcpy(dst->data, src->data, src->len); + dst->len = src->len; + memcpy(dst->data, src->data, src->len); } #endif /* _LK_OWNER_H */ diff --git a/libglusterfs/src/locking.h b/libglusterfs/src/locking.h index 71b6a286e6c..43cc87735d1 100644 --- a/libglusterfs/src/locking.h +++ b/libglusterfs/src/locking.h @@ -13,7 +13,7 @@ #include <pthread.h> -#if defined (GF_DARWIN_HOST_OS) +#if defined(GF_DARWIN_HOST_OS) #include <libkern/OSAtomic.h> #define pthread_spinlock_t OSSpinLock #define pthread_spin_lock(l) OSSpinLockLock(l) @@ -22,11 +22,11 @@ #define pthread_spin_init(l, v) (*l = v) #endif -#if defined (HAVE_SPINLOCK) +#if defined(HAVE_SPINLOCK) typedef union { - pthread_spinlock_t spinlock; - pthread_mutex_t mutex; + pthread_spinlock_t spinlock; + pthread_mutex_t mutex; } gf_lock_t; #if !defined(LOCKING_IMPL) @@ -47,25 +47,25 @@ extern int use_spinlocks; * worth the extra complexity, but for now this way seems preferable. */ -#define LOCK_INIT(x) (use_spinlocks \ - ? pthread_spin_init (&((x)->spinlock), 0) \ - : pthread_mutex_init (&((x)->mutex), 0)) +#define LOCK_INIT(x) \ + (use_spinlocks ? pthread_spin_init(&((x)->spinlock), 0) \ + : pthread_mutex_init(&((x)->mutex), 0)) -#define LOCK(x) (use_spinlocks \ - ? pthread_spin_lock (&((x)->spinlock)) \ - : pthread_mutex_lock (&((x)->mutex))) +#define LOCK(x) \ + (use_spinlocks ? pthread_spin_lock(&((x)->spinlock)) \ + : pthread_mutex_lock(&((x)->mutex))) -#define TRY_LOCK(x) (use_spinlocks \ - ? pthread_spin_trylock (&((x)->spinlock)) \ - : pthread_mutex_trylock (&((x)->mutex))) +#define TRY_LOCK(x) \ + (use_spinlocks ? pthread_spin_trylock(&((x)->spinlock)) \ + : pthread_mutex_trylock(&((x)->mutex))) -#define UNLOCK(x) (use_spinlocks \ - ? pthread_spin_unlock (&((x)->spinlock)) \ - : pthread_mutex_unlock (&((x)->mutex))) +#define UNLOCK(x) \ + (use_spinlocks ? pthread_spin_unlock(&((x)->spinlock)) \ + : pthread_mutex_unlock(&((x)->mutex))) -#define LOCK_DESTROY(x) (use_spinlocks \ - ? pthread_spin_destroy (&((x)->spinlock)) \ - : pthread_mutex_destroy (&((x)->mutex))) +#define LOCK_DESTROY(x) \ + (use_spinlocks ? pthread_spin_destroy(&((x)->spinlock)) \ + : pthread_mutex_destroy(&((x)->mutex))) #endif @@ -73,13 +73,12 @@ extern int use_spinlocks; typedef pthread_mutex_t gf_lock_t; -#define LOCK_INIT(x) pthread_mutex_init (x, 0) -#define LOCK(x) pthread_mutex_lock (x) -#define TRY_LOCK(x) pthread_mutex_trylock (x) -#define UNLOCK(x) pthread_mutex_unlock (x) -#define LOCK_DESTROY(x) pthread_mutex_destroy (x) +#define LOCK_INIT(x) pthread_mutex_init(x, 0) +#define LOCK(x) pthread_mutex_lock(x) +#define TRY_LOCK(x) pthread_mutex_trylock(x) +#define UNLOCK(x) pthread_mutex_unlock(x) +#define LOCK_DESTROY(x) pthread_mutex_destroy(x) #endif /* HAVE_SPINLOCK */ - #endif /* _LOCKING_H */ diff --git a/libglusterfs/src/logging.h b/libglusterfs/src/logging.h index 94acd960b50..f2294488fae 100644 --- a/libglusterfs/src/logging.h +++ b/libglusterfs/src/logging.h @@ -19,27 +19,27 @@ #include "list.h" #ifdef GF_DARWIN_HOST_OS -#define GF_PRI_FSBLK "u" -#define GF_PRI_DEV PRId32 -#define GF_PRI_INODE PRIu64 -#define GF_PRI_NLINK PRIu32 -#define GF_PRI_SECOND "ld" -#define GF_PRI_SUSECONDS "06d" -#define GF_PRI_SNSECONDS "09ld" -#define GF_PRI_USEC "d" +#define GF_PRI_FSBLK "u" +#define GF_PRI_DEV PRId32 +#define GF_PRI_INODE PRIu64 +#define GF_PRI_NLINK PRIu32 +#define GF_PRI_SECOND "ld" +#define GF_PRI_SUSECONDS "06d" +#define GF_PRI_SNSECONDS "09ld" +#define GF_PRI_USEC "d" #else -#define GF_PRI_FSBLK PRIu64 -#define GF_PRI_DEV PRIu64 -#define GF_PRI_INODE PRIu64 -#define GF_PRI_NLINK PRIu32 -#define GF_PRI_SECOND "lu" -#define GF_PRI_SUSECONDS "06ld" -#define GF_PRI_SNSECONDS "09ld" -#define GF_PRI_USEC "ld" +#define GF_PRI_FSBLK PRIu64 +#define GF_PRI_DEV PRIu64 +#define GF_PRI_INODE PRIu64 +#define GF_PRI_NLINK PRIu32 +#define GF_PRI_SECOND "lu" +#define GF_PRI_SUSECONDS "06ld" +#define GF_PRI_SNSECONDS "09ld" +#define GF_PRI_USEC "ld" #endif -#define GF_PRI_BLKSIZE PRId32 -#define GF_PRI_SIZET "zu" -#define GF_PRI_ATOMIC PRIu64 +#define GF_PRI_BLKSIZE PRId32 +#define GF_PRI_SIZET "zu" +#define GF_PRI_ATOMIC PRIu64 #ifdef GF_DARWIN_HOST_OS #define GF_PRI_TIME "ld" @@ -49,305 +49,343 @@ #if 0 /* Syslog definitions :-) */ -#define LOG_EMERG 0 /* system is unusable */ -#define LOG_ALERT 1 /* action must be taken immediately */ -#define LOG_CRIT 2 /* critical conditions */ -#define LOG_ERR 3 /* error conditions */ -#define LOG_WARNING 4 /* warning conditions */ -#define LOG_NOTICE 5 /* normal but significant condition */ -#define LOG_INFO 6 /* informational */ -#define LOG_DEBUG 7 /* debug-level messages */ +#define LOG_EMERG 0 /* system is unusable */ +#define LOG_ALERT 1 /* action must be taken immediately */ +#define LOG_CRIT 2 /* critical conditions */ +#define LOG_ERR 3 /* error conditions */ +#define LOG_WARNING 4 /* warning conditions */ +#define LOG_NOTICE 5 /* normal but significant condition */ +#define LOG_INFO 6 /* informational */ +#define LOG_DEBUG 7 /* debug-level messages */ #endif -#define GF_LOG_FORMAT_NO_MSG_ID "no-msg-id" -#define GF_LOG_FORMAT_WITH_MSG_ID "with-msg-id" +#define GF_LOG_FORMAT_NO_MSG_ID "no-msg-id" +#define GF_LOG_FORMAT_WITH_MSG_ID "with-msg-id" -#define GF_LOGGER_GLUSTER_LOG "gluster-log" -#define GF_LOGGER_SYSLOG "syslog" +#define GF_LOGGER_GLUSTER_LOG "gluster-log" +#define GF_LOGGER_SYSLOG "syslog" typedef enum { - GF_LOG_NONE, - GF_LOG_EMERG, - GF_LOG_ALERT, - GF_LOG_CRITICAL, /* fatal errors */ - GF_LOG_ERROR, /* major failures (not necessarily fatal) */ - GF_LOG_WARNING, /* info about normal operation */ - GF_LOG_NOTICE, - GF_LOG_INFO, /* Normal information */ - GF_LOG_DEBUG, /* internal errors */ - GF_LOG_TRACE, /* full trace of operation */ + GF_LOG_NONE, + GF_LOG_EMERG, + GF_LOG_ALERT, + GF_LOG_CRITICAL, /* fatal errors */ + GF_LOG_ERROR, /* major failures (not necessarily fatal) */ + GF_LOG_WARNING, /* info about normal operation */ + GF_LOG_NOTICE, + GF_LOG_INFO, /* Normal information */ + GF_LOG_DEBUG, /* internal errors */ + GF_LOG_TRACE, /* full trace of operation */ } gf_loglevel_t; /* format for the logs */ typedef enum { - gf_logformat_traditional = 0, /* Format as in gluster 3.5 */ - gf_logformat_withmsgid, /* Format enhanced with MsgID, ident, errstr */ - gf_logformat_cee /* log enhanced format in cee */ + gf_logformat_traditional = 0, /* Format as in gluster 3.5 */ + gf_logformat_withmsgid, /* Format enhanced with MsgID, ident, errstr */ + gf_logformat_cee /* log enhanced format in cee */ } gf_log_format_t; /* log infrastructure to log to */ typedef enum { - gf_logger_glusterlog = 0, /* locations and files as in gluster 3.5 */ - gf_logger_syslog /* log to (r)syslog, based on (r)syslog conf */ - /* NOTE: In the future journald, lumberjack, next new thing here */ + gf_logger_glusterlog = 0, /* locations and files as in gluster 3.5 */ + gf_logger_syslog /* log to (r)syslog, based on (r)syslog conf */ + /* NOTE: In the future journald, lumberjack, next new thing here */ } gf_log_logger_t; -#define DEFAULT_LOG_FILE_DIRECTORY DATADIR "/log/glusterfs" -#define DEFAULT_QUOTA_CRAWL_LOG_DIRECTORY DATADIR "/log/glusterfs/quota_crawl" -#define DEFAULT_LOG_LEVEL GF_LOG_INFO +#define DEFAULT_LOG_FILE_DIRECTORY DATADIR "/log/glusterfs" +#define DEFAULT_QUOTA_CRAWL_LOG_DIRECTORY DATADIR "/log/glusterfs/quota_crawl" +#define DEFAULT_LOG_LEVEL GF_LOG_INFO typedef struct gf_log_handle_ { - pthread_mutex_t logfile_mutex; - uint8_t logrotate; - uint8_t cmd_history_logrotate; - gf_loglevel_t loglevel; - int gf_log_syslog; - gf_loglevel_t sys_log_level; - char *filename; - FILE *logfile; - FILE *gf_log_logfile; - char *cmd_log_filename; - FILE *cmdlogfile; - gf_log_logger_t logger; - gf_log_format_t logformat; - char *ident; - int log_control_file_found; - struct list_head lru_queue; - uint32_t lru_size; - uint32_t lru_cur_size; - uint32_t timeout; - pthread_mutex_t log_buf_lock; - struct _gf_timer *log_flush_timer; - int localtime; + pthread_mutex_t logfile_mutex; + uint8_t logrotate; + uint8_t cmd_history_logrotate; + gf_loglevel_t loglevel; + int gf_log_syslog; + gf_loglevel_t sys_log_level; + char *filename; + FILE *logfile; + FILE *gf_log_logfile; + char *cmd_log_filename; + FILE *cmdlogfile; + gf_log_logger_t logger; + gf_log_format_t logformat; + char *ident; + int log_control_file_found; + struct list_head lru_queue; + uint32_t lru_size; + uint32_t lru_cur_size; + uint32_t timeout; + pthread_mutex_t log_buf_lock; + struct _gf_timer *log_flush_timer; + int localtime; } gf_log_handle_t; - typedef struct log_buf_ { - char *msg; - uint64_t msg_id; - int errnum; - struct timeval oldest; - struct timeval latest; - char *domain; - char *file; - char *function; - int32_t line; - gf_loglevel_t level; - int refcount; - int graph_id; - struct list_head msg_list; + char *msg; + uint64_t msg_id; + int errnum; + struct timeval oldest; + struct timeval latest; + char *domain; + char *file; + char *function; + int32_t line; + gf_loglevel_t level; + int refcount; + int graph_id; + struct list_head msg_list; } log_buf_t; -void gf_log_globals_init (void *ctx, gf_loglevel_t level); -int gf_log_init (void *data, const char *filename, const char *ident); +void +gf_log_globals_init(void *ctx, gf_loglevel_t level); +int +gf_log_init(void *data, const char *filename, const char *ident); -void gf_log_logrotate (int signum); +void +gf_log_logrotate(int signum); -void gf_log_cleanup (void); +void +gf_log_cleanup(void); /* Internal interfaces to log messages with message IDs */ -int _gf_msg (const char *domain, const char *file, - const char *function, int32_t line, gf_loglevel_t level, - int errnum, int trace, uint64_t msgid, const char *fmt, ...) - __attribute__ ((__format__ (__printf__, 9, 10))); - -void _gf_msg_backtrace_nomem (gf_loglevel_t level, int stacksize); - -int _gf_msg_plain (gf_loglevel_t level, const char *fmt, ...) - __attribute__ ((__format__ (__printf__, 2, 3))); +int +_gf_msg(const char *domain, const char *file, const char *function, + int32_t line, gf_loglevel_t level, int errnum, int trace, + uint64_t msgid, const char *fmt, ...) + __attribute__((__format__(__printf__, 9, 10))); -int _gf_msg_plain_nomem (gf_loglevel_t level, const char *msg); +void +_gf_msg_backtrace_nomem(gf_loglevel_t level, int stacksize); -int _gf_msg_vplain (gf_loglevel_t level, const char *fmt, va_list ap); +int +_gf_msg_plain(gf_loglevel_t level, const char *fmt, ...) + __attribute__((__format__(__printf__, 2, 3))); -int _gf_msg_nomem (const char *domain, const char *file, - const char *function, int line, gf_loglevel_t level, - size_t size); +int +_gf_msg_plain_nomem(gf_loglevel_t level, const char *msg); -int _gf_log (const char *domain, const char *file, - const char *function, int32_t line, gf_loglevel_t level, - const char *fmt, ...) - __attribute__ ((__format__ (__printf__, 6, 7))); +int +_gf_msg_vplain(gf_loglevel_t level, const char *fmt, va_list ap); -int _gf_log_callingfn (const char *domain, const char *file, - const char *function, int32_t line, gf_loglevel_t level, - const char *fmt, ...) - __attribute__ ((__format__ (__printf__, 6, 7))); +int +_gf_msg_nomem(const char *domain, const char *file, const char *function, + int line, gf_loglevel_t level, size_t size); -int _gf_log_eh (const char *function, const char *fmt, ...); +int +_gf_log(const char *domain, const char *file, const char *function, + int32_t line, gf_loglevel_t level, const char *fmt, ...) + __attribute__((__format__(__printf__, 6, 7))); +int +_gf_log_callingfn(const char *domain, const char *file, const char *function, + int32_t line, gf_loglevel_t level, const char *fmt, ...) + __attribute__((__format__(__printf__, 6, 7))); +int +_gf_log_eh(const char *function, const char *fmt, ...); /* treat GF_LOG_TRACE and GF_LOG_NONE as LOG_DEBUG and * other level as is */ -#define SET_LOG_PRIO(level, priority) do { \ - if (GF_LOG_TRACE == (level) || GF_LOG_NONE == (level)) { \ - priority = LOG_DEBUG; \ - } else { \ - priority = (level) - 1; \ - } \ - } while (0) +#define SET_LOG_PRIO(level, priority) \ + do { \ + if (GF_LOG_TRACE == (level) || GF_LOG_NONE == (level)) { \ + priority = LOG_DEBUG; \ + } else { \ + priority = (level)-1; \ + } \ + } while (0) /* extract just the file name from the path */ -#define GET_FILE_NAME_TO_LOG(file, basename) do { \ - basename = strrchr ((file), '/'); \ - if (basename) \ - basename++; \ - else \ - basename = (file); \ - } while (0) - -#define PRINT_SIZE_CHECK(ret, label, strsize) do { \ - if (ret < 0) \ - goto label; \ - if ((strsize - ret) > 0) { \ - strsize -= ret; \ - } else { \ - ret = 0; \ - goto label; \ - } \ - } while (0) - -#define FMT_WARN(fmt...) do { if (0) printf (fmt); } while (0) +#define GET_FILE_NAME_TO_LOG(file, basename) \ + do { \ + basename = strrchr((file), '/'); \ + if (basename) \ + basename++; \ + else \ + basename = (file); \ + } while (0) + +#define PRINT_SIZE_CHECK(ret, label, strsize) \ + do { \ + if (ret < 0) \ + goto label; \ + if ((strsize - ret) > 0) { \ + strsize -= ret; \ + } else { \ + ret = 0; \ + goto label; \ + } \ + } while (0) + +#define FMT_WARN(fmt...) \ + do { \ + if (0) \ + printf(fmt); \ + } while (0) /* Interface to log messages with message IDs */ -#define gf_msg(dom, level, errnum, msgid, fmt...) do { \ - _gf_msg (dom, __FILE__, __FUNCTION__, __LINE__, \ - level, errnum, 0, msgid, ##fmt); \ - } while (0) +#define gf_msg(dom, level, errnum, msgid, fmt...) \ + do { \ + _gf_msg(dom, __FILE__, __FUNCTION__, __LINE__, level, errnum, 0, \ + msgid, ##fmt); \ + } while (0) /* no frills, no thrills, just a vanilla message, used to print the graph */ -#define gf_msg_plain(level, fmt...) do { \ - _gf_msg_plain (level, ##fmt); \ - } while (0) - -#define gf_msg_plain_nomem(level, msg) do { \ - _gf_msg_plain_nomem (level, msg); \ - } while (0) - -#define gf_msg_vplain(level, fmt, va) do { \ - _gf_msg_vplain (level, fmt, va); \ - } while (0) - -#define gf_msg_backtrace_nomem(level, stacksize) do { \ - _gf_msg_backtrace_nomem (level, stacksize); \ - } while (0) - -#define gf_msg_callingfn(dom, level, errnum, msgid, fmt...) do { \ - _gf_msg (dom, __FILE__, __FUNCTION__, __LINE__, \ - level, errnum, 1, msgid, ##fmt); \ - } while (0) +#define gf_msg_plain(level, fmt...) \ + do { \ + _gf_msg_plain(level, ##fmt); \ + } while (0) + +#define gf_msg_plain_nomem(level, msg) \ + do { \ + _gf_msg_plain_nomem(level, msg); \ + } while (0) + +#define gf_msg_vplain(level, fmt, va) \ + do { \ + _gf_msg_vplain(level, fmt, va); \ + } while (0) + +#define gf_msg_backtrace_nomem(level, stacksize) \ + do { \ + _gf_msg_backtrace_nomem(level, stacksize); \ + } while (0) + +#define gf_msg_callingfn(dom, level, errnum, msgid, fmt...) \ + do { \ + _gf_msg(dom, __FILE__, __FUNCTION__, __LINE__, level, errnum, 1, \ + msgid, ##fmt); \ + } while (0) /* No malloc or calloc should be called in this function */ -#define gf_msg_nomem(dom, level, size) do { \ - _gf_msg_nomem (dom, __FILE__, __FUNCTION__, __LINE__, \ - level, size); \ - } while (0) +#define gf_msg_nomem(dom, level, size) \ + do { \ + _gf_msg_nomem(dom, __FILE__, __FUNCTION__, __LINE__, level, size); \ + } while (0) /* Debug or trace messages do not need message IDs as these are more developer * related. Hence, the following abstractions are provided for the same */ -#define gf_msg_debug(dom, errnum, fmt...) do { \ - _gf_msg (dom, __FILE__, __FUNCTION__, __LINE__, \ - GF_LOG_DEBUG, errnum, 0, 0, ##fmt); \ - } while (0) - -#define gf_msg_trace(dom, errnum, fmt...) do { \ - _gf_msg (dom, __FILE__, __FUNCTION__, __LINE__, \ - GF_LOG_TRACE, errnum, 0, 0, ##fmt); \ - } while (0) - -#define gf_log(dom, level, fmt...) do { \ - FMT_WARN (fmt); \ - _gf_log (dom, __FILE__, __FUNCTION__, __LINE__, \ - level, ##fmt); \ - } while (0) - -#define gf_log_eh(fmt...) do { \ - FMT_WARN (fmt); \ - _gf_log_eh (__FUNCTION__, ##fmt); \ - } while (0) - -#define gf_log_callingfn(dom, level, fmt...) do { \ - FMT_WARN (fmt); \ - _gf_log_callingfn (dom, __FILE__, __FUNCTION__, __LINE__, \ - level, ##fmt); \ - } while (0) - +#define gf_msg_debug(dom, errnum, fmt...) \ + do { \ + _gf_msg(dom, __FILE__, __FUNCTION__, __LINE__, GF_LOG_DEBUG, errnum, \ + 0, 0, ##fmt); \ + } while (0) + +#define gf_msg_trace(dom, errnum, fmt...) \ + do { \ + _gf_msg(dom, __FILE__, __FUNCTION__, __LINE__, GF_LOG_TRACE, errnum, \ + 0, 0, ##fmt); \ + } while (0) + +#define gf_log(dom, level, fmt...) \ + do { \ + FMT_WARN(fmt); \ + _gf_log(dom, __FILE__, __FUNCTION__, __LINE__, level, ##fmt); \ + } while (0) + +#define gf_log_eh(fmt...) \ + do { \ + FMT_WARN(fmt); \ + _gf_log_eh(__FUNCTION__, ##fmt); \ + } while (0) + +#define gf_log_callingfn(dom, level, fmt...) \ + do { \ + FMT_WARN(fmt); \ + _gf_log_callingfn(dom, __FILE__, __FUNCTION__, __LINE__, level, \ + ##fmt); \ + } while (0) /* Log once in GF_UNIVERSAL_ANSWER times */ -#define GF_LOG_OCCASIONALLY(var, args...) if (!(var++%GF_UNIVERSAL_ANSWER)) { \ - gf_log (args); \ - } +#define GF_LOG_OCCASIONALLY(var, args...) \ + if (!(var++ % GF_UNIVERSAL_ANSWER)) { \ + gf_log(args); \ + } struct _glusterfs_ctx; -void gf_log_disable_syslog (void); -void gf_log_enable_syslog (void); -gf_loglevel_t gf_log_get_loglevel (void); -void gf_log_set_loglevel (struct _glusterfs_ctx *ctx, gf_loglevel_t level); -int gf_log_get_localtime (void); -void gf_log_set_localtime (int); -void gf_log_flush (void); -gf_loglevel_t gf_log_get_xl_loglevel (void *xl); -void gf_log_set_xl_loglevel (void *xl, gf_loglevel_t level); +void +gf_log_disable_syslog(void); +void +gf_log_enable_syslog(void); +gf_loglevel_t +gf_log_get_loglevel(void); +void +gf_log_set_loglevel(struct _glusterfs_ctx *ctx, gf_loglevel_t level); +int +gf_log_get_localtime(void); +void +gf_log_set_localtime(int); +void +gf_log_flush(void); +gf_loglevel_t +gf_log_get_xl_loglevel(void *xl); +void +gf_log_set_xl_loglevel(void *xl, gf_loglevel_t level); -int gf_cmd_log (const char *domain, const char *fmt, ...) - __attribute__ ((__format__ (__printf__, 2, 3))); +int +gf_cmd_log(const char *domain, const char *fmt, ...) + __attribute__((__format__(__printf__, 2, 3))); -int gf_cmd_log_init (const char *filename); +int +gf_cmd_log_init(const char *filename); -void set_sys_log_level (gf_loglevel_t level); +void +set_sys_log_level(gf_loglevel_t level); -int gf_log_fini(void *data); +int +gf_log_fini(void *data); void -gf_log_set_logger (gf_log_logger_t logger); +gf_log_set_logger(gf_log_logger_t logger); void -gf_log_set_logformat (gf_log_format_t format); +gf_log_set_logformat(gf_log_format_t format); void -gf_log_set_log_buf_size (uint32_t buf_size); +gf_log_set_log_buf_size(uint32_t buf_size); void -gf_log_set_log_flush_timeout (uint32_t timeout); +gf_log_set_log_flush_timeout(uint32_t timeout); void -gf_log_flush_msgs (struct _glusterfs_ctx *ctx); +gf_log_flush_msgs(struct _glusterfs_ctx *ctx); int -gf_log_inject_timer_event (struct _glusterfs_ctx *ctx); +gf_log_inject_timer_event(struct _glusterfs_ctx *ctx); void -gf_log_disable_suppression_before_exit (struct _glusterfs_ctx *ctx); +gf_log_disable_suppression_before_exit(struct _glusterfs_ctx *ctx); -#define GF_DEBUG(xl, format, args...) \ - gf_log ((xl)->name, GF_LOG_DEBUG, format, ##args) -#define GF_INFO(xl, format, args...) \ - gf_log ((xl)->name, GF_LOG_INFO, format, ##args) -#define GF_WARNING(xl, format, args...) \ - gf_log ((xl)->name, GF_LOG_WARNING, format, ##args) -#define GF_ERROR(xl, format, args...) \ - gf_log ((xl)->name, GF_LOG_ERROR, format, ##args) +#define GF_DEBUG(xl, format, args...) \ + gf_log((xl)->name, GF_LOG_DEBUG, format, ##args) +#define GF_INFO(xl, format, args...) \ + gf_log((xl)->name, GF_LOG_INFO, format, ##args) +#define GF_WARNING(xl, format, args...) \ + gf_log((xl)->name, GF_LOG_WARNING, format, ##args) +#define GF_ERROR(xl, format, args...) \ + gf_log((xl)->name, GF_LOG_ERROR, format, ##args) int -_gf_slog (const char *domain, const char *file, const char *function, int line, - gf_loglevel_t level, const char *event, ...); +_gf_slog(const char *domain, const char *file, const char *function, int line, + gf_loglevel_t level, const char *event, ...); int -_gf_smsg (const char *domain, const char *file, const char *function, - int32_t line, gf_loglevel_t level, int errnum, int trace, - uint64_t msgid, const char *event, ...); +_gf_smsg(const char *domain, const char *file, const char *function, + int32_t line, gf_loglevel_t level, int errnum, int trace, + uint64_t msgid, const char *event, ...); /* Interface to log messages with message IDs */ -#define gf_smsg(dom, level, errnum, msgid, event...) do { \ - _gf_smsg (dom, __FILE__, __FUNCTION__, __LINE__, \ - level, errnum, 0, msgid, ##event); \ - } while (0) - -#define gf_slog(dom, level, event...) do { \ - _gf_slog (dom, __FILE__, __FUNCTION__, __LINE__, \ - level, ##event); \ - } while (0) +#define gf_smsg(dom, level, errnum, msgid, event...) \ + do { \ + _gf_smsg(dom, __FILE__, __FUNCTION__, __LINE__, level, errnum, 0, \ + msgid, ##event); \ + } while (0) + +#define gf_slog(dom, level, event...) \ + do { \ + _gf_slog(dom, __FILE__, __FUNCTION__, __LINE__, level, ##event); \ + } while (0) #endif /* __LOGGING_H__ */ diff --git a/libglusterfs/src/mem-pool.h b/libglusterfs/src/mem-pool.h index 9a457bbca5a..b163458c488 100644 --- a/libglusterfs/src/mem-pool.h +++ b/libglusterfs/src/mem-pool.h @@ -34,262 +34,270 @@ #endif #define GF_MEM_TRAILER_SIZE 8 -#define GF_MEM_HEADER_MAGIC 0xCAFEBABE +#define GF_MEM_HEADER_MAGIC 0xCAFEBABE #define GF_MEM_TRAILER_MAGIC 0xBAADF00D #define GF_MEM_INVALID_MAGIC 0xDEADC0DE struct mem_acct_rec { - const char *typestr; - size_t size; - size_t max_size; - uint32_t num_allocs; - uint32_t total_allocs; - uint32_t max_num_allocs; - gf_lock_t lock; + const char *typestr; + size_t size; + size_t max_size; + uint32_t num_allocs; + uint32_t total_allocs; + uint32_t max_num_allocs; + gf_lock_t lock; #ifdef DEBUG - struct list_head obj_list; + struct list_head obj_list; #endif }; struct mem_acct { - uint32_t num_types; - gf_atomic_t refcnt; - struct mem_acct_rec rec[0]; + uint32_t num_types; + gf_atomic_t refcnt; + struct mem_acct_rec rec[0]; }; struct mem_header { - uint32_t type; - size_t size; - struct mem_acct *mem_acct; - uint32_t magic; + uint32_t type; + size_t size; + struct mem_acct *mem_acct; + uint32_t magic; #ifdef DEBUG - struct list_head acct_list; + struct list_head acct_list; #endif - int padding[8]; + int padding[8]; }; -#define GF_MEM_HEADER_SIZE (sizeof (struct mem_header)) +#define GF_MEM_HEADER_SIZE (sizeof(struct mem_header)) #ifdef DEBUG struct mem_invalid { - uint32_t magic; - void *mem_acct; - uint32_t type; - size_t size; - void *baseaddr; + uint32_t magic; + void *mem_acct; + uint32_t type; + size_t size; + void *baseaddr; }; #endif void * -__gf_calloc (size_t cnt, size_t size, uint32_t type, const char *typestr); +__gf_calloc(size_t cnt, size_t size, uint32_t type, const char *typestr); void * -__gf_malloc (size_t size, uint32_t type, const char *typestr); +__gf_malloc(size_t size, uint32_t type, const char *typestr); void * -__gf_realloc (void *ptr, size_t size); +__gf_realloc(void *ptr, size_t size); int -gf_vasprintf (char **string_ptr, const char *format, va_list arg); +gf_vasprintf(char **string_ptr, const char *format, va_list arg); int -gf_asprintf (char **string_ptr, const char *format, ...); +gf_asprintf(char **string_ptr, const char *format, ...); void -__gf_free (void *ptr); +__gf_free(void *ptr); -static inline -void* __gf_default_malloc (size_t size) +static inline void * +__gf_default_malloc(size_t size) { - void *ptr = NULL; + void *ptr = NULL; - ptr = malloc (size); - if (!ptr) - gf_msg_nomem ("", GF_LOG_ALERT, size); + ptr = malloc(size); + if (!ptr) + gf_msg_nomem("", GF_LOG_ALERT, size); - return ptr; + return ptr; } -static inline -void* __gf_default_calloc (int cnt, size_t size) +static inline void * +__gf_default_calloc(int cnt, size_t size) { - void *ptr = NULL; + void *ptr = NULL; - ptr = calloc (cnt, size); - if (!ptr) - gf_msg_nomem ("", GF_LOG_ALERT, (cnt * size)); + ptr = calloc(cnt, size); + if (!ptr) + gf_msg_nomem("", GF_LOG_ALERT, (cnt * size)); - return ptr; + return ptr; } -static inline -void* __gf_default_realloc (void *oldptr, size_t size) +static inline void * +__gf_default_realloc(void *oldptr, size_t size) { - void *ptr = NULL; + void *ptr = NULL; - ptr = realloc (oldptr, size); - if (!ptr) - gf_msg_nomem ("", GF_LOG_ALERT, size); + ptr = realloc(oldptr, size); + if (!ptr) + gf_msg_nomem("", GF_LOG_ALERT, size); - return ptr; + return ptr; } -#define MALLOC(size) __gf_default_malloc(size) -#define CALLOC(cnt,size) __gf_default_calloc(cnt,size) -#define REALLOC(ptr,size) __gf_default_realloc(ptr,size) +#define MALLOC(size) __gf_default_malloc(size) +#define CALLOC(cnt, size) __gf_default_calloc(cnt, size) +#define REALLOC(ptr, size) __gf_default_realloc(ptr, size) -#define FREE(ptr) \ - do { \ - if (ptr != NULL) { \ - free ((void *)ptr); \ - ptr = (void *)0xeeeeeeee; \ - } \ - } while (0) +#define FREE(ptr) \ + do { \ + if (ptr != NULL) { \ + free((void *)ptr); \ + ptr = (void *)0xeeeeeeee; \ + } \ + } while (0) -#define GF_CALLOC(nmemb, size, type) __gf_calloc (nmemb, size, type, #type) +#define GF_CALLOC(nmemb, size, type) __gf_calloc(nmemb, size, type, #type) -#define GF_MALLOC(size, type) __gf_malloc (size, type, #type) +#define GF_MALLOC(size, type) __gf_malloc(size, type, #type) -#define GF_REALLOC(ptr, size) __gf_realloc (ptr, size) +#define GF_REALLOC(ptr, size) __gf_realloc(ptr, size) -#define GF_FREE(free_ptr) __gf_free (free_ptr) +#define GF_FREE(free_ptr) __gf_free(free_ptr) -static inline -char *gf_strndup (const char *src, size_t len) +static inline char * +gf_strndup(const char *src, size_t len) { - char *dup_str = NULL; + char *dup_str = NULL; - if (!src) { - goto out; - } + if (!src) { + goto out; + } - dup_str = GF_MALLOC (len + 1, gf_common_mt_strdup); - if (!dup_str) { - goto out; - } + dup_str = GF_MALLOC(len + 1, gf_common_mt_strdup); + if (!dup_str) { + goto out; + } - memcpy (dup_str, src, len); - dup_str[len] = '\0'; + memcpy(dup_str, src, len); + dup_str[len] = '\0'; out: - return dup_str; + return dup_str; } -static inline -char * gf_strdup (const char *src) +static inline char * +gf_strdup(const char *src) { - if (!src) - return NULL; + if (!src) + return NULL; - return gf_strndup (src, strlen (src)); + return gf_strndup(src, strlen(src)); } static inline void * -gf_memdup (const void *src, size_t size) +gf_memdup(const void *src, size_t size) { - void *dup_mem = NULL; + void *dup_mem = NULL; - dup_mem = GF_MALLOC (size, gf_common_mt_strdup); - if (!dup_mem) - goto out; + dup_mem = GF_MALLOC(size, gf_common_mt_strdup); + if (!dup_mem) + goto out; - memcpy (dup_mem, src, size); + memcpy(dup_mem, src, size); out: - return dup_mem; + return dup_mem; } /* kind of 'header' for the actual mem_pool_shared structure, this might make * it possible to dump some more details in a statedump */ struct mem_pool { - /* object size, without pooled_obj_hdr_t */ - unsigned long sizeof_type; - unsigned long count; /* requested pool size (unused) */ - char *name; - gf_atomic_t active; /* current allocations */ + /* object size, without pooled_obj_hdr_t */ + unsigned long sizeof_type; + unsigned long count; /* requested pool size (unused) */ + char *name; + gf_atomic_t active; /* current allocations */ - struct list_head owner; /* glusterfs_ctx_t->mempool_list */ - glusterfs_ctx_t *ctx; /* take ctx->lock when updating owner */ + struct list_head owner; /* glusterfs_ctx_t->mempool_list */ + glusterfs_ctx_t *ctx; /* take ctx->lock when updating owner */ - struct mem_pool_shared *pool; /* the initial pool that was returned */ + struct mem_pool_shared *pool; /* the initial pool that was returned */ }; typedef struct pooled_obj_hdr { - unsigned long magic; - struct pooled_obj_hdr *next; - struct per_thread_pool_list *pool_list; - unsigned int power_of_two; + unsigned long magic; + struct pooled_obj_hdr *next; + struct per_thread_pool_list *pool_list; + unsigned int power_of_two; - /* track the pool that was used to request this object */ - struct mem_pool *pool; + /* track the pool that was used to request this object */ + struct mem_pool *pool; } pooled_obj_hdr_t; -#define AVAILABLE_SIZE(p2) ((1 << (p2)) - sizeof(pooled_obj_hdr_t)) +#define AVAILABLE_SIZE(p2) ((1 << (p2)) - sizeof(pooled_obj_hdr_t)) typedef struct per_thread_pool { - /* the pool that was used to request this allocation */ - struct mem_pool_shared *parent; - /* Everything else is protected by our own lock. */ - pooled_obj_hdr_t *hot_list; - pooled_obj_hdr_t *cold_list; + /* the pool that was used to request this allocation */ + struct mem_pool_shared *parent; + /* Everything else is protected by our own lock. */ + pooled_obj_hdr_t *hot_list; + pooled_obj_hdr_t *cold_list; } per_thread_pool_t; typedef struct per_thread_pool_list { - /* - * These first two members are protected by the global pool lock. When - * a thread first tries to use any pool, we create one of these. We - * link it into the global list using thr_list so the pool-sweeper - * thread can find it, and use pthread_setspecific so this thread can - * find it. When the per-thread destructor runs, we "poison" the pool - * list to prevent further allocations. This also signals to the - * pool-sweeper thread that the list should be detached and freed after - * the next time it's swept. - */ - struct list_head thr_list; - unsigned int poison; - /* - * There's really more than one pool, but the actual number is hidden - * in the implementation code so we just make it a single-element array - * here. - */ - pthread_spinlock_t lock; - per_thread_pool_t pools[1]; + /* + * These first two members are protected by the global pool lock. When + * a thread first tries to use any pool, we create one of these. We + * link it into the global list using thr_list so the pool-sweeper + * thread can find it, and use pthread_setspecific so this thread can + * find it. When the per-thread destructor runs, we "poison" the pool + * list to prevent further allocations. This also signals to the + * pool-sweeper thread that the list should be detached and freed after + * the next time it's swept. + */ + struct list_head thr_list; + unsigned int poison; + /* + * There's really more than one pool, but the actual number is hidden + * in the implementation code so we just make it a single-element array + * here. + */ + pthread_spinlock_t lock; + per_thread_pool_t pools[1]; } per_thread_pool_list_t; /* actual pool structure, shared between different mem_pools */ struct mem_pool_shared { - unsigned int power_of_two; - /* - * Updates to these are *not* protected by a global lock, so races - * could occur and the numbers might be slightly off. Don't expect - * them to line up exactly. It's the general trends that matter, and - * it's not worth the locked-bus-cycle overhead to make these precise. - */ - gf_atomic_t allocs_hot; - gf_atomic_t allocs_cold; - gf_atomic_t allocs_stdc; - gf_atomic_t frees_to_list; + unsigned int power_of_two; + /* + * Updates to these are *not* protected by a global lock, so races + * could occur and the numbers might be slightly off. Don't expect + * them to line up exactly. It's the general trends that matter, and + * it's not worth the locked-bus-cycle overhead to make these precise. + */ + gf_atomic_t allocs_hot; + gf_atomic_t allocs_cold; + gf_atomic_t allocs_stdc; + gf_atomic_t frees_to_list; }; -void mem_pools_init_early (void); /* basic initialization of memory pools */ -void mem_pools_init_late (void); /* start the pool_sweeper thread */ -void mem_pools_fini (void); /* cleanup memory pools */ +void +mem_pools_init_early(void); /* basic initialization of memory pools */ +void +mem_pools_init_late(void); /* start the pool_sweeper thread */ +void +mem_pools_fini(void); /* cleanup memory pools */ struct mem_pool * -mem_pool_new_fn (glusterfs_ctx_t *ctx, unsigned long sizeof_type, unsigned long - count, char *name); +mem_pool_new_fn(glusterfs_ctx_t *ctx, unsigned long sizeof_type, + unsigned long count, char *name); -#define mem_pool_new(type,count) \ - mem_pool_new_fn (THIS->ctx, sizeof(type), count, #type) +#define mem_pool_new(type, count) \ + mem_pool_new_fn(THIS->ctx, sizeof(type), count, #type) -#define mem_pool_new_ctx(ctx,type,count) \ - mem_pool_new_fn (ctx, sizeof(type), count, #type) +#define mem_pool_new_ctx(ctx, type, count) \ + mem_pool_new_fn(ctx, sizeof(type), count, #type) -void mem_put (void *ptr); -void *mem_get (struct mem_pool *pool); -void *mem_get0 (struct mem_pool *pool); +void +mem_put(void *ptr); +void * +mem_get(struct mem_pool *pool); +void * +mem_get0(struct mem_pool *pool); -void mem_pool_destroy (struct mem_pool *pool); +void +mem_pool_destroy(struct mem_pool *pool); -void gf_mem_acct_enable_set (void *ctx); +void +gf_mem_acct_enable_set(void *ctx); #endif /* _MEM_POOL_H */ diff --git a/libglusterfs/src/mem-types.h b/libglusterfs/src/mem-types.h index 85c06e9cbe5..4f6ca4e0e84 100644 --- a/libglusterfs/src/mem-types.h +++ b/libglusterfs/src/mem-types.h @@ -11,172 +11,171 @@ #ifndef __MEM_TYPES_H__ #define __MEM_TYPES_H__ - enum gf_common_mem_types_ { - gf_common_mt_call_stub_t, - gf_common_mt_dnscache6, - gf_common_mt_data_pair_t, - gf_common_mt_data_t, - gf_common_mt_dict_t, - gf_common_mt_event_pool, - gf_common_mt_reg, - gf_common_mt_pollfd, - gf_common_mt_epoll_event, - gf_common_mt_fdentry_t, - gf_common_mt_fdtable_t, - gf_common_mt_fd_t, - gf_common_mt_fd_ctx, - gf_common_mt_gf_dirent_t, - gf_common_mt_glusterfs_ctx_t, - gf_common_mt_dentry_t, - gf_common_mt_inode_t, - gf_common_mt_inode_ctx, - gf_common_mt_list_head, - gf_common_mt_inode_table_t, - gf_common_mt_xlator_t, - gf_common_mt_xlator_list_t, - gf_common_mt_log_msg, - gf_common_mt_client_log, - gf_common_mt_volume_opt_list_t, - gf_common_mt_gf_hdr_common_t, - gf_common_mt_call_frame_t, - gf_common_mt_call_stack_t, - gf_common_mt_gf_timer_t, - gf_common_mt_gf_timer_registry_t, - gf_common_mt_transport, - gf_common_mt_transport_msg, - gf_common_mt_auth_handle_t, - gf_common_mt_iobuf, - gf_common_mt_iobuf_arena, - gf_common_mt_iobref, - gf_common_mt_iobuf_pool, - gf_common_mt_iovec, - gf_common_mt_memdup, - gf_common_mt_asprintf, - gf_common_mt_strdup, - gf_common_mt_socket_private_t, - gf_common_mt_ioq, - gf_common_mt_transport_t, - gf_common_mt_socket_local_t, - gf_common_mt_char, - gf_common_mt_rbthash_table_t, - gf_common_mt_rbthash_bucket, - gf_common_mt_mem_pool, - gf_common_mt_long, - gf_common_mt_rpcsvc_auth_list, - gf_common_mt_rpcsvc_t, - gf_common_mt_rpcsvc_conn_t, - gf_common_mt_rpcsvc_program_t, - gf_common_mt_rpcsvc_listener_t, - gf_common_mt_rpcsvc_wrapper_t, - gf_common_mt_rpcsvc_stage_t, - gf_common_mt_rpcclnt_t, - gf_common_mt_rpcclnt_savedframe_t, - gf_common_mt_rpc_trans_t, - gf_common_mt_rpc_trans_pollin_t, - gf_common_mt_rpc_trans_handover_t, - gf_common_mt_rpc_trans_reqinfo_t, - gf_common_mt_rpc_trans_rsp_t, - gf_common_mt_glusterfs_graph_t, - gf_common_mt_rdma_private_t, - gf_common_mt_rdma_ioq_t, - gf_common_mt_rpc_transport_t, - gf_common_mt_rdma_local_t, - gf_common_mt_rdma_post_t, - gf_common_mt_qpent, - gf_common_mt_rdma_device_t, - gf_common_mt_rdma_context_t, - gf_common_mt_sge, - gf_common_mt_rpcclnt_cb_program_t, - gf_common_mt_libxl_marker_local, - gf_common_mt_graph_buf, - gf_common_mt_trie_trie, - gf_common_mt_trie_data, - gf_common_mt_trie_node, - gf_common_mt_trie_buf, - gf_common_mt_trie_end, - gf_common_mt_run_argv, - gf_common_mt_run_logbuf, - gf_common_mt_fd_lk_ctx_t, - gf_common_mt_fd_lk_ctx_node_t, - gf_common_mt_buffer_t, - gf_common_mt_circular_buffer_t, - gf_common_mt_eh_t, - gf_common_mt_store_handle_t, - gf_common_mt_store_iter_t, - gf_common_mt_drc_client_t, - gf_common_mt_drc_globals_t, - gf_common_mt_drc_rbtree_node_t, - gf_common_mt_iov_base_t, - gf_common_mt_groups_t, - gf_common_mt_cliententry_t, - gf_common_mt_clienttable_t, - gf_common_mt_client_t, - gf_common_mt_client_ctx, - gf_common_mt_lock_table, - gf_common_mt_locker, - gf_common_mt_auxgids, - gf_common_mt_syncopctx, - gf_common_mt_iobrefs, - gf_common_mt_gsync_status_t, - gf_common_mt_uuid_t, - gf_common_mt_mgmt_v3_lock_obj_t, - gf_common_mt_txn_opinfo_obj_t, - gf_common_mt_strfd_t, - gf_common_mt_strfd_data_t, - gf_common_mt_regex_t, - gf_common_mt_ereg, - gf_common_mt_wr, - gf_common_mt_rdma_arena_mr, - gf_common_mt_dnscache = 115, - gf_common_mt_dnscache_entry = 116, - gf_common_mt_parser_t, - gf_common_quota_meta_t, - /*related to gfdb library*/ - gfdb_mt_time_t, - gf_mt_sql_cbk_args_t, - gf_mt_gfdb_query_record_t, - gf_mt_gfdb_link_info_t, - gf_mt_gfdb_db_operations_t, - gf_mt_sql_connection_t, - gf_mt_sql_conn_node_t, - gf_mt_db_conn_node_t, - gf_mt_db_connection_t, - gfdb_mt_db_record_t, - /*related to gfdb library*/ - gf_common_mt_rbuf_t, - gf_common_mt_rlist_t, - gf_common_mt_rvec_t, - /* glusterd can load the nfs-xlator dynamically and needs these two */ - gf_common_mt_nfs_netgroups, - gf_common_mt_nfs_exports, - gf_common_mt_gf_brick_spec_t, - gf_common_mt_gf_timer_entry_t, - gf_common_mt_int, - gf_common_mt_pointer, - gf_common_mt_synctask, - gf_common_mt_syncstack, - gf_common_mt_syncenv, - gf_common_mt_scan_data, - gf_common_list_node, - gf_mt_default_args_t, - gf_mt_default_args_cbk_t, - /*used for compound fops*/ - gf_mt_compound_req_t, - gf_mt_compound_rsp_t, - gf_common_mt_tw_ctx, - gf_common_mt_tw_timer_list, - /*lock migration*/ - gf_common_mt_lock_mig, - /* throttle */ - gf_common_mt_tbf_t, - gf_common_mt_tbf_bucket_t, - gf_common_mt_tbf_throttle_t, - gf_common_mt_pthread_t, - gf_common_ping_local_t, - gf_common_volfile_t, - gf_common_mt_mgmt_v3_lock_timer_t, - gf_common_mt_server_cmdline_t, - gf_common_mt_end + gf_common_mt_call_stub_t, + gf_common_mt_dnscache6, + gf_common_mt_data_pair_t, + gf_common_mt_data_t, + gf_common_mt_dict_t, + gf_common_mt_event_pool, + gf_common_mt_reg, + gf_common_mt_pollfd, + gf_common_mt_epoll_event, + gf_common_mt_fdentry_t, + gf_common_mt_fdtable_t, + gf_common_mt_fd_t, + gf_common_mt_fd_ctx, + gf_common_mt_gf_dirent_t, + gf_common_mt_glusterfs_ctx_t, + gf_common_mt_dentry_t, + gf_common_mt_inode_t, + gf_common_mt_inode_ctx, + gf_common_mt_list_head, + gf_common_mt_inode_table_t, + gf_common_mt_xlator_t, + gf_common_mt_xlator_list_t, + gf_common_mt_log_msg, + gf_common_mt_client_log, + gf_common_mt_volume_opt_list_t, + gf_common_mt_gf_hdr_common_t, + gf_common_mt_call_frame_t, + gf_common_mt_call_stack_t, + gf_common_mt_gf_timer_t, + gf_common_mt_gf_timer_registry_t, + gf_common_mt_transport, + gf_common_mt_transport_msg, + gf_common_mt_auth_handle_t, + gf_common_mt_iobuf, + gf_common_mt_iobuf_arena, + gf_common_mt_iobref, + gf_common_mt_iobuf_pool, + gf_common_mt_iovec, + gf_common_mt_memdup, + gf_common_mt_asprintf, + gf_common_mt_strdup, + gf_common_mt_socket_private_t, + gf_common_mt_ioq, + gf_common_mt_transport_t, + gf_common_mt_socket_local_t, + gf_common_mt_char, + gf_common_mt_rbthash_table_t, + gf_common_mt_rbthash_bucket, + gf_common_mt_mem_pool, + gf_common_mt_long, + gf_common_mt_rpcsvc_auth_list, + gf_common_mt_rpcsvc_t, + gf_common_mt_rpcsvc_conn_t, + gf_common_mt_rpcsvc_program_t, + gf_common_mt_rpcsvc_listener_t, + gf_common_mt_rpcsvc_wrapper_t, + gf_common_mt_rpcsvc_stage_t, + gf_common_mt_rpcclnt_t, + gf_common_mt_rpcclnt_savedframe_t, + gf_common_mt_rpc_trans_t, + gf_common_mt_rpc_trans_pollin_t, + gf_common_mt_rpc_trans_handover_t, + gf_common_mt_rpc_trans_reqinfo_t, + gf_common_mt_rpc_trans_rsp_t, + gf_common_mt_glusterfs_graph_t, + gf_common_mt_rdma_private_t, + gf_common_mt_rdma_ioq_t, + gf_common_mt_rpc_transport_t, + gf_common_mt_rdma_local_t, + gf_common_mt_rdma_post_t, + gf_common_mt_qpent, + gf_common_mt_rdma_device_t, + gf_common_mt_rdma_context_t, + gf_common_mt_sge, + gf_common_mt_rpcclnt_cb_program_t, + gf_common_mt_libxl_marker_local, + gf_common_mt_graph_buf, + gf_common_mt_trie_trie, + gf_common_mt_trie_data, + gf_common_mt_trie_node, + gf_common_mt_trie_buf, + gf_common_mt_trie_end, + gf_common_mt_run_argv, + gf_common_mt_run_logbuf, + gf_common_mt_fd_lk_ctx_t, + gf_common_mt_fd_lk_ctx_node_t, + gf_common_mt_buffer_t, + gf_common_mt_circular_buffer_t, + gf_common_mt_eh_t, + gf_common_mt_store_handle_t, + gf_common_mt_store_iter_t, + gf_common_mt_drc_client_t, + gf_common_mt_drc_globals_t, + gf_common_mt_drc_rbtree_node_t, + gf_common_mt_iov_base_t, + gf_common_mt_groups_t, + gf_common_mt_cliententry_t, + gf_common_mt_clienttable_t, + gf_common_mt_client_t, + gf_common_mt_client_ctx, + gf_common_mt_lock_table, + gf_common_mt_locker, + gf_common_mt_auxgids, + gf_common_mt_syncopctx, + gf_common_mt_iobrefs, + gf_common_mt_gsync_status_t, + gf_common_mt_uuid_t, + gf_common_mt_mgmt_v3_lock_obj_t, + gf_common_mt_txn_opinfo_obj_t, + gf_common_mt_strfd_t, + gf_common_mt_strfd_data_t, + gf_common_mt_regex_t, + gf_common_mt_ereg, + gf_common_mt_wr, + gf_common_mt_rdma_arena_mr, + gf_common_mt_dnscache = 115, + gf_common_mt_dnscache_entry = 116, + gf_common_mt_parser_t, + gf_common_quota_meta_t, + /*related to gfdb library*/ + gfdb_mt_time_t, + gf_mt_sql_cbk_args_t, + gf_mt_gfdb_query_record_t, + gf_mt_gfdb_link_info_t, + gf_mt_gfdb_db_operations_t, + gf_mt_sql_connection_t, + gf_mt_sql_conn_node_t, + gf_mt_db_conn_node_t, + gf_mt_db_connection_t, + gfdb_mt_db_record_t, + /*related to gfdb library*/ + gf_common_mt_rbuf_t, + gf_common_mt_rlist_t, + gf_common_mt_rvec_t, + /* glusterd can load the nfs-xlator dynamically and needs these two */ + gf_common_mt_nfs_netgroups, + gf_common_mt_nfs_exports, + gf_common_mt_gf_brick_spec_t, + gf_common_mt_gf_timer_entry_t, + gf_common_mt_int, + gf_common_mt_pointer, + gf_common_mt_synctask, + gf_common_mt_syncstack, + gf_common_mt_syncenv, + gf_common_mt_scan_data, + gf_common_list_node, + gf_mt_default_args_t, + gf_mt_default_args_cbk_t, + /*used for compound fops*/ + gf_mt_compound_req_t, + gf_mt_compound_rsp_t, + gf_common_mt_tw_ctx, + gf_common_mt_tw_timer_list, + /*lock migration*/ + gf_common_mt_lock_mig, + /* throttle */ + gf_common_mt_tbf_t, + gf_common_mt_tbf_bucket_t, + gf_common_mt_tbf_throttle_t, + gf_common_mt_pthread_t, + gf_common_ping_local_t, + gf_common_volfile_t, + gf_common_mt_mgmt_v3_lock_timer_t, + gf_common_mt_server_cmdline_t, + gf_common_mt_end }; #endif diff --git a/libglusterfs/src/monitoring.h b/libglusterfs/src/monitoring.h index 1c08bfc7eb6..7826d4ec4df 100644 --- a/libglusterfs/src/monitoring.h +++ b/libglusterfs/src/monitoring.h @@ -16,6 +16,6 @@ #define GLUSTER_METRICS_DIR "/var/run/gluster/metrics" char * -gf_monitor_metrics (glusterfs_ctx_t *ctx); +gf_monitor_metrics(glusterfs_ctx_t *ctx); #endif /* __MONITORING_H__ */ diff --git a/libglusterfs/src/options.h b/libglusterfs/src/options.h index 1ce8975e799..e47d7496a39 100644 --- a/libglusterfs/src/options.h +++ b/libglusterfs/src/options.h @@ -19,51 +19,50 @@ #include "libglusterfs-messages.h" /* Add possible new type of option you may need */ typedef enum { - GF_OPTION_TYPE_ANY = 0, - GF_OPTION_TYPE_STR, - GF_OPTION_TYPE_INT, - GF_OPTION_TYPE_SIZET, - GF_OPTION_TYPE_PERCENT, - GF_OPTION_TYPE_PERCENT_OR_SIZET, - GF_OPTION_TYPE_BOOL, - GF_OPTION_TYPE_XLATOR, - GF_OPTION_TYPE_PATH, - GF_OPTION_TYPE_TIME, - GF_OPTION_TYPE_DOUBLE, - GF_OPTION_TYPE_INTERNET_ADDRESS, - GF_OPTION_TYPE_INTERNET_ADDRESS_LIST, - GF_OPTION_TYPE_PRIORITY_LIST, - GF_OPTION_TYPE_SIZE_LIST, - GF_OPTION_TYPE_CLIENT_AUTH_ADDR, - GF_OPTION_TYPE_MAX, + GF_OPTION_TYPE_ANY = 0, + GF_OPTION_TYPE_STR, + GF_OPTION_TYPE_INT, + GF_OPTION_TYPE_SIZET, + GF_OPTION_TYPE_PERCENT, + GF_OPTION_TYPE_PERCENT_OR_SIZET, + GF_OPTION_TYPE_BOOL, + GF_OPTION_TYPE_XLATOR, + GF_OPTION_TYPE_PATH, + GF_OPTION_TYPE_TIME, + GF_OPTION_TYPE_DOUBLE, + GF_OPTION_TYPE_INTERNET_ADDRESS, + GF_OPTION_TYPE_INTERNET_ADDRESS_LIST, + GF_OPTION_TYPE_PRIORITY_LIST, + GF_OPTION_TYPE_SIZE_LIST, + GF_OPTION_TYPE_CLIENT_AUTH_ADDR, + GF_OPTION_TYPE_MAX, } volume_option_type_t; typedef enum { - GF_OPT_VALIDATE_BOTH = 0, - GF_OPT_VALIDATE_MIN, - GF_OPT_VALIDATE_MAX, + GF_OPT_VALIDATE_BOTH = 0, + GF_OPT_VALIDATE_MIN, + GF_OPT_VALIDATE_MAX, } opt_validate_type_t; typedef enum { - OPT_FLAG_NONE = 0, - OPT_FLAG_SETTABLE = 1 << 0, /* can be set using volume set */ - OPT_FLAG_CLIENT_OPT = 1 << 1, /* affects clients */ - OPT_FLAG_GLOBAL = 1 << 2, /* affects all instances of the particular xlator */ - OPT_FLAG_FORCE = 1 << 3, /* needs force to be reset */ - OPT_FLAG_NEVER_RESET = 1 << 4, /* which should not be reset */ - OPT_FLAG_DOC = 1 << 5, /* can be shown in volume set help */ + OPT_FLAG_NONE = 0, + OPT_FLAG_SETTABLE = 1 << 0, /* can be set using volume set */ + OPT_FLAG_CLIENT_OPT = 1 << 1, /* affects clients */ + OPT_FLAG_GLOBAL = 1 + << 2, /* affects all instances of the particular xlator */ + OPT_FLAG_FORCE = 1 << 3, /* needs force to be reset */ + OPT_FLAG_NEVER_RESET = 1 << 4, /* which should not be reset */ + OPT_FLAG_DOC = 1 << 5, /* can be shown in volume set help */ } opt_flags_t; - typedef enum { - OPT_STATUS_ADVANCED = 0, - OPT_STATUS_BASIC = 1, - OPT_STATUS_EXPERIMENTAL = 2, - OPT_STATUS_DEPRECATED = 3, + OPT_STATUS_ADVANCED = 0, + OPT_STATUS_BASIC = 1, + OPT_STATUS_EXPERIMENTAL = 2, + OPT_STATUS_DEPRECATED = 3, } opt_level_t; - -#define ZR_VOLUME_MAX_NUM_KEY 4 +#define ZR_VOLUME_MAX_NUM_KEY 4 #define ZR_OPTION_MAX_ARRAY_SIZE 64 /* The maximum number of releases that an option could be backported to * based on the release schedule as in August 2017 (3), plus one more @@ -76,112 +75,115 @@ typedef enum { * passing the volinfo is actually required. If it is, then we should possibly * try a solution in GD2 for this. */ -/* typedef int (*option_validation_fn) (glusterd_volinfo_t *volinfo, dict_t *dict, - char *key, char *value, char **op_errstr); +/* typedef int (*option_validation_fn) (glusterd_volinfo_t *volinfo, dict_t + *dict, char *key, char *value, char **op_errstr); */ - /* Each translator should define this structure */ /* XXX: This structure is in use by GD2, and SHOULD NOT be modified. * If there is a need to add new members, add them to the end of the structure. * If the struct must be modified, GD2 MUST be updated as well */ typedef struct volume_options { - char *key[ZR_VOLUME_MAX_NUM_KEY]; - /* different key, same meaning */ - volume_option_type_t type; - double min; /* 0 means no range */ - double max; /* 0 means no range */ - char *value[ZR_OPTION_MAX_ARRAY_SIZE]; - /* If specified, will check for one of - the value from this array */ - char *default_value; - char *description; /* about the key */ - /* Required for int options where only the min value - * is given and is 0. This will cause validation not to - * happen - */ - opt_validate_type_t validate; - - /* The op-version at which this option was introduced. - * This is an array to support options that get backported to supported - * releases. - * Normally, an option introduced for a major release just has a single - * entry in the array, with op-version of the major release - * For an option that is backported, the op-versions of the all the - * releases it was ported to should be added, starting from the newest, - * to the oldest. - */ - uint32_t op_version[GF_MAX_RELEASES]; - /* The op-version at which this option was deprecated. - * Follows the same rules as above. - */ - uint32_t deprecated[GF_MAX_RELEASES]; - /* Additional flags for an option - * Check the OPT_FLAG_* enums for available flags - */ - uint32_t flags; - /* Tags applicable to this option, which can be used to group similar - * options - */ - char *tags[ZR_OPTION_MAX_ARRAY_SIZE]; - /* A custom validation function if required - * TODO: See todo above for option_validation_fn - */ - /* option_validation_fn validate_fn; */ - /* This is actual key that should be set in the options dict. Can - * contain varstrings - */ - char *setkey; - - /* A 'level' is about the technical depth / understanding one - needs to handle the option. 'category' is based on - quality (ie, tests, people behind it, documentation available) */ - - /* The level at which the option is classified */ - opt_level_t level; - - /* Flag to understand how this option is categorized */ - gf_category_t category; + char *key[ZR_VOLUME_MAX_NUM_KEY]; + /* different key, same meaning */ + volume_option_type_t type; + double min; /* 0 means no range */ + double max; /* 0 means no range */ + char *value[ZR_OPTION_MAX_ARRAY_SIZE]; + /* If specified, will check for one of + the value from this array */ + char *default_value; + char *description; /* about the key */ + /* Required for int options where only the min value + * is given and is 0. This will cause validation not to + * happen + */ + opt_validate_type_t validate; + + /* The op-version at which this option was introduced. + * This is an array to support options that get backported to supported + * releases. + * Normally, an option introduced for a major release just has a single + * entry in the array, with op-version of the major release + * For an option that is backported, the op-versions of the all the + * releases it was ported to should be added, starting from the newest, + * to the oldest. + */ + uint32_t op_version[GF_MAX_RELEASES]; + /* The op-version at which this option was deprecated. + * Follows the same rules as above. + */ + uint32_t deprecated[GF_MAX_RELEASES]; + /* Additional flags for an option + * Check the OPT_FLAG_* enums for available flags + */ + uint32_t flags; + /* Tags applicable to this option, which can be used to group similar + * options + */ + char *tags[ZR_OPTION_MAX_ARRAY_SIZE]; + /* A custom validation function if required + * TODO: See todo above for option_validation_fn + */ + /* option_validation_fn validate_fn; */ + /* This is actual key that should be set in the options dict. Can + * contain varstrings + */ + char *setkey; + + /* A 'level' is about the technical depth / understanding one + needs to handle the option. 'category' is based on + quality (ie, tests, people behind it, documentation available) */ + + /* The level at which the option is classified */ + opt_level_t level; + + /* Flag to understand how this option is categorized */ + gf_category_t category; } volume_option_t; - typedef struct vol_opt_list { - struct list_head list; - volume_option_t *given_opt; + struct list_head list; + volume_option_t *given_opt; } volume_opt_list_t; - -int xlator_tree_reconfigure (xlator_t *old_xl, xlator_t *new_xl); -int xlator_validate_rec (xlator_t *xlator, char **op_errstr); -int graph_reconf_validateopt (glusterfs_graph_t *graph, char **op_errstr); -int xlator_option_info_list (volume_opt_list_t *list, char *key, - char **def_val, char **descr); +int +xlator_tree_reconfigure(xlator_t *old_xl, xlator_t *new_xl); +int +xlator_validate_rec(xlator_t *xlator, char **op_errstr); +int +graph_reconf_validateopt(glusterfs_graph_t *graph, char **op_errstr); +int +xlator_option_info_list(volume_opt_list_t *list, char *key, char **def_val, + char **descr); /* int validate_xlator_volume_options (xlator_t *xl, dict_t *options, volume_option_t *opt, char **op_errstr); */ -int xlator_options_validate_list (xlator_t *xl, dict_t *options, - volume_opt_list_t *list, char **op_errstr); -int xlator_option_validate (xlator_t *xl, char *key, char *value, - volume_option_t *opt, char **op_errstr); -int xlator_options_validate (xlator_t *xl, dict_t *options, char **errstr); - -int xlator_option_validate_addr_list (xlator_t *xl, const char *key, - const char *value, volume_option_t *opt, - char **op_errstr); +int +xlator_options_validate_list(xlator_t *xl, dict_t *options, + volume_opt_list_t *list, char **op_errstr); +int +xlator_option_validate(xlator_t *xl, char *key, char *value, + volume_option_t *opt, char **op_errstr); +int +xlator_options_validate(xlator_t *xl, dict_t *options, char **errstr); + +int +xlator_option_validate_addr_list(xlator_t *xl, const char *key, + const char *value, volume_option_t *opt, + char **op_errstr); volume_option_t * -xlator_volume_option_get (xlator_t *xl, const char *key); +xlator_volume_option_get(xlator_t *xl, const char *key); volume_option_t * -xlator_volume_option_get_list (volume_opt_list_t *vol_list, const char *key); +xlator_volume_option_get_list(volume_opt_list_t *vol_list, const char *key); - -#define DECLARE_INIT_OPT(type_t, type) \ -int \ -xlator_option_init_##type (xlator_t *this, dict_t *options, char *key, \ - type_t *val_p); +#define DECLARE_INIT_OPT(type_t, type) \ + int xlator_option_init_##type(xlator_t *this, dict_t *options, char *key, \ + type_t *val_p); DECLARE_INIT_OPT(char *, str); DECLARE_INIT_OPT(uint64_t, uint64); @@ -198,76 +200,71 @@ DECLARE_INIT_OPT(char *, path); DECLARE_INIT_OPT(double, double); DECLARE_INIT_OPT(uint32_t, time); - -#define DEFINE_INIT_OPT(type_t, type, conv) \ -int \ -xlator_option_init_##type (xlator_t *this, dict_t *options, char *key, \ - type_t *val_p) \ -{ \ - int ret = 0; \ - volume_option_t *opt = NULL; \ - char *def_value = NULL; \ - char *set_value = NULL; \ - char *value = NULL; \ - xlator_t *old_THIS = NULL; \ - \ - opt = xlator_volume_option_get (this, key); \ - if (!opt) { \ - gf_msg (this->name, GF_LOG_WARNING, EINVAL, \ - LG_MSG_INVALID_ENTRY, \ - "unknown option: %s", key); \ - ret = -1; \ - return ret; \ - } \ - def_value = opt->default_value; \ - ret = dict_get_str (options, key, &set_value); \ - \ - if (def_value) \ - value = def_value; \ - if (set_value) \ - value = set_value; \ - if (!value) { \ - gf_msg_trace (this->name, 0, "option %s not set", \ - key); \ - *val_p = (type_t)0; \ - return 0; \ - } \ - if (value == def_value) { \ - gf_msg_trace (this->name, 0, "option %s using default" \ - " value %s", key, value); \ - } else { \ - gf_msg_debug (this->name, 0, "option %s using set" \ - " value %s", key, value); \ - } \ - old_THIS = THIS; \ - THIS = this; \ - ret = conv (value, val_p); \ - THIS = old_THIS; \ - if (ret) { \ - gf_msg (this->name, GF_LOG_INFO, 0, \ - LG_MSG_CONVERSION_FAILED, \ - "option %s conversion failed value %s", \ - key, value); \ - return ret; \ - } \ - ret = xlator_option_validate (this, key, value, opt, NULL); \ - return ret; \ -} - -#define GF_OPTION_INIT(key, val, type, err_label) do { \ - int val_ret = 0; \ - val_ret = xlator_option_init_##type (THIS, THIS->options, \ - key, &(val)); \ - if (val_ret) \ - goto err_label; \ - } while (0) - - - -#define DECLARE_RECONF_OPT(type_t, type) \ -int \ -xlator_option_reconf_##type (xlator_t *this, dict_t *options, char *key,\ - type_t *val_p); +#define DEFINE_INIT_OPT(type_t, type, conv) \ + int xlator_option_init_##type(xlator_t *this, dict_t *options, char *key, \ + type_t *val_p) \ + { \ + int ret = 0; \ + volume_option_t *opt = NULL; \ + char *def_value = NULL; \ + char *set_value = NULL; \ + char *value = NULL; \ + xlator_t *old_THIS = NULL; \ + \ + opt = xlator_volume_option_get(this, key); \ + if (!opt) { \ + gf_msg(this->name, GF_LOG_WARNING, EINVAL, LG_MSG_INVALID_ENTRY, \ + "unknown option: %s", key); \ + ret = -1; \ + return ret; \ + } \ + def_value = opt->default_value; \ + ret = dict_get_str(options, key, &set_value); \ + \ + if (def_value) \ + value = def_value; \ + if (set_value) \ + value = set_value; \ + if (!value) { \ + gf_msg_trace(this->name, 0, "option %s not set", key); \ + *val_p = (type_t)0; \ + return 0; \ + } \ + if (value == def_value) { \ + gf_msg_trace(this->name, 0, \ + "option %s using default" \ + " value %s", \ + key, value); \ + } else { \ + gf_msg_debug(this->name, 0, \ + "option %s using set" \ + " value %s", \ + key, value); \ + } \ + old_THIS = THIS; \ + THIS = this; \ + ret = conv(value, val_p); \ + THIS = old_THIS; \ + if (ret) { \ + gf_msg(this->name, GF_LOG_INFO, 0, LG_MSG_CONVERSION_FAILED, \ + "option %s conversion failed value %s", key, value); \ + return ret; \ + } \ + ret = xlator_option_validate(this, key, value, opt, NULL); \ + return ret; \ + } + +#define GF_OPTION_INIT(key, val, type, err_label) \ + do { \ + int val_ret = 0; \ + val_ret = xlator_option_init_##type(THIS, THIS->options, key, &(val)); \ + if (val_ret) \ + goto err_label; \ + } while (0) + +#define DECLARE_RECONF_OPT(type_t, type) \ + int xlator_option_reconf_##type(xlator_t *this, dict_t *options, \ + char *key, type_t *val_p); DECLARE_RECONF_OPT(char *, str); DECLARE_RECONF_OPT(uint64_t, uint64); @@ -284,65 +281,59 @@ DECLARE_RECONF_OPT(char *, path); DECLARE_RECONF_OPT(double, double); DECLARE_RECONF_OPT(uint32_t, time); - -#define DEFINE_RECONF_OPT(type_t, type, conv) \ -int \ -xlator_option_reconf_##type (xlator_t *this, dict_t *options, char *key, \ - type_t *val_p) \ -{ \ - int ret = 0; \ - volume_option_t *opt = NULL; \ - char *def_value = NULL; \ - char *set_value = NULL; \ - char *value = NULL; \ - xlator_t *old_THIS = NULL; \ - \ - opt = xlator_volume_option_get (this, key); \ - if (!opt) { \ - gf_msg (this->name, GF_LOG_WARNING, EINVAL, \ - LG_MSG_INVALID_ENTRY, \ - "unknown option: %s", key); \ - ret = -1; \ - return ret; \ - } \ - def_value = opt->default_value; \ - ret = dict_get_str (options, key, &set_value); \ - \ - if (def_value) \ - value = def_value; \ - if (set_value) \ - value = set_value; \ - if (!value) { \ - gf_msg_trace (this->name, 0, "option %s not set", key); \ - *val_p = (type_t)0; \ - return 0; \ - } \ - if (value == def_value) { \ - gf_msg_trace (this->name, 0, \ - "option %s using default value %s", \ - key, value); \ - } else { \ - gf_msg (this->name, GF_LOG_INFO, 0, 0, \ - "option %s using set value %s", \ - key, value); \ - } \ - old_THIS = THIS; \ - THIS = this; \ - ret = conv (value, val_p); \ - THIS = old_THIS; \ - if (ret) \ - return ret; \ - ret = xlator_option_validate (this, key, value, opt, NULL); \ - return ret; \ -} - -#define GF_OPTION_RECONF(key, val, opt, type, err_label) do { \ - int val_ret = 0; \ - val_ret = xlator_option_reconf_##type (THIS, opt, key, \ - &(val)); \ - if (val_ret) \ - goto err_label; \ - } while (0) - +#define DEFINE_RECONF_OPT(type_t, type, conv) \ + int xlator_option_reconf_##type(xlator_t *this, dict_t *options, \ + char *key, type_t *val_p) \ + { \ + int ret = 0; \ + volume_option_t *opt = NULL; \ + char *def_value = NULL; \ + char *set_value = NULL; \ + char *value = NULL; \ + xlator_t *old_THIS = NULL; \ + \ + opt = xlator_volume_option_get(this, key); \ + if (!opt) { \ + gf_msg(this->name, GF_LOG_WARNING, EINVAL, LG_MSG_INVALID_ENTRY, \ + "unknown option: %s", key); \ + ret = -1; \ + return ret; \ + } \ + def_value = opt->default_value; \ + ret = dict_get_str(options, key, &set_value); \ + \ + if (def_value) \ + value = def_value; \ + if (set_value) \ + value = set_value; \ + if (!value) { \ + gf_msg_trace(this->name, 0, "option %s not set", key); \ + *val_p = (type_t)0; \ + return 0; \ + } \ + if (value == def_value) { \ + gf_msg_trace(this->name, 0, "option %s using default value %s", \ + key, value); \ + } else { \ + gf_msg(this->name, GF_LOG_INFO, 0, 0, \ + "option %s using set value %s", key, value); \ + } \ + old_THIS = THIS; \ + THIS = this; \ + ret = conv(value, val_p); \ + THIS = old_THIS; \ + if (ret) \ + return ret; \ + ret = xlator_option_validate(this, key, value, opt, NULL); \ + return ret; \ + } + +#define GF_OPTION_RECONF(key, val, opt, type, err_label) \ + do { \ + int val_ret = 0; \ + val_ret = xlator_option_reconf_##type(THIS, opt, key, &(val)); \ + if (val_ret) \ + goto err_label; \ + } while (0) #endif /* !_OPTIONS_H */ diff --git a/libglusterfs/src/parse-utils.h b/libglusterfs/src/parse-utils.h index 275ccf3153b..8653b9dd180 100644 --- a/libglusterfs/src/parse-utils.h +++ b/libglusterfs/src/parse-utils.h @@ -20,31 +20,31 @@ #define GF_PARSE "parse-utils" struct parser { - regex_t preg; /* Compiled regex */ - regmatch_t pmatch[1]; /* The match */ - char *complete_str; /* The string we are parsing */ - char *regex; /* Regex used to parse the string */ - char *_rstr; /* Temp string to hold offsets */ + regex_t preg; /* Compiled regex */ + regmatch_t pmatch[1]; /* The match */ + char *complete_str; /* The string we are parsing */ + char *regex; /* Regex used to parse the string */ + char *_rstr; /* Temp string to hold offsets */ }; /* Initializes some of the parsers variables */ struct parser * -parser_init (const char *regex); +parser_init(const char *regex); /* Sets the string to parse */ int -parser_set_string (struct parser *parser, const char *complete_str); +parser_set_string(struct parser *parser, const char *complete_str); /* Frees memory used by the string after all matches are found */ int -parser_unset_string (struct parser *parser); +parser_unset_string(struct parser *parser); /* Free memory used by the parser */ void -parser_deinit (struct parser *ptr); +parser_deinit(struct parser *ptr); /* Get the next matching string */ char * -parser_get_next_match (struct parser *parser); +parser_get_next_match(struct parser *parser); #endif /* _PARSE_UTILS_H */ diff --git a/libglusterfs/src/quota-common-utils.h b/libglusterfs/src/quota-common-utils.h index e479398c398..7c3ce498427 100644 --- a/libglusterfs/src/quota-common-utils.h +++ b/libglusterfs/src/quota-common-utils.h @@ -14,55 +14,53 @@ #include "iatt.h" #define GF_QUOTA_CONF_VERSION 1.2 -#define QUOTA_CONF_HEADER \ - "GlusterFS Quota conf | version: v1.2\n" -#define QUOTA_CONF_HEADER_1_1 \ - "GlusterFS Quota conf | version: v1.1\n" +#define QUOTA_CONF_HEADER "GlusterFS Quota conf | version: v1.2\n" +#define QUOTA_CONF_HEADER_1_1 "GlusterFS Quota conf | version: v1.1\n" typedef enum { - GF_QUOTA_CONF_TYPE_USAGE = 1, - GF_QUOTA_CONF_TYPE_OBJECTS + GF_QUOTA_CONF_TYPE_USAGE = 1, + GF_QUOTA_CONF_TYPE_OBJECTS } gf_quota_conf_type_t; struct _quota_limits { - int64_t hl; - int64_t sl; -} __attribute__ ((__packed__)); + int64_t hl; + int64_t sl; +} __attribute__((__packed__)); typedef struct _quota_limits quota_limits_t; struct _quota_meta { - int64_t size; - int64_t file_count; - int64_t dir_count; -} __attribute__ ((__packed__)); + int64_t size; + int64_t file_count; + int64_t dir_count; +} __attribute__((__packed__)); typedef struct _quota_meta quota_meta_t; gf_boolean_t -quota_meta_is_null (const quota_meta_t *meta); +quota_meta_is_null(const quota_meta_t *meta); int32_t -quota_data_to_meta (data_t *data, char *key, quota_meta_t *meta); +quota_data_to_meta(data_t *data, char *key, quota_meta_t *meta); int32_t -quota_dict_get_inode_meta (dict_t *dict, char *key, quota_meta_t *meta); +quota_dict_get_inode_meta(dict_t *dict, char *key, quota_meta_t *meta); int32_t -quota_dict_get_meta (dict_t *dict, char *key, quota_meta_t *meta); +quota_dict_get_meta(dict_t *dict, char *key, quota_meta_t *meta); int32_t -quota_dict_set_meta (dict_t *dict, char *key, const quota_meta_t *meta, - ia_type_t ia_type); +quota_dict_set_meta(dict_t *dict, char *key, const quota_meta_t *meta, + ia_type_t ia_type); int32_t -quota_conf_read_header (int fd, char *buf); +quota_conf_read_header(int fd, char *buf); int32_t -quota_conf_read_version (int fd, float *version); +quota_conf_read_version(int fd, float *version); int32_t -quota_conf_read_gfid (int fd, void *buf, char *type, float version); +quota_conf_read_gfid(int fd, void *buf, char *type, float version); int32_t -quota_conf_skip_header (int fd); +quota_conf_skip_header(int fd); #endif /* _QUOTA_COMMON_UTILS_H */ diff --git a/libglusterfs/src/rbthash.h b/libglusterfs/src/rbthash.h index 949b88a4380..dea4648ca5a 100644 --- a/libglusterfs/src/rbthash.h +++ b/libglusterfs/src/rbthash.h @@ -19,59 +19,59 @@ #include <pthread.h> -#define GF_RBTHASH_MEMPOOL 16384 //1048576 -#define GF_RBTHASH "rbthash" +#define GF_RBTHASH_MEMPOOL 16384 // 1048576 +#define GF_RBTHASH "rbthash" struct rbthash_bucket { - struct rb_table *bucket; - gf_lock_t bucketlock; + struct rb_table *bucket; + gf_lock_t bucketlock; }; typedef struct rbthash_entry { - void *data; - void *key; - int keylen; - uint32_t keyhash; - struct list_head list; + void *data; + void *key; + int keylen; + uint32_t keyhash; + struct list_head list; } rbthash_entry_t; -typedef uint32_t (*rbt_hasher_t) (void *data, int len); -typedef void (*rbt_data_destroyer_t) (void *data); -typedef void (*rbt_traverse_t) (void *data, void *mydata); +typedef uint32_t (*rbt_hasher_t)(void *data, int len); +typedef void (*rbt_data_destroyer_t)(void *data); +typedef void (*rbt_traverse_t)(void *data, void *mydata); typedef struct rbthash_table { - int size; - int numbuckets; - struct mem_pool *entrypool; - gf_lock_t tablelock; - struct rbthash_bucket *buckets; - rbt_hasher_t hashfunc; - rbt_data_destroyer_t dfunc; - gf_boolean_t pool_alloced; - struct list_head list; + int size; + int numbuckets; + struct mem_pool *entrypool; + gf_lock_t tablelock; + struct rbthash_bucket *buckets; + rbt_hasher_t hashfunc; + rbt_data_destroyer_t dfunc; + gf_boolean_t pool_alloced; + struct list_head list; } rbthash_table_t; extern rbthash_table_t * -rbthash_table_init (glusterfs_ctx_t *ctx, int buckets, rbt_hasher_t hfunc, - rbt_data_destroyer_t dfunc, unsigned long expected_entries, - struct mem_pool *entrypool); +rbthash_table_init(glusterfs_ctx_t *ctx, int buckets, rbt_hasher_t hfunc, + rbt_data_destroyer_t dfunc, unsigned long expected_entries, + struct mem_pool *entrypool); extern int -rbthash_insert (rbthash_table_t *tbl, void *data, void *key, int keylen); +rbthash_insert(rbthash_table_t *tbl, void *data, void *key, int keylen); extern void * -rbthash_get (rbthash_table_t *tbl, void *key, int keylen); +rbthash_get(rbthash_table_t *tbl, void *key, int keylen); extern void * -rbthash_remove (rbthash_table_t *tbl, void *key, int keylen); +rbthash_remove(rbthash_table_t *tbl, void *key, int keylen); extern void * -rbthash_replace (rbthash_table_t *tbl, void *key, int keylen, void *newdata); +rbthash_replace(rbthash_table_t *tbl, void *key, int keylen, void *newdata); extern void -rbthash_table_destroy (rbthash_table_t *tbl); +rbthash_table_destroy(rbthash_table_t *tbl); extern void -rbthash_table_traverse (rbthash_table_t *tbl, rbt_traverse_t traverse, - void *mydata); +rbthash_table_traverse(rbthash_table_t *tbl, rbt_traverse_t traverse, + void *mydata); #endif diff --git a/libglusterfs/src/refcount.h b/libglusterfs/src/refcount.h index 2186c155607..6a3a73d80e8 100644 --- a/libglusterfs/src/refcount.h +++ b/libglusterfs/src/refcount.h @@ -17,7 +17,8 @@ * http://lists.iptel.org/pipermail/semsdev/2010-October/005075.html * this is sufficient for RHEL5 i386 builds */ -#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1)) && !defined(__i386__) +#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1)) && \ + !defined(__i386__) #undef REFCOUNT_NEEDS_LOCK #else #define REFCOUNT_NEEDS_LOCK @@ -28,22 +29,21 @@ typedef void (*gf_ref_release_t)(void *data); struct _gf_ref { #ifdef REFCOUNT_NEEDS_LOCK - gf_lock_t lk; /* lock for atomically adjust cnt */ + gf_lock_t lk; /* lock for atomically adjust cnt */ #endif - unsigned int cnt; /* number of users, free on 0 */ + unsigned int cnt; /* number of users, free on 0 */ - gf_ref_release_t release; /* cleanup when cnt == 0 */ - void *data; /* parameter passed to release() */ + gf_ref_release_t release; /* cleanup when cnt == 0 */ + void *data; /* parameter passed to release() */ }; typedef struct _gf_ref gf_ref_t; - /* _gf_ref_get -- increase the refcount * * @return: greater then 0 when a reference was taken, 0 when not */ void * -_gf_ref_get (gf_ref_t *ref); +_gf_ref_get(gf_ref_t *ref); /* _gf_ref_put -- decrease the refcount * @@ -51,7 +51,7 @@ _gf_ref_get (gf_ref_t *ref); * should be done, gf_ref_release_t is called on cleanup */ unsigned int -_gf_ref_put (gf_ref_t *ref); +_gf_ref_put(gf_ref_t *ref); /* _gf_ref_init -- initialize an embedded refcount object * @@ -59,8 +59,7 @@ _gf_ref_put (gf_ref_t *ref); * @data: parameter to be passed to @release */ void -_gf_ref_init (gf_ref_t *ref, gf_ref_release_t release, void *data); - +_gf_ref_init(gf_ref_t *ref, gf_ref_release_t release, void *data); /* * Strong suggestion to use the simplified GF_REF_* API. @@ -75,7 +74,7 @@ _gf_ref_init (gf_ref_t *ref, gf_ref_release_t release, void *data); * ... // additional members * }; */ -#define GF_REF_DECL gf_ref_t _ref +#define GF_REF_DECL gf_ref_t _ref /* GF_REF_INIT -- initialize a GF_REF_DECL structure * @@ -84,20 +83,19 @@ _gf_ref_init (gf_ref_t *ref, gf_ref_release_t release, void *data); * * Sets the refcount to 1. */ -#define GF_REF_INIT(p, d) _gf_ref_init (&(p)->_ref, (gf_ref_release_t) d, p) +#define GF_REF_INIT(p, d) _gf_ref_init(&(p)->_ref, (gf_ref_release_t)d, p) /* GF_REF_GET -- increase the refcount of a GF_REF_DECL structure * * @return: greater then 0 when a reference was taken, 0 when not */ -#define GF_REF_GET(p) _gf_ref_get (&(p)->_ref) +#define GF_REF_GET(p) _gf_ref_get(&(p)->_ref) /* GF_REF_PUT -- decrease the refcount of a GF_REF_DECL structure * * @return: greater then 0 when there are still references, 0 when cleanup * should be done, gf_ref_release_t is called on cleanup */ -#define GF_REF_PUT(p) _gf_ref_put (&(p)->_ref) - +#define GF_REF_PUT(p) _gf_ref_put(&(p)->_ref) #endif /* _REFCOUNT_H */ diff --git a/libglusterfs/src/rot-buffs.h b/libglusterfs/src/rot-buffs.h index 8ee5271533e..1e91e83ecf0 100644 --- a/libglusterfs/src/rot-buffs.h +++ b/libglusterfs/src/rot-buffs.h @@ -16,106 +16,110 @@ #include "common-utils.h" typedef struct rbuf_iovec { - struct iovec iov; + struct iovec iov; - struct list_head list; + struct list_head list; } rbuf_iovec_t; -#define RBUF_IOVEC_SIZE (sizeof (rbuf_iovec_t)) +#define RBUF_IOVEC_SIZE (sizeof(rbuf_iovec_t)) typedef struct rbuf_list { - gf_lock_t c_lock; + gf_lock_t c_lock; - pthread_mutex_t b_lock; /* protects this structure */ - pthread_cond_t b_cond; /* signal for writer completion */ + pthread_mutex_t b_lock; /* protects this structure */ + pthread_cond_t b_cond; /* signal for writer completion */ - gf_boolean_t awaiting; + gf_boolean_t awaiting; - unsigned long long pending; /* pending writers */ - unsigned long long completed; /* completed writers */ + unsigned long long pending; /* pending writers */ + unsigned long long completed; /* completed writers */ - rbuf_iovec_t *rvec; /* currently used IO vector */ + rbuf_iovec_t *rvec; /* currently used IO vector */ - struct list_head veclist; /* list of attached rbuf_iov */ + struct list_head veclist; /* list of attached rbuf_iov */ - unsigned long long used; /* consumable entries - attached in ->veclist */ - unsigned long long total; /* total entries in ->veclist (used - during deallocation) */ + unsigned long long used; /* consumable entries + attached in ->veclist */ + unsigned long long total; /* total entries in ->veclist (used + during deallocation) */ - unsigned long seq[2]; /* if interested, this whould store - the start sequence number and the - range */ + unsigned long seq[2]; /* if interested, this whould store + the start sequence number and the + range */ - struct list_head list; /* attachment to rbuf_t */ + struct list_head list; /* attachment to rbuf_t */ } rbuf_list_t; struct rlist_iter { - struct list_head veclist; + struct list_head veclist; - unsigned long long iter; + unsigned long long iter; }; -#define RLIST_ENTRY_COUNT(rlist) rlist->used +#define RLIST_ENTRY_COUNT(rlist) rlist->used -#define rlist_iter_init(riter, rlist) \ - do { \ - (riter)->iter = rlist->used; \ - (riter)->veclist = rlist->veclist; \ - } while (0) +#define rlist_iter_init(riter, rlist) \ + do { \ + (riter)->iter = rlist->used; \ + (riter)->veclist = rlist->veclist; \ + } while (0) -#define rvec_for_each_entry(pos, riter) \ - for (pos = list_entry \ - ((riter)->veclist.next, typeof(*pos), list); \ - (riter)->iter > 0; \ - pos = list_entry \ - (pos->list.next, typeof(*pos), list), \ - --((riter)->iter)) +#define rvec_for_each_entry(pos, riter) \ + for (pos = list_entry((riter)->veclist.next, typeof(*pos), list); \ + (riter)->iter > 0; \ + pos = list_entry(pos->list.next, typeof(*pos), list), \ + --((riter)->iter)) /** * Sequence number assignment routine is called during buffer * switch under rbuff ->lock. */ -typedef void (sequence_fn) (rbuf_list_t *, void *); +typedef void(sequence_fn)(rbuf_list_t *, void *); -#define RLIST_STORE_SEQ(rlist, start, range) \ - do { \ - rlist->seq[0] = start; \ - rlist->seq[1] = range; \ - } while (0) +#define RLIST_STORE_SEQ(rlist, start, range) \ + do { \ + rlist->seq[0] = start; \ + rlist->seq[1] = range; \ + } while (0) -#define RLIST_GET_SEQ(rlist, start, range) \ - do { \ - start = rlist->seq[0]; \ - range = rlist->seq[1]; \ - } while (0) +#define RLIST_GET_SEQ(rlist, start, range) \ + do { \ + start = rlist->seq[0]; \ + range = rlist->seq[1]; \ + } while (0) typedef struct rbuf { - gf_lock_t lock; /* protects "current" rlist */ + gf_lock_t lock; /* protects "current" rlist */ - rbuf_list_t *current; /* cached pointer to first free rlist */ + rbuf_list_t *current; /* cached pointer to first free rlist */ - struct list_head freelist; + struct list_head freelist; } rbuf_t; typedef enum { - RBUF_CONSUMABLE = 1, - RBUF_BUSY, - RBUF_EMPTY, - RBUF_WOULD_STARVE, + RBUF_CONSUMABLE = 1, + RBUF_BUSY, + RBUF_EMPTY, + RBUF_WOULD_STARVE, } rlist_retval_t; /* Initialization/Destruction */ -rbuf_t *rbuf_init (int); -void rbuf_dtor (rbuf_t *); +rbuf_t * +rbuf_init(int); +void +rbuf_dtor(rbuf_t *); /* Producer API */ -char *rbuf_reserve_write_area (rbuf_t *, size_t, void **); -int rbuf_write_complete (void *); +char * +rbuf_reserve_write_area(rbuf_t *, size_t, void **); +int +rbuf_write_complete(void *); /* Consumer API */ -int rbuf_get_buffer (rbuf_t *, void **, sequence_fn *, void *); -int rbuf_wait_for_completion (rbuf_t *, void *, - void (*)(rbuf_list_t *, void *), void *); +int +rbuf_get_buffer(rbuf_t *, void **, sequence_fn *, void *); +int +rbuf_wait_for_completion(rbuf_t *, void *, void (*)(rbuf_list_t *, void *), + void *); #endif diff --git a/libglusterfs/src/run.h b/libglusterfs/src/run.h index 1dc4bf9f1b0..dd19972d07e 100644 --- a/libglusterfs/src/run.h +++ b/libglusterfs/src/run.h @@ -14,12 +14,12 @@ #define RUN_PIPE -1 struct runner { - char **argv; - unsigned argvlen; - int runerr; - pid_t chpid; - int chfd[3]; - FILE *chio[3]; + char **argv; + unsigned argvlen; + int runerr; + pid_t chpid; + int chfd[3]; + FILE *chio[3]; }; typedef struct runner runner_t; @@ -29,7 +29,8 @@ typedef struct runner runner_t; * * @param runner pointer to runner_t instance */ -void runinit (runner_t *runner); +void +runinit(runner_t *runner); /** * get FILE pointer to which child's stdio is redirected. @@ -40,7 +41,8 @@ void runinit (runner_t *runner); * * @see runner_redir() */ -FILE *runner_chio (runner_t *runner, int fd); +FILE * +runner_chio(runner_t *runner, int fd); /** * add an argument. @@ -52,7 +54,8 @@ FILE *runner_chio (runner_t *runner, int fd); * @param runner pointer to runner_t instance * @param arg command line argument */ -void runner_add_arg (runner_t *runner, const char *arg); +void +runner_add_arg(runner_t *runner, const char *arg); /** * add a sequence of arguments. @@ -66,7 +69,8 @@ void runner_add_arg (runner_t *runner, const char *arg); * * @see runner_add_arg() */ -void runner_add_args (runner_t *runner, ...); +void +runner_add_args(runner_t *runner, ...); /** * add an argument with printf style formatting. @@ -76,7 +80,8 @@ void runner_add_args (runner_t *runner, ...); * @param runner pointer to runner_t instance * @param format printf style format specifier */ -void runner_argprintf (runner_t *runner, const char *format, ...); +void +runner_argprintf(runner_t *runner, const char *format, ...); /** * log a message about the command to be run. @@ -89,8 +94,9 @@ void runner_argprintf (runner_t *runner, const char *format, ...); * * @see gf_log() */ -void runner_log (runner_t *runner, const char *dom, gf_loglevel_t lvl, - const char *msg); +void +runner_log(runner_t *runner, const char *dom, gf_loglevel_t lvl, + const char *msg); /** * set up redirection for child. @@ -111,7 +117,7 @@ void runner_log (runner_t *runner, const char *dom, gf_loglevel_t lvl, * @see runner_start(), dup(2), runner_chio(), runner_start() */ void -runner_redir (runner_t *runner, int fd, int tgt_fd); +runner_redir(runner_t *runner, int fd, int tgt_fd); /** * spawn child with accumulated arg list. @@ -123,7 +129,8 @@ runner_redir (runner_t *runner, int fd, int tgt_fd); * * @see runner_cout() */ -int runner_start (runner_t *runner); +int +runner_start(runner_t *runner); /** * complete operation and free resources. @@ -140,7 +147,8 @@ int runner_start (runner_t *runner); * * @see waitpid(2) */ -int runner_end (runner_t *runner); +int +runner_end(runner_t *runner); /** * variant of runner_end() which does not free internal data @@ -148,7 +156,8 @@ int runner_end (runner_t *runner); * * @see runner_end() */ -int runner_end_reuse (runner_t *runner); +int +runner_end_reuse(runner_t *runner); /** * spawn and child, take it to completion and free resources. @@ -163,13 +172,15 @@ int runner_end_reuse (runner_t *runner); * * @see runner_start(), runner_end() */ -int runner_run (runner_t *runner); +int +runner_run(runner_t *runner); /** * variant for runner_run() which does not wait for acknowledgement * from child, and always assumes it succeeds. */ -int runner_run_nowait (runner_t *runner); +int +runner_run_nowait(runner_t *runner); /** * variant of runner_run() which does not free internal data @@ -177,7 +188,8 @@ int runner_run_nowait (runner_t *runner); * * @see runner_run() */ -int runner_run_reuse (runner_t *runner); +int +runner_run_reuse(runner_t *runner); /** * run a command with args. @@ -189,6 +201,7 @@ int runner_run_reuse (runner_t *runner); * @return 0 on success * -1 on failure */ -int runcmd (const char *arg, ...); +int +runcmd(const char *arg, ...); #endif diff --git a/libglusterfs/src/stack.h b/libglusterfs/src/stack.h index 212a649d42e..8d58e4daab9 100644 --- a/libglusterfs/src/stack.h +++ b/libglusterfs/src/stack.h @@ -37,55 +37,53 @@ typedef struct call_pool call_pool_t; #define NFS_PID 1 #define LOW_PRIO_PROC_PID -1 -#define STACK_ERR_XL_NAME(stack) (stack->err_xl?stack->err_xl->name:"-") -#define STACK_CLIENT_NAME(stack) (stack->client?stack->client->client_uid:"-") +#define STACK_ERR_XL_NAME(stack) (stack->err_xl ? stack->err_xl->name : "-") +#define STACK_CLIENT_NAME(stack) \ + (stack->client ? stack->client->client_uid : "-") -typedef int32_t (*ret_fn_t) (call_frame_t *frame, - call_frame_t *prev_frame, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - ...); +typedef int32_t (*ret_fn_t)(call_frame_t *frame, call_frame_t *prev_frame, + xlator_t *this, int32_t op_ret, int32_t op_errno, + ...); struct call_pool { - union { - struct list_head all_frames; - struct { - call_stack_t *next_call; - call_stack_t *prev_call; - } all_stacks; - }; - int64_t cnt; - gf_atomic_t total_count; - gf_lock_t lock; - struct mem_pool *frame_mem_pool; - struct mem_pool *stack_mem_pool; + union { + struct list_head all_frames; + struct { + call_stack_t *next_call; + call_stack_t *prev_call; + } all_stacks; + }; + int64_t cnt; + gf_atomic_t total_count; + gf_lock_t lock; + struct mem_pool *frame_mem_pool; + struct mem_pool *stack_mem_pool; }; struct _call_frame { - call_stack_t *root; /* stack root */ - call_frame_t *parent; /* previous BP */ - struct list_head frames; - void *local; /* local variables */ - xlator_t *this; /* implicit object */ - ret_fn_t ret; /* op_return address */ - int32_t ref_count; - gf_lock_t lock; - void *cookie; /* unique cookie */ - gf_boolean_t complete; - - glusterfs_fop_t op; - struct timespec begin; /* when this frame was created */ - struct timespec end; /* when this frame completed */ - const char *wind_from; - const char *wind_to; - const char *unwind_from; - const char *unwind_to; + call_stack_t *root; /* stack root */ + call_frame_t *parent; /* previous BP */ + struct list_head frames; + void *local; /* local variables */ + xlator_t *this; /* implicit object */ + ret_fn_t ret; /* op_return address */ + int32_t ref_count; + gf_lock_t lock; + void *cookie; /* unique cookie */ + gf_boolean_t complete; + + glusterfs_fop_t op; + struct timespec begin; /* when this frame was created */ + struct timespec end; /* when this frame completed */ + const char *wind_from; + const char *wind_to; + const char *unwind_from; + const char *unwind_to; }; struct _ns_info { - uint32_t hash; /* Hash of the namespace from SuperFastHash */ - gf_boolean_t found; /* Set to true if we found a namespace */ + uint32_t hash; /* Hash of the namespace from SuperFastHash */ + gf_boolean_t found; /* Set to true if we found a namespace */ }; typedef struct _ns_info ns_info_t; @@ -93,160 +91,157 @@ typedef struct _ns_info ns_info_t; #define SMALL_GROUP_COUNT 128 struct _call_stack { - union { - struct list_head all_frames; - struct { - call_stack_t *next_call; - call_stack_t *prev_call; - }; + union { + struct list_head all_frames; + struct { + call_stack_t *next_call; + call_stack_t *prev_call; }; - call_pool_t *pool; - gf_lock_t stack_lock; - client_t *client; - uint64_t unique; - void *state; /* pointer to request state */ - uid_t uid; - gid_t gid; - pid_t pid; - char identifier[UNIX_PATH_MAX]; - uint16_t ngrps; - uint32_t groups_small[SMALL_GROUP_COUNT]; - uint32_t *groups_large; - uint32_t *groups; - gf_lkowner_t lk_owner; - glusterfs_ctx_t *ctx; - - struct list_head myframes; /* List of call_frame_t that go - to make the call stack */ - - int32_t op; - int8_t type; - struct timespec tv; - xlator_t *err_xl; - int32_t error; - - uint32_t flags; /* use it wisely, think of it as a mechanism to - send information over the wire too */ - struct timespec ctime; /* timestamp, most probably set at - creation of stack. */ - - ns_info_t ns_info; + }; + call_pool_t *pool; + gf_lock_t stack_lock; + client_t *client; + uint64_t unique; + void *state; /* pointer to request state */ + uid_t uid; + gid_t gid; + pid_t pid; + char identifier[UNIX_PATH_MAX]; + uint16_t ngrps; + uint32_t groups_small[SMALL_GROUP_COUNT]; + uint32_t *groups_large; + uint32_t *groups; + gf_lkowner_t lk_owner; + glusterfs_ctx_t *ctx; + + struct list_head myframes; /* List of call_frame_t that go + to make the call stack */ + + int32_t op; + int8_t type; + struct timespec tv; + xlator_t *err_xl; + int32_t error; + + uint32_t flags; /* use it wisely, think of it as a mechanism to + send information over the wire too */ + struct timespec ctime; /* timestamp, most probably set at + creation of stack. */ + + ns_info_t ns_info; }; - /* call_stack flags field users */ -#define MDATA_CTIME (1<<0) -#define MDATA_MTIME (1<<1) -#define MDATA_ATIME (1<<2) -#define MDATA_PAR_CTIME (1<<3) -#define MDATA_PAR_MTIME (1<<4) -#define MDATA_PAR_ATIME (1<<5) - -#define frame_set_uid_gid(frm, u, g) \ - do { \ - if (frm) { \ - (frm)->root->uid = u; \ - (frm)->root->gid = g; \ - (frm)->root->ngrps = 0; \ - } \ - } while (0); \ - +#define MDATA_CTIME (1 << 0) +#define MDATA_MTIME (1 << 1) +#define MDATA_ATIME (1 << 2) +#define MDATA_PAR_CTIME (1 << 3) +#define MDATA_PAR_MTIME (1 << 4) +#define MDATA_PAR_ATIME (1 << 5) + +#define frame_set_uid_gid(frm, u, g) \ + do { \ + if (frm) { \ + (frm)->root->uid = u; \ + (frm)->root->gid = g; \ + (frm)->root->ngrps = 0; \ + } \ + } while (0); struct xlator_fops; -void gf_update_latency (call_frame_t *frame); - +void +gf_update_latency(call_frame_t *frame); static inline void -FRAME_DESTROY (call_frame_t *frame) +FRAME_DESTROY(call_frame_t *frame) { - void *local = NULL; + void *local = NULL; - if (frame->root->ctx->measure_latency) - gf_update_latency (frame); + if (frame->root->ctx->measure_latency) + gf_update_latency(frame); - list_del_init (&frame->frames); - if (frame->local) { - local = frame->local; - frame->local = NULL; + list_del_init(&frame->frames); + if (frame->local) { + local = frame->local; + frame->local = NULL; + } - } + LOCK_DESTROY(&frame->lock); + mem_put(frame); - LOCK_DESTROY (&frame->lock); - mem_put (frame); - - if (local) - mem_put (local); + if (local) + mem_put(local); } - static inline void -STACK_DESTROY (call_stack_t *stack) +STACK_DESTROY(call_stack_t *stack) { - call_frame_t *frame = NULL; - call_frame_t *tmp = NULL; + call_frame_t *frame = NULL; + call_frame_t *tmp = NULL; - LOCK (&stack->pool->lock); - { - list_del_init (&stack->all_frames); - stack->pool->cnt--; - } - UNLOCK (&stack->pool->lock); + LOCK(&stack->pool->lock); + { + list_del_init(&stack->all_frames); + stack->pool->cnt--; + } + UNLOCK(&stack->pool->lock); - LOCK_DESTROY (&stack->stack_lock); + LOCK_DESTROY(&stack->stack_lock); - list_for_each_entry_safe (frame, tmp, &stack->myframes, frames) { - FRAME_DESTROY (frame); - } + list_for_each_entry_safe(frame, tmp, &stack->myframes, frames) + { + FRAME_DESTROY(frame); + } - GF_FREE (stack->groups_large); + GF_FREE(stack->groups_large); - mem_put (stack); + mem_put(stack); } static inline void -STACK_RESET (call_stack_t *stack) +STACK_RESET(call_stack_t *stack) { - call_frame_t *frame = NULL; - call_frame_t *tmp = NULL; - call_frame_t *last = NULL; - struct list_head toreset = {0}; - - INIT_LIST_HEAD (&toreset); - - /* We acquire call_pool->lock only to remove the frames from this stack - * to preserve atomicity. This synchronizes across concurrent requests - * like statedump, STACK_DESTROY etc. */ - - LOCK (&stack->pool->lock); - { - last = list_last_entry (&stack->myframes, call_frame_t, frames); - list_del_init (&last->frames); - list_splice_init (&stack->myframes, &toreset); - list_add (&last->frames, &stack->myframes); - } - UNLOCK (&stack->pool->lock); - - list_for_each_entry_safe (frame, tmp, &toreset, frames) { - FRAME_DESTROY (frame); - } + call_frame_t *frame = NULL; + call_frame_t *tmp = NULL; + call_frame_t *last = NULL; + struct list_head toreset = {0}; + + INIT_LIST_HEAD(&toreset); + + /* We acquire call_pool->lock only to remove the frames from this stack + * to preserve atomicity. This synchronizes across concurrent requests + * like statedump, STACK_DESTROY etc. */ + + LOCK(&stack->pool->lock); + { + last = list_last_entry(&stack->myframes, call_frame_t, frames); + list_del_init(&last->frames); + list_splice_init(&stack->myframes, &toreset); + list_add(&last->frames, &stack->myframes); + } + UNLOCK(&stack->pool->lock); + + list_for_each_entry_safe(frame, tmp, &toreset, frames) + { + FRAME_DESTROY(frame); + } } -#define FRAME_SU_DO(frm, local_type) \ - do { \ - local_type *__local = (frm)->local; \ - __local->uid = frm->root->uid; \ - __local->gid = frm->root->gid; \ - frm->root->uid = 0; \ - frm->root->gid = 0; \ - } while (0); \ - -#define FRAME_SU_UNDO(frm, local_type) \ - do { \ - local_type *__local = (frm)->local; \ - frm->root->uid = __local->uid; \ - frm->root->gid = __local->gid; \ - } while (0); \ - +#define FRAME_SU_DO(frm, local_type) \ + do { \ + local_type *__local = (frm)->local; \ + __local->uid = frm->root->uid; \ + __local->gid = frm->root->gid; \ + frm->root->uid = 0; \ + frm->root->gid = 0; \ + } while (0); + +#define FRAME_SU_UNDO(frm, local_type) \ + do { \ + local_type *__local = (frm)->local; \ + frm->root->uid = __local->uid; \ + frm->root->gid = __local->gid; \ + } while (0); /* NOTE: make sure to keep this as an macro, mainly because, we need 'fn' field here to be the proper fn ptr, so its address is valid entry in @@ -256,8 +251,8 @@ STACK_RESET (call_stack_t *stack) the address offset should give the index */ /* +1 is required as 0 means NULL fop, and we don't have a variable for it */ -#define get_fop_index_from_fn(xl, fn) \ - (1 + (((long)&(fn) - (long)&((xl)->fops->stat)) / sizeof (void *))) +#define get_fop_index_from_fn(xl, fn) \ + (1 + (((long)&(fn) - (long)&((xl)->fops->stat)) / sizeof(void *))) /* NOTE: the above reason holds good here too. But notice that we are getting the base address of the 'stat' fop, which is the first entry in the fop @@ -267,291 +262,283 @@ STACK_RESET (call_stack_t *stack) static inline void * get_the_pt_fop(void *base_fop, int fop_idx) { - void *target_addr = (base_fop + ((fop_idx - 1) * sizeof (void *))); - /* all below type casting is for not getting warning. */ - return (void *)*(unsigned long *)target_addr; + void *target_addr = (base_fop + ((fop_idx - 1) * sizeof(void *))); + /* all below type casting is for not getting warning. */ + return (void *)*(unsigned long *)target_addr; } /* make a call without switching frames */ -#define STACK_WIND_TAIL(frame, obj, fn, params ...) \ - do { \ - xlator_t *old_THIS = NULL; \ - xlator_t *next_xl = obj; \ - typeof(fn) next_xl_fn = fn; \ - int opn = get_fop_index_from_fn((next_xl), (fn)); \ - \ - frame->this = next_xl; \ - frame->wind_to = #fn; \ - old_THIS = THIS; \ - THIS = next_xl; \ - gf_msg_trace ("stack-trace", 0, \ - "stack-address: %p, " \ - "winding from %s to %s", \ - frame->root, old_THIS->name, \ - THIS->name); \ - /* Need to capture counts at leaf node */ \ - if (!next_xl->pass_through && !next_xl->children) { \ - GF_ATOMIC_INC (next_xl->stats.total.metrics[opn].fop); \ - GF_ATOMIC_INC (next_xl->stats.interval.metrics[opn].fop); \ - GF_ATOMIC_INC (next_xl->stats.total.count); \ - GF_ATOMIC_INC (next_xl->stats.interval.count); \ - } \ - \ - if (next_xl->pass_through) { \ - next_xl_fn = get_the_pt_fop(&next_xl->pass_through_fops->stat, opn); \ - } \ - next_xl_fn (frame, next_xl, params); \ - THIS = old_THIS; \ - } while (0) - +#define STACK_WIND_TAIL(frame, obj, fn, params...) \ + do { \ + xlator_t *old_THIS = NULL; \ + xlator_t *next_xl = obj; \ + typeof(fn) next_xl_fn = fn; \ + int opn = get_fop_index_from_fn((next_xl), (fn)); \ + \ + frame->this = next_xl; \ + frame->wind_to = #fn; \ + old_THIS = THIS; \ + THIS = next_xl; \ + gf_msg_trace("stack-trace", 0, \ + "stack-address: %p, " \ + "winding from %s to %s", \ + frame->root, old_THIS->name, THIS->name); \ + /* Need to capture counts at leaf node */ \ + if (!next_xl->pass_through && !next_xl->children) { \ + GF_ATOMIC_INC(next_xl->stats.total.metrics[opn].fop); \ + GF_ATOMIC_INC(next_xl->stats.interval.metrics[opn].fop); \ + GF_ATOMIC_INC(next_xl->stats.total.count); \ + GF_ATOMIC_INC(next_xl->stats.interval.count); \ + } \ + \ + if (next_xl->pass_through) { \ + next_xl_fn = get_the_pt_fop(&next_xl->pass_through_fops->stat, \ + opn); \ + } \ + next_xl_fn(frame, next_xl, params); \ + THIS = old_THIS; \ + } while (0) /* make a call */ -#define STACK_WIND(frame, rfn, obj, fn, params ...) \ - STACK_WIND_COMMON(frame, rfn, 0, NULL, obj, fn, params) +#define STACK_WIND(frame, rfn, obj, fn, params...) \ + STACK_WIND_COMMON(frame, rfn, 0, NULL, obj, fn, params) /* make a call with a cookie */ -#define STACK_WIND_COOKIE(frame, rfn, cky, obj, fn, params ...) \ - STACK_WIND_COMMON(frame, rfn, 1, cky, obj, fn, params) +#define STACK_WIND_COOKIE(frame, rfn, cky, obj, fn, params...) \ + STACK_WIND_COMMON(frame, rfn, 1, cky, obj, fn, params) /* Cookie passed as the argument can be NULL (ptr) or 0 (int). Hence we have to have a mechanism to separate out the two STACK_WIND formats. Needed a common macro, as other than for cookie, all the other code is common across. */ -#define STACK_WIND_COMMON(frame, rfn, has_cookie, cky, obj, fn, params ...) \ - do { \ - call_frame_t *_new = NULL; \ - xlator_t *old_THIS = NULL; \ - typeof(fn) next_xl_fn = fn; \ - \ - _new = mem_get0 (frame->root->pool->frame_mem_pool); \ - if (!_new) { \ - break; \ - } \ - typeof(fn##_cbk) tmp_cbk = rfn; \ - _new->root = frame->root; \ - _new->this = obj; \ - _new->ret = (ret_fn_t) tmp_cbk; \ - _new->parent = frame; \ - /* (void *) is required for avoiding gcc warning */ \ - _new->cookie = ((has_cookie == 1) ? \ - (void *)(cky) : (void *)_new); \ - _new->wind_from = __FUNCTION__; \ - _new->wind_to = #fn; \ - _new->unwind_to = #rfn; \ - LOCK_INIT (&_new->lock); \ - LOCK(&frame->root->stack_lock); \ - { \ - list_add (&_new->frames, &frame->root->myframes);\ - frame->ref_count++; \ - } \ - UNLOCK(&frame->root->stack_lock); \ - fn##_cbk = rfn; \ - old_THIS = THIS; \ - THIS = obj; \ - gf_msg_trace ("stack-trace", 0, \ - "stack-address: %p, " \ - "winding from %s to %s", \ - frame->root, old_THIS->name, \ - THIS->name); \ - if (obj->ctx->measure_latency) \ - timespec_now (&_new->begin); \ - _new->op = get_fop_index_from_fn ((_new->this), (fn)); \ - if (!obj->pass_through) { \ - GF_ATOMIC_INC (obj->stats.total.metrics[_new->op].fop); \ - GF_ATOMIC_INC (obj->stats.interval.metrics[_new->op].fop); \ - GF_ATOMIC_INC (obj->stats.total.count); \ - GF_ATOMIC_INC (obj->stats.interval.count); \ - } else { \ - /* we want to get to the actual fop to call */ \ - next_xl_fn = get_the_pt_fop(&obj->pass_through_fops->stat, _new->op); \ - } \ - next_xl_fn (_new, obj, params); \ - THIS = old_THIS; \ - } while (0) - +#define STACK_WIND_COMMON(frame, rfn, has_cookie, cky, obj, fn, params...) \ + do { \ + call_frame_t *_new = NULL; \ + xlator_t *old_THIS = NULL; \ + typeof(fn) next_xl_fn = fn; \ + \ + _new = mem_get0(frame->root->pool->frame_mem_pool); \ + if (!_new) { \ + break; \ + } \ + typeof(fn##_cbk) tmp_cbk = rfn; \ + _new->root = frame->root; \ + _new->this = obj; \ + _new->ret = (ret_fn_t)tmp_cbk; \ + _new->parent = frame; \ + /* (void *) is required for avoiding gcc warning */ \ + _new->cookie = ((has_cookie == 1) ? (void *)(cky) : (void *)_new); \ + _new->wind_from = __FUNCTION__; \ + _new->wind_to = #fn; \ + _new->unwind_to = #rfn; \ + LOCK_INIT(&_new->lock); \ + LOCK(&frame->root->stack_lock); \ + { \ + list_add(&_new->frames, &frame->root->myframes); \ + frame->ref_count++; \ + } \ + UNLOCK(&frame->root->stack_lock); \ + fn##_cbk = rfn; \ + old_THIS = THIS; \ + THIS = obj; \ + gf_msg_trace("stack-trace", 0, \ + "stack-address: %p, " \ + "winding from %s to %s", \ + frame->root, old_THIS->name, THIS->name); \ + if (obj->ctx->measure_latency) \ + timespec_now(&_new->begin); \ + _new->op = get_fop_index_from_fn((_new->this), (fn)); \ + if (!obj->pass_through) { \ + GF_ATOMIC_INC(obj->stats.total.metrics[_new->op].fop); \ + GF_ATOMIC_INC(obj->stats.interval.metrics[_new->op].fop); \ + GF_ATOMIC_INC(obj->stats.total.count); \ + GF_ATOMIC_INC(obj->stats.interval.count); \ + } else { \ + /* we want to get to the actual fop to call */ \ + next_xl_fn = get_the_pt_fop(&obj->pass_through_fops->stat, \ + _new->op); \ + } \ + next_xl_fn(_new, obj, params); \ + THIS = old_THIS; \ + } while (0) #define STACK_UNWIND STACK_UNWIND_STRICT /* return from function in type-safe way */ -#define STACK_UNWIND_STRICT(fop, frame, op_ret, op_errno, params ...) \ - do { \ - fop_##fop##_cbk_t fn = NULL; \ - call_frame_t *_parent = NULL; \ - xlator_t *old_THIS = NULL; \ - \ - if (!frame) { \ - gf_msg ("stack", GF_LOG_CRITICAL, 0, \ - LG_MSG_FRAME_ERROR, "!frame"); \ - break; \ - } \ - if ((op_ret) < 0) { \ - gf_msg_debug ("stack-trace", op_errno, \ - "stack-address: %p, " \ - "%s returned %d error: %s", \ - frame->root, THIS->name, \ - (int32_t)(op_ret), \ - strerror(op_errno)); \ - } else { \ - gf_msg_trace ("stack-trace", 0, \ - "stack-address: %p, " \ - "%s returned %d", \ - frame->root, THIS->name, \ - (int32_t)(op_ret)); \ - } \ - fn = (fop_##fop##_cbk_t)frame->ret; \ - _parent = frame->parent; \ - LOCK(&frame->root->stack_lock); \ - { \ - _parent->ref_count--; \ - if ((op_ret) < 0 && \ - (op_errno) != frame->root->error) { \ - frame->root->err_xl = frame->this; \ - frame->root->error = (op_errno); \ - } else if ((op_ret) == 0) { \ - frame->root->err_xl = NULL; \ - frame->root->error = 0; \ - } \ - } \ - UNLOCK(&frame->root->stack_lock); \ - old_THIS = THIS; \ - THIS = _parent->this; \ - frame->complete = _gf_true; \ - frame->unwind_from = __FUNCTION__; \ - if (frame->this->ctx->measure_latency) { \ - timespec_now (&frame->end); \ - /* required for top most xlator */ \ - if (_parent->ret == NULL) \ - timespec_now (&_parent->end); \ - } \ - if (op_ret < 0) { \ - GF_ATOMIC_INC (THIS->stats.total.metrics[frame->op].cbk); \ - GF_ATOMIC_INC (THIS->stats.interval.metrics[frame->op].cbk); \ - } \ - fn (_parent, frame->cookie, _parent->this, op_ret, \ - op_errno, params); \ - THIS = old_THIS; \ - } while (0) - +#define STACK_UNWIND_STRICT(fop, frame, op_ret, op_errno, params...) \ + do { \ + fop_##fop##_cbk_t fn = NULL; \ + call_frame_t *_parent = NULL; \ + xlator_t *old_THIS = NULL; \ + \ + if (!frame) { \ + gf_msg("stack", GF_LOG_CRITICAL, 0, LG_MSG_FRAME_ERROR, "!frame"); \ + break; \ + } \ + if ((op_ret) < 0) { \ + gf_msg_debug("stack-trace", op_errno, \ + "stack-address: %p, " \ + "%s returned %d error: %s", \ + frame->root, THIS->name, (int32_t)(op_ret), \ + strerror(op_errno)); \ + } else { \ + gf_msg_trace("stack-trace", 0, \ + "stack-address: %p, " \ + "%s returned %d", \ + frame->root, THIS->name, (int32_t)(op_ret)); \ + } \ + fn = (fop_##fop##_cbk_t)frame->ret; \ + _parent = frame->parent; \ + LOCK(&frame->root->stack_lock); \ + { \ + _parent->ref_count--; \ + if ((op_ret) < 0 && (op_errno) != frame->root->error) { \ + frame->root->err_xl = frame->this; \ + frame->root->error = (op_errno); \ + } else if ((op_ret) == 0) { \ + frame->root->err_xl = NULL; \ + frame->root->error = 0; \ + } \ + } \ + UNLOCK(&frame->root->stack_lock); \ + old_THIS = THIS; \ + THIS = _parent->this; \ + frame->complete = _gf_true; \ + frame->unwind_from = __FUNCTION__; \ + if (frame->this->ctx->measure_latency) { \ + timespec_now(&frame->end); \ + /* required for top most xlator */ \ + if (_parent->ret == NULL) \ + timespec_now(&_parent->end); \ + } \ + if (op_ret < 0) { \ + GF_ATOMIC_INC(THIS->stats.total.metrics[frame->op].cbk); \ + GF_ATOMIC_INC(THIS->stats.interval.metrics[frame->op].cbk); \ + } \ + fn(_parent, frame->cookie, _parent->this, op_ret, op_errno, params); \ + THIS = old_THIS; \ + } while (0) static inline int -call_stack_alloc_groups (call_stack_t *stack, int ngrps) +call_stack_alloc_groups(call_stack_t *stack, int ngrps) { - if (ngrps <= SMALL_GROUP_COUNT) { - stack->groups = stack->groups_small; - } else { - stack->groups_large = GF_CALLOC (ngrps, sizeof (gid_t), - gf_common_mt_groups_t); - if (!stack->groups_large) - return -1; - stack->groups = stack->groups_large; - } - - stack->ngrps = ngrps; - - return 0; + if (ngrps <= SMALL_GROUP_COUNT) { + stack->groups = stack->groups_small; + } else { + stack->groups_large = GF_CALLOC(ngrps, sizeof(gid_t), + gf_common_mt_groups_t); + if (!stack->groups_large) + return -1; + stack->groups = stack->groups_large; + } + + stack->ngrps = ngrps; + + return 0; } -static inline -int call_frames_count (call_stack_t *call_stack) +static inline int +call_frames_count(call_stack_t *call_stack) { - call_frame_t *pos; - int32_t count = 0; + call_frame_t *pos; + int32_t count = 0; - if (!call_stack) - return count; + if (!call_stack) + return count; - list_for_each_entry (pos, &call_stack->myframes, frames) - count++; + list_for_each_entry(pos, &call_stack->myframes, frames) count++; - return count; + return count; } static inline call_frame_t * -copy_frame (call_frame_t *frame) +copy_frame(call_frame_t *frame) { - call_stack_t *newstack = NULL; - call_stack_t *oldstack = NULL; - call_frame_t *newframe = NULL; - - if (!frame) { - return NULL; - } - - newstack = mem_get0 (frame->root->pool->stack_mem_pool); - if (newstack == NULL) { - return NULL; - } - - INIT_LIST_HEAD (&newstack->myframes); - - newframe = mem_get0 (frame->root->pool->frame_mem_pool); - if (!newframe) { - mem_put (newstack); - return NULL; - } - - newframe->this = frame->this; - newframe->root = newstack; - INIT_LIST_HEAD (&newframe->frames); - list_add (&newframe->frames, &newstack->myframes); - - oldstack = frame->root; - - newstack->uid = oldstack->uid; - newstack->gid = oldstack->gid; - newstack->pid = oldstack->pid; - newstack->op = oldstack->op; - newstack->type = oldstack->type; - newstack->ctime = oldstack->ctime; - newstack->flags = oldstack->flags; - if (call_stack_alloc_groups (newstack, oldstack->ngrps) != 0) { - mem_put (newstack); - return NULL; - } - if (!oldstack->groups) { - gf_msg_debug ("stack", EINVAL, "groups is null (ngrps: %d)", - oldstack->ngrps); - /* Considering 'groups' is NULL, set ngrps to 0 */ - oldstack->ngrps = 0; - - if (oldstack->groups_large) - oldstack->groups = oldstack->groups_large; - else - oldstack->groups = oldstack->groups_small; - } - newstack->ngrps = oldstack->ngrps; - memcpy (newstack->groups, oldstack->groups, - sizeof (gid_t) * oldstack->ngrps); - newstack->unique = oldstack->unique; - newstack->pool = oldstack->pool; - newstack->lk_owner = oldstack->lk_owner; - newstack->ctx = oldstack->ctx; - - if (newstack->ctx->measure_latency) { - timespec_now (&newstack->tv); - memcpy (&newframe->begin, &newstack->tv, - sizeof (newstack->tv)); - } - - LOCK_INIT (&newframe->lock); - LOCK_INIT (&newstack->stack_lock); - - LOCK (&oldstack->pool->lock); - { - list_add (&newstack->all_frames, &oldstack->all_frames); - newstack->pool->cnt++; - } - UNLOCK (&oldstack->pool->lock); - GF_ATOMIC_INC (newstack->pool->total_count); - - return newframe; + call_stack_t *newstack = NULL; + call_stack_t *oldstack = NULL; + call_frame_t *newframe = NULL; + + if (!frame) { + return NULL; + } + + newstack = mem_get0(frame->root->pool->stack_mem_pool); + if (newstack == NULL) { + return NULL; + } + + INIT_LIST_HEAD(&newstack->myframes); + + newframe = mem_get0(frame->root->pool->frame_mem_pool); + if (!newframe) { + mem_put(newstack); + return NULL; + } + + newframe->this = frame->this; + newframe->root = newstack; + INIT_LIST_HEAD(&newframe->frames); + list_add(&newframe->frames, &newstack->myframes); + + oldstack = frame->root; + + newstack->uid = oldstack->uid; + newstack->gid = oldstack->gid; + newstack->pid = oldstack->pid; + newstack->op = oldstack->op; + newstack->type = oldstack->type; + newstack->ctime = oldstack->ctime; + newstack->flags = oldstack->flags; + if (call_stack_alloc_groups(newstack, oldstack->ngrps) != 0) { + mem_put(newstack); + return NULL; + } + if (!oldstack->groups) { + gf_msg_debug("stack", EINVAL, "groups is null (ngrps: %d)", + oldstack->ngrps); + /* Considering 'groups' is NULL, set ngrps to 0 */ + oldstack->ngrps = 0; + + if (oldstack->groups_large) + oldstack->groups = oldstack->groups_large; + else + oldstack->groups = oldstack->groups_small; + } + newstack->ngrps = oldstack->ngrps; + memcpy(newstack->groups, oldstack->groups, sizeof(gid_t) * oldstack->ngrps); + newstack->unique = oldstack->unique; + newstack->pool = oldstack->pool; + newstack->lk_owner = oldstack->lk_owner; + newstack->ctx = oldstack->ctx; + + if (newstack->ctx->measure_latency) { + timespec_now(&newstack->tv); + memcpy(&newframe->begin, &newstack->tv, sizeof(newstack->tv)); + } + + LOCK_INIT(&newframe->lock); + LOCK_INIT(&newstack->stack_lock); + + LOCK(&oldstack->pool->lock); + { + list_add(&newstack->all_frames, &oldstack->all_frames); + newstack->pool->cnt++; + } + UNLOCK(&oldstack->pool->lock); + GF_ATOMIC_INC(newstack->pool->total_count); + + return newframe; } -void call_stack_set_groups (call_stack_t *stack, int ngrps, gid_t **groupbuf_p); -void gf_proc_dump_pending_frames(call_pool_t *call_pool); -void gf_proc_dump_pending_frames_to_dict (call_pool_t *call_pool, - dict_t *dict); -call_frame_t *create_frame (xlator_t *xl, call_pool_t *pool); -gf_boolean_t __is_fuse_call (call_frame_t *frame); +void +call_stack_set_groups(call_stack_t *stack, int ngrps, gid_t **groupbuf_p); +void +gf_proc_dump_pending_frames(call_pool_t *call_pool); +void +gf_proc_dump_pending_frames_to_dict(call_pool_t *call_pool, dict_t *dict); +call_frame_t * +create_frame(xlator_t *xl, call_pool_t *pool); +gf_boolean_t +__is_fuse_call(call_frame_t *frame); #endif /* _STACK_H */ diff --git a/libglusterfs/src/statedump.h b/libglusterfs/src/statedump.h index 92246e1e37e..6c32c161ad3 100644 --- a/libglusterfs/src/statedump.h +++ b/libglusterfs/src/statedump.h @@ -8,7 +8,6 @@ cases as published by the Free Software Foundation. */ - #ifndef STATEDUMP_H #define STATEDUMP_H @@ -19,93 +18,111 @@ #define GF_DUMP_MAX_BUF_LEN 4096 typedef struct gf_dump_xl_options_ { - gf_boolean_t dump_priv; - gf_boolean_t dump_inode; - gf_boolean_t dump_fd; - gf_boolean_t dump_inodectx; - gf_boolean_t dump_fdctx; - gf_boolean_t dump_history; + gf_boolean_t dump_priv; + gf_boolean_t dump_inode; + gf_boolean_t dump_fd; + gf_boolean_t dump_inodectx; + gf_boolean_t dump_fdctx; + gf_boolean_t dump_history; } gf_dump_xl_options_t; typedef struct gf_dump_options_ { - gf_boolean_t dump_mem; - gf_boolean_t dump_iobuf; - gf_boolean_t dump_callpool; - gf_dump_xl_options_t xl_options; //options for all xlators - char *dump_path; + gf_boolean_t dump_mem; + gf_boolean_t dump_iobuf; + gf_boolean_t dump_callpool; + gf_dump_xl_options_t xl_options; // options for all xlators + char *dump_path; } gf_dump_options_t; extern gf_dump_options_t dump_options; -__attribute__ ((__format__ (__printf__, 3, 4))) -static inline void -_gf_proc_dump_build_key (char *key, const char *prefix, const char *fmt, ...) +__attribute__((__format__(__printf__, 3, 4))) static inline void +_gf_proc_dump_build_key(char *key, const char *prefix, const char *fmt, ...) { - va_list ap; - int32_t len; - - len = snprintf(key, GF_DUMP_MAX_BUF_LEN, "%s.", prefix); - if (len >= 0) { - va_start(ap, fmt); - len = vsnprintf(key + len, GF_DUMP_MAX_BUF_LEN - len, fmt, ap); - va_end(ap); - } - if (len < 0) { - *key = 0; - } + va_list ap; + int32_t len; + + len = snprintf(key, GF_DUMP_MAX_BUF_LEN, "%s.", prefix); + if (len >= 0) { + va_start(ap, fmt); + len = vsnprintf(key + len, GF_DUMP_MAX_BUF_LEN - len, fmt, ap); + va_end(ap); + } + if (len < 0) { + *key = 0; + } } -#define gf_proc_dump_build_key(key, key_prefix, fmt...) \ - { \ - _gf_proc_dump_build_key(key, key_prefix, ##fmt); \ - } +#define gf_proc_dump_build_key(key, key_prefix, fmt...) \ + { \ + _gf_proc_dump_build_key(key, key_prefix, ##fmt); \ + } -#define GF_PROC_DUMP_SET_OPTION(opt,val) opt = val +#define GF_PROC_DUMP_SET_OPTION(opt, val) opt = val -#define GF_CHECK_DUMP_OPTION_ENABLED(option_dump, var, label) \ - do { \ - if (option_dump == _gf_true) { \ - var = _gf_false; \ - goto label; \ - } \ - } while (0); +#define GF_CHECK_DUMP_OPTION_ENABLED(option_dump, var, label) \ + do { \ + if (option_dump == _gf_true) { \ + var = _gf_false; \ + goto label; \ + } \ + } while (0); -void gf_proc_dump_init(); +void +gf_proc_dump_init(); -void gf_proc_dump_fini(void); +void +gf_proc_dump_fini(void); -void gf_proc_dump_cleanup(void); +void +gf_proc_dump_cleanup(void); -void gf_proc_dump_info(int signum, glusterfs_ctx_t *ctx); +void +gf_proc_dump_info(int signum, glusterfs_ctx_t *ctx); -int gf_proc_dump_add_section(char *key,...); +int +gf_proc_dump_add_section(char *key, ...); -int gf_proc_dump_write(char *key, char *value,...); +int +gf_proc_dump_write(char *key, char *value, ...); -void inode_table_dump(inode_table_t *itable, char *prefix); +void +inode_table_dump(inode_table_t *itable, char *prefix); -void inode_table_dump_to_dict (inode_table_t *itable, char *prefix, dict_t *dict); +void +inode_table_dump_to_dict(inode_table_t *itable, char *prefix, dict_t *dict); -void fdtable_dump(fdtable_t *fdtable, char *prefix); +void +fdtable_dump(fdtable_t *fdtable, char *prefix); -void fdtable_dump_to_dict (fdtable_t *fdtable, char *prefix, dict_t *dict); +void +fdtable_dump_to_dict(fdtable_t *fdtable, char *prefix, dict_t *dict); -void inode_dump(inode_t *inode, char *prefix); +void +inode_dump(inode_t *inode, char *prefix); -void gf_proc_dump_mem_info_to_dict (dict_t *dict); +void +gf_proc_dump_mem_info_to_dict(dict_t *dict); -void gf_proc_dump_mempool_info_to_dict (glusterfs_ctx_t *ctx, dict_t *dict); +void +gf_proc_dump_mempool_info_to_dict(glusterfs_ctx_t *ctx, dict_t *dict); -void glusterd_init (int sig); +void +glusterd_init(int sig); -void gf_proc_dump_xlator_private (xlator_t *this, strfd_t *strfd); +void +gf_proc_dump_xlator_private(xlator_t *this, strfd_t *strfd); -void gf_proc_dump_mallinfo (strfd_t *strfd); +void +gf_proc_dump_mallinfo(strfd_t *strfd); -void gf_proc_dump_xlator_history (xlator_t *this, strfd_t *strfd); +void +gf_proc_dump_xlator_history(xlator_t *this, strfd_t *strfd); -void gf_proc_dump_xlator_meminfo (xlator_t *this, strfd_t *strfd); +void +gf_proc_dump_xlator_meminfo(xlator_t *this, strfd_t *strfd); -void gf_proc_dump_xlator_profile (xlator_t *this, strfd_t *strfd); +void +gf_proc_dump_xlator_profile(xlator_t *this, strfd_t *strfd); #endif /* STATEDUMP_H */ diff --git a/libglusterfs/src/store.h b/libglusterfs/src/store.h index 7ac307bf5ae..d69e39a7ce3 100644 --- a/libglusterfs/src/store.h +++ b/libglusterfs/src/store.h @@ -14,96 +14,96 @@ #include "glusterfs.h" struct gf_store_handle_ { - char *path; - int fd; - int tmp_fd; - FILE *read; - int locked; /* state of lockf() */ + char *path; + int fd; + int tmp_fd; + FILE *read; + int locked; /* state of lockf() */ }; typedef struct gf_store_handle_ gf_store_handle_t; struct gf_store_iter_ { - FILE *file; - char filepath[PATH_MAX]; + FILE *file; + char filepath[PATH_MAX]; }; typedef struct gf_store_iter_ gf_store_iter_t; typedef enum { - GD_STORE_SUCCESS, - GD_STORE_KEY_NULL, - GD_STORE_VALUE_NULL, - GD_STORE_KEY_VALUE_NULL, - GD_STORE_EOF, - GD_STORE_ENOMEM, - GD_STORE_STAT_FAILED + GD_STORE_SUCCESS, + GD_STORE_KEY_NULL, + GD_STORE_VALUE_NULL, + GD_STORE_KEY_VALUE_NULL, + GD_STORE_EOF, + GD_STORE_ENOMEM, + GD_STORE_STAT_FAILED } gf_store_op_errno_t; int32_t -gf_store_mkdir (char *path); +gf_store_mkdir(char *path); int32_t -gf_store_handle_create_on_absence (gf_store_handle_t **shandle, char *path); +gf_store_handle_create_on_absence(gf_store_handle_t **shandle, char *path); int32_t -gf_store_mkstemp (gf_store_handle_t *shandle); +gf_store_mkstemp(gf_store_handle_t *shandle); int -gf_store_sync_direntry (char *path); +gf_store_sync_direntry(char *path); int32_t -gf_store_rename_tmppath (gf_store_handle_t *shandle); +gf_store_rename_tmppath(gf_store_handle_t *shandle); int32_t -gf_store_unlink_tmppath (gf_store_handle_t *shandle); +gf_store_unlink_tmppath(gf_store_handle_t *shandle); int -gf_store_read_and_tokenize (FILE *file, char *str, int size, char **iter_key, - char **iter_val, gf_store_op_errno_t *store_errno); +gf_store_read_and_tokenize(FILE *file, char *str, int size, char **iter_key, + char **iter_val, gf_store_op_errno_t *store_errno); int32_t -gf_store_retrieve_value (gf_store_handle_t *handle, char *key, char **value); +gf_store_retrieve_value(gf_store_handle_t *handle, char *key, char **value); int32_t -gf_store_save_value (int fd, char *key, char *value); +gf_store_save_value(int fd, char *key, char *value); int32_t -gf_store_handle_new (const char *path, gf_store_handle_t **handle); +gf_store_handle_new(const char *path, gf_store_handle_t **handle); int -gf_store_handle_retrieve (char *path, gf_store_handle_t **handle); +gf_store_handle_retrieve(char *path, gf_store_handle_t **handle); int32_t -gf_store_handle_destroy (gf_store_handle_t *handle); +gf_store_handle_destroy(gf_store_handle_t *handle); int32_t -gf_store_iter_new (gf_store_handle_t *shandle, gf_store_iter_t **iter); +gf_store_iter_new(gf_store_handle_t *shandle, gf_store_iter_t **iter); int32_t -gf_store_validate_key_value (char *storepath, char *key, char *val, - gf_store_op_errno_t *op_errno); +gf_store_validate_key_value(char *storepath, char *key, char *val, + gf_store_op_errno_t *op_errno); int32_t -gf_store_iter_get_next (gf_store_iter_t *iter, char **key, char **value, - gf_store_op_errno_t *op_errno); +gf_store_iter_get_next(gf_store_iter_t *iter, char **key, char **value, + gf_store_op_errno_t *op_errno); int32_t -gf_store_iter_get_matching (gf_store_iter_t *iter, char *key, char **value); +gf_store_iter_get_matching(gf_store_iter_t *iter, char *key, char **value); int32_t -gf_store_iter_destroy (gf_store_iter_t *iter); +gf_store_iter_destroy(gf_store_iter_t *iter); -char* -gf_store_strerror (gf_store_op_errno_t op_errno); +char * +gf_store_strerror(gf_store_op_errno_t op_errno); int -gf_store_lock (gf_store_handle_t *sh); +gf_store_lock(gf_store_handle_t *sh); void -gf_store_unlock (gf_store_handle_t *sh); +gf_store_unlock(gf_store_handle_t *sh); int -gf_store_locked_local (gf_store_handle_t *sh); +gf_store_locked_local(gf_store_handle_t *sh); #endif diff --git a/libglusterfs/src/strfd.h b/libglusterfs/src/strfd.h index 9084e235eef..861cd02e005 100644 --- a/libglusterfs/src/strfd.h +++ b/libglusterfs/src/strfd.h @@ -12,19 +12,23 @@ #define _STRFD_H typedef struct { - void *data; - size_t alloc_size; - size_t size; - off_t pos; + void *data; + size_t alloc_size; + size_t size; + off_t pos; } strfd_t; -strfd_t *strfd_open(); +strfd_t * +strfd_open(); -int strprintf(strfd_t *strfd, const char *fmt, ...) - __attribute__ ((__format__ (__printf__, 2, 3))); +int +strprintf(strfd_t *strfd, const char *fmt, ...) + __attribute__((__format__(__printf__, 2, 3))); -int strvprintf(strfd_t *strfd, const char *fmt, va_list ap); +int +strvprintf(strfd_t *strfd, const char *fmt, va_list ap); -int strfd_close(strfd_t *strfd); +int +strfd_close(strfd_t *strfd); #endif diff --git a/libglusterfs/src/syncop-utils.h b/libglusterfs/src/syncop-utils.h index 97b35046780..1f3ee403edc 100644 --- a/libglusterfs/src/syncop-utils.h +++ b/libglusterfs/src/syncop-utils.h @@ -11,45 +11,44 @@ #ifndef _SYNCOP_UTILS_H #define _SYNCOP_UTILS_H -typedef int (*syncop_dir_scan_fn_t) (xlator_t *subvol, gf_dirent_t *entry, - loc_t *parent, void *data); +typedef int (*syncop_dir_scan_fn_t)(xlator_t *subvol, gf_dirent_t *entry, + loc_t *parent, void *data); int -syncop_ftw (xlator_t *subvol, loc_t *loc, int pid, void *data, - int (*fn) (xlator_t *subvol, gf_dirent_t *entry, loc_t *parent, - void *data)); +syncop_ftw(xlator_t *subvol, loc_t *loc, int pid, void *data, + int (*fn)(xlator_t *subvol, gf_dirent_t *entry, loc_t *parent, + void *data)); int -syncop_mt_dir_scan (call_frame_t *frame, xlator_t *subvol, loc_t *loc, int pid, - void *data, syncop_dir_scan_fn_t fn, dict_t *xdata, - uint32_t max_jobs, uint32_t max_qlen); +syncop_mt_dir_scan(call_frame_t *frame, xlator_t *subvol, loc_t *loc, int pid, + void *data, syncop_dir_scan_fn_t fn, dict_t *xdata, + uint32_t max_jobs, uint32_t max_qlen); int -syncop_dir_scan (xlator_t *subvol, loc_t *loc, int pid, void *data, - int (*fn) (xlator_t *subvol, gf_dirent_t *entry, loc_t *parent, - void *data)); +syncop_dir_scan(xlator_t *subvol, loc_t *loc, int pid, void *data, + int (*fn)(xlator_t *subvol, gf_dirent_t *entry, loc_t *parent, + void *data)); int -syncop_dirfd (xlator_t *subvol, loc_t *loc, fd_t **fd, int pid); +syncop_dirfd(xlator_t *subvol, loc_t *loc, fd_t **fd, int pid); int -syncop_is_subvol_local (xlator_t *this, loc_t *loc, gf_boolean_t *is_local); +syncop_is_subvol_local(xlator_t *this, loc_t *loc, gf_boolean_t *is_local); int -syncop_gfid_to_path (inode_table_t *itable, xlator_t *subvol, uuid_t gfid, - char **path_p); +syncop_gfid_to_path(inode_table_t *itable, xlator_t *subvol, uuid_t gfid, + char **path_p); int -syncop_ftw_throttle (xlator_t *subvol, loc_t *loc, int pid, void *data, - int (*fn) (xlator_t *subvol, gf_dirent_t *entry, - loc_t *parent, void *data), - int count, int sleep_time); +syncop_ftw_throttle(xlator_t *subvol, loc_t *loc, int pid, void *data, + int (*fn)(xlator_t *subvol, gf_dirent_t *entry, + loc_t *parent, void *data), + int count, int sleep_time); int -syncop_inode_find (xlator_t *this, xlator_t *subvol, - uuid_t gfid, inode_t **inode, - dict_t *xdata, dict_t **rsp_dict); +syncop_inode_find(xlator_t *this, xlator_t *subvol, uuid_t gfid, + inode_t **inode, dict_t *xdata, dict_t **rsp_dict); int -syncop_gfid_to_path_hard (inode_table_t *itable, xlator_t *subvol, uuid_t gfid, - inode_t *inode, char **path_p, - gf_boolean_t hard_resolve); +syncop_gfid_to_path_hard(inode_table_t *itable, xlator_t *subvol, uuid_t gfid, + inode_t *inode, char **path_p, + gf_boolean_t hard_resolve); #endif /* _SYNCOP_H */ diff --git a/libglusterfs/src/syncop.h b/libglusterfs/src/syncop.h index 3000d2e74c9..d07aed3d53b 100644 --- a/libglusterfs/src/syncop.h +++ b/libglusterfs/src/syncop.h @@ -23,245 +23,233 @@ /* * Flags for syncopctx valid elements */ -#define SYNCOPCTX_UID 0x00000001 -#define SYNCOPCTX_GID 0x00000002 +#define SYNCOPCTX_UID 0x00000001 +#define SYNCOPCTX_GID 0x00000002 #define SYNCOPCTX_GROUPS 0x00000004 -#define SYNCOPCTX_PID 0x00000008 +#define SYNCOPCTX_PID 0x00000008 #define SYNCOPCTX_LKOWNER 0x00000010 struct synctask; struct syncproc; struct syncenv; +typedef int (*synctask_cbk_t)(int ret, call_frame_t *frame, void *opaque); -typedef int (*synctask_cbk_t) (int ret, call_frame_t *frame, void *opaque); - -typedef int (*synctask_fn_t) (void *opaque); - +typedef int (*synctask_fn_t)(void *opaque); typedef enum { - SYNCTASK_INIT = 0, - SYNCTASK_RUN, - SYNCTASK_SUSPEND, - SYNCTASK_WAIT, - SYNCTASK_DONE, - SYNCTASK_ZOMBIE, + SYNCTASK_INIT = 0, + SYNCTASK_RUN, + SYNCTASK_SUSPEND, + SYNCTASK_WAIT, + SYNCTASK_DONE, + SYNCTASK_ZOMBIE, } synctask_state_t; /* for one sequential execution of @syncfn */ struct synctask { - struct list_head all_tasks; - struct syncenv *env; - xlator_t *xl; - call_frame_t *frame; - call_frame_t *opframe; - synctask_cbk_t synccbk; - synctask_fn_t syncfn; - synctask_state_t state; - void *opaque; - void *stack; - int woken; - int slept; - int ret; - - uid_t uid; - gid_t gid; - - ucontext_t ctx; - struct syncproc *proc; - - pthread_mutex_t mutex; /* for synchronous spawning of synctask */ - pthread_cond_t cond; - int done; - - struct list_head waitq; /* can wait only "once" at a time */ - char btbuf[GF_BACKTRACE_LEN]; + struct list_head all_tasks; + struct syncenv *env; + xlator_t *xl; + call_frame_t *frame; + call_frame_t *opframe; + synctask_cbk_t synccbk; + synctask_fn_t syncfn; + synctask_state_t state; + void *opaque; + void *stack; + int woken; + int slept; + int ret; + + uid_t uid; + gid_t gid; + + ucontext_t ctx; + struct syncproc *proc; + + pthread_mutex_t mutex; /* for synchronous spawning of synctask */ + pthread_cond_t cond; + int done; + + struct list_head waitq; /* can wait only "once" at a time */ + char btbuf[GF_BACKTRACE_LEN]; }; - struct syncproc { - pthread_t processor; - ucontext_t sched; - struct syncenv *env; - struct synctask *current; + pthread_t processor; + ucontext_t sched; + struct syncenv *env; + struct synctask *current; }; /* hosts the scheduler thread and framework for executing synctasks */ struct syncenv { - struct syncproc proc[SYNCENV_PROC_MAX]; - int procs; + struct syncproc proc[SYNCENV_PROC_MAX]; + int procs; - struct list_head runq; - int runcount; - struct list_head waitq; - int waitcount; + struct list_head runq; + int runcount; + struct list_head waitq; + int waitcount; - int procmin; - int procmax; + int procmin; + int procmax; - pthread_mutex_t mutex; - pthread_cond_t cond; + pthread_mutex_t mutex; + pthread_cond_t cond; - size_t stacksize; + size_t stacksize; - int destroy; /* FLAG to mark syncenv is in destroy mode - so that no more synctasks are accepted*/ + int destroy; /* FLAG to mark syncenv is in destroy mode + so that no more synctasks are accepted*/ }; +typedef enum { LOCK_NULL = 0, LOCK_TASK, LOCK_THREAD } lock_type_t; typedef enum { - LOCK_NULL = 0, - LOCK_TASK, - LOCK_THREAD -} lock_type_t; - -typedef enum { - SYNC_LOCK_DEFAULT = 0, - SYNC_LOCK_RECURSIVE, /*it allows recursive locking*/ + SYNC_LOCK_DEFAULT = 0, + SYNC_LOCK_RECURSIVE, /*it allows recursive locking*/ } lock_attr_t; struct synclock { - pthread_mutex_t guard; /* guard the remaining members, pair @cond */ - pthread_cond_t cond; /* waiting non-synctasks */ - struct list_head waitq; /* waiting synctasks */ - volatile int lock; /* true(non zero) or false(zero), lock status */ - lock_attr_t attr; - struct synctask *owner; /* NULL if current owner is not a synctask */ - pthread_t owner_tid; - lock_type_t type; + pthread_mutex_t guard; /* guard the remaining members, pair @cond */ + pthread_cond_t cond; /* waiting non-synctasks */ + struct list_head waitq; /* waiting synctasks */ + volatile int lock; /* true(non zero) or false(zero), lock status */ + lock_attr_t attr; + struct synctask *owner; /* NULL if current owner is not a synctask */ + pthread_t owner_tid; + lock_type_t type; }; typedef struct synclock synclock_t; - struct syncbarrier { - gf_boolean_t initialized; /*Set on successful initialization*/ - pthread_mutex_t guard; /* guard the remaining members, pair @cond */ - pthread_cond_t cond; /* waiting non-synctasks */ - struct list_head waitq; /* waiting synctasks */ - int count; /* count the number of wakes */ - int waitfor; /* no. of wakes until which task can be in - waitq before being woken up. */ + gf_boolean_t initialized; /*Set on successful initialization*/ + pthread_mutex_t guard; /* guard the remaining members, pair @cond */ + pthread_cond_t cond; /* waiting non-synctasks */ + struct list_head waitq; /* waiting synctasks */ + int count; /* count the number of wakes */ + int waitfor; /* no. of wakes until which task can be in + waitq before being woken up. */ }; typedef struct syncbarrier syncbarrier_t; - struct syncargs { - int op_ret; - int op_errno; - struct iatt iatt1; - struct iatt iatt2; - dict_t *xattr; - struct statvfs statvfs_buf; - struct iovec *vector; - int count; - struct iobref *iobref; - char *buffer; - dict_t *xdata; - struct gf_flock flock; - struct gf_lease lease; - dict_t *dict_out; - - /* some more _cbk needs */ - uuid_t uuid; - char *errstr; - dict_t *dict; - pthread_mutex_t lock_dict; - - syncbarrier_t barrier; - - /* do not touch */ - struct synctask *task; - pthread_mutex_t mutex; - pthread_cond_t cond; - int done; - - gf_dirent_t entries; - off_t offset; - - lock_migration_info_t locklist; + int op_ret; + int op_errno; + struct iatt iatt1; + struct iatt iatt2; + dict_t *xattr; + struct statvfs statvfs_buf; + struct iovec *vector; + int count; + struct iobref *iobref; + char *buffer; + dict_t *xdata; + struct gf_flock flock; + struct gf_lease lease; + dict_t *dict_out; + + /* some more _cbk needs */ + uuid_t uuid; + char *errstr; + dict_t *dict; + pthread_mutex_t lock_dict; + + syncbarrier_t barrier; + + /* do not touch */ + struct synctask *task; + pthread_mutex_t mutex; + pthread_cond_t cond; + int done; + + gf_dirent_t entries; + off_t offset; + + lock_migration_info_t locklist; }; struct syncopctx { - unsigned int valid; /* valid flags for elements that are set */ - uid_t uid; - gid_t gid; - int grpsize; - int ngrps; - gid_t *groups; - pid_t pid; - gf_lkowner_t lk_owner; + unsigned int valid; /* valid flags for elements that are set */ + uid_t uid; + gid_t gid; + int grpsize; + int ngrps; + gid_t *groups; + pid_t pid; + gf_lkowner_t lk_owner; }; -#define __yawn(args) do { \ - args->task = synctask_get (); \ - if (args->task) \ - break; \ - pthread_mutex_init (&args->mutex, NULL); \ - pthread_cond_init (&args->cond, NULL); \ - args->done = 0; \ - } while (0) - - -#define __wake(args) do { \ - if (args->task) { \ - synctask_wake (args->task); \ - } else { \ - pthread_mutex_lock (&args->mutex); \ - { \ - args->done = 1; \ - pthread_cond_signal (&args->cond); \ - } \ - pthread_mutex_unlock (&args->mutex); \ - } \ - } while (0) - - -#define __yield(args) do { \ - if (args->task) { \ - synctask_yield (args->task); \ - } else { \ - pthread_mutex_lock (&args->mutex); \ - { \ - while (!args->done) \ - pthread_cond_wait (&args->cond, \ - &args->mutex); \ - } \ - pthread_mutex_unlock (&args->mutex); \ - pthread_mutex_destroy (&args->mutex); \ - pthread_cond_destroy (&args->cond); \ - } \ - } while (0) - - -#define SYNCOP(subvol, stb, cbk, fn_op, params ...) do { \ - struct synctask *task = NULL; \ - call_frame_t *frame = NULL; \ - \ - task = synctask_get (); \ - stb->task = task; \ - if (task) \ - frame = task->opframe; \ - else \ - frame = syncop_create_frame (THIS); \ - \ - if (task) { \ - frame->root->uid = task->uid; \ - frame->root->gid = task->gid; \ - } \ - \ - __yawn (stb); \ - \ - frame->op = get_fop_index_from_fn (subvol, fn_op); \ - STACK_WIND_COOKIE (frame, cbk, (void *)stb, subvol, \ - fn_op, params); \ - \ - __yield (stb); \ - if (task) \ - STACK_RESET (frame->root); \ - else \ - STACK_DESTROY (frame->root); \ - } while (0) - +#define __yawn(args) \ + do { \ + args->task = synctask_get(); \ + if (args->task) \ + break; \ + pthread_mutex_init(&args->mutex, NULL); \ + pthread_cond_init(&args->cond, NULL); \ + args->done = 0; \ + } while (0) + +#define __wake(args) \ + do { \ + if (args->task) { \ + synctask_wake(args->task); \ + } else { \ + pthread_mutex_lock(&args->mutex); \ + { \ + args->done = 1; \ + pthread_cond_signal(&args->cond); \ + } \ + pthread_mutex_unlock(&args->mutex); \ + } \ + } while (0) + +#define __yield(args) \ + do { \ + if (args->task) { \ + synctask_yield(args->task); \ + } else { \ + pthread_mutex_lock(&args->mutex); \ + { \ + while (!args->done) \ + pthread_cond_wait(&args->cond, &args->mutex); \ + } \ + pthread_mutex_unlock(&args->mutex); \ + pthread_mutex_destroy(&args->mutex); \ + pthread_cond_destroy(&args->cond); \ + } \ + } while (0) + +#define SYNCOP(subvol, stb, cbk, fn_op, params...) \ + do { \ + struct synctask *task = NULL; \ + call_frame_t *frame = NULL; \ + \ + task = synctask_get(); \ + stb->task = task; \ + if (task) \ + frame = task->opframe; \ + else \ + frame = syncop_create_frame(THIS); \ + \ + if (task) { \ + frame->root->uid = task->uid; \ + frame->root->gid = task->gid; \ + } \ + \ + __yawn(stb); \ + \ + frame->op = get_fop_index_from_fn(subvol, fn_op); \ + STACK_WIND_COOKIE(frame, cbk, (void *)stb, subvol, fn_op, params); \ + \ + __yield(stb); \ + if (task) \ + STACK_RESET(frame->root); \ + else \ + STACK_DESTROY(frame->root); \ + } while (0) /* * syncop_xxx() calls are executed in two ways, one is inside a synctask where @@ -276,319 +264,376 @@ struct syncopctx { * like a system call, where -1 is returned and errno is set when a failure * occurs. */ -#define DECODE_SYNCOP_ERR(ret) do { \ - if (ret < 0) { \ - errno = -ret; \ - ret = -1; \ - } else { \ - errno = 0; \ - } \ - } while (0) - +#define DECODE_SYNCOP_ERR(ret) \ + do { \ + if (ret < 0) { \ + errno = -ret; \ + ret = -1; \ + } else { \ + errno = 0; \ + } \ + } while (0) #define SYNCENV_DEFAULT_STACKSIZE (2 * 1024 * 1024) -struct syncenv * syncenv_new (size_t stacksize, int procmin, int procmax); -void syncenv_destroy (struct syncenv *); -void syncenv_scale (struct syncenv *env); - -int synctask_new1 (struct syncenv *, size_t stacksize, synctask_fn_t, - synctask_cbk_t, call_frame_t *frame, void *); -int synctask_new (struct syncenv *, synctask_fn_t, synctask_cbk_t, - call_frame_t *frame, void *); -struct synctask *synctask_create (struct syncenv *, size_t stacksize, - synctask_fn_t, synctask_cbk_t, call_frame_t *, - void *); -int synctask_join (struct synctask *task); -void synctask_wake (struct synctask *task); -void synctask_yield (struct synctask *task); -void synctask_waitfor (struct synctask *task, int count); - -#define synctask_barrier_init(args) syncbarrier_init (&args->barrier) -#define synctask_barrier_wait(args, n) syncbarrier_wait (&args->barrier, n) -#define synctask_barrier_wake(args) syncbarrier_wake (&args->barrier) - -int synctask_setid (struct synctask *task, uid_t uid, gid_t gid); -#define SYNCTASK_SETID(uid, gid) synctask_setid (synctask_get(), uid, gid); - -int syncopctx_setfsuid (void *uid); -int syncopctx_setfsgid (void *gid); -int syncopctx_setfsgroups (int count, const void *groups); -int syncopctx_setfspid (void *pid); -int syncopctx_setfslkowner (gf_lkowner_t *lk_owner); +struct syncenv * +syncenv_new(size_t stacksize, int procmin, int procmax); +void +syncenv_destroy(struct syncenv *); +void +syncenv_scale(struct syncenv *env); + +int +synctask_new1(struct syncenv *, size_t stacksize, synctask_fn_t, synctask_cbk_t, + call_frame_t *frame, void *); +int +synctask_new(struct syncenv *, synctask_fn_t, synctask_cbk_t, + call_frame_t *frame, void *); +struct synctask * +synctask_create(struct syncenv *, size_t stacksize, synctask_fn_t, + synctask_cbk_t, call_frame_t *, void *); +int +synctask_join(struct synctask *task); +void +synctask_wake(struct synctask *task); +void +synctask_yield(struct synctask *task); +void +synctask_waitfor(struct synctask *task, int count); + +#define synctask_barrier_init(args) syncbarrier_init(&args->barrier) +#define synctask_barrier_wait(args, n) syncbarrier_wait(&args->barrier, n) +#define synctask_barrier_wake(args) syncbarrier_wake(&args->barrier) + +int +synctask_setid(struct synctask *task, uid_t uid, gid_t gid); +#define SYNCTASK_SETID(uid, gid) synctask_setid(synctask_get(), uid, gid); + +int +syncopctx_setfsuid(void *uid); +int +syncopctx_setfsgid(void *gid); +int +syncopctx_setfsgroups(int count, const void *groups); +int +syncopctx_setfspid(void *pid); +int +syncopctx_setfslkowner(gf_lkowner_t *lk_owner); static inline call_frame_t * -syncop_create_frame (xlator_t *this) +syncop_create_frame(xlator_t *this) { - call_frame_t *frame = NULL; - int ngrps = -1; - struct syncopctx *opctx = NULL; - - frame = create_frame (this, this->ctx->pool); - if (!frame) - return NULL; - - opctx = syncopctx_getctx (); - - if (opctx && (opctx->valid & SYNCOPCTX_PID)) - frame->root->pid = opctx->pid; - else - frame->root->pid = getpid (); - - if (opctx && (opctx->valid & SYNCOPCTX_UID)) - frame->root->uid = opctx->uid; - else - frame->root->uid = geteuid (); - - if (opctx && (opctx->valid & SYNCOPCTX_GID)) - frame->root->gid = opctx->gid; - else - frame->root->gid = getegid (); - - if (opctx && (opctx->valid & SYNCOPCTX_GROUPS)) { - ngrps = opctx->ngrps; - - if (ngrps != 0 && opctx->groups != NULL) { - if (call_stack_alloc_groups (frame->root, ngrps) != 0) { - STACK_DESTROY (frame->root); - return NULL; - } - - memcpy (frame->root->groups, opctx->groups, - (sizeof (gid_t) * ngrps)); - } - } - else { - ngrps = getgroups (0, 0); - if (ngrps < 0) { - STACK_DESTROY (frame->root); - return NULL; - } - - if (call_stack_alloc_groups (frame->root, ngrps) != 0) { - STACK_DESTROY (frame->root); - return NULL; - } - - if (getgroups (ngrps, frame->root->groups) < 0) { - STACK_DESTROY (frame->root); - return NULL; - } - } - - if (opctx && (opctx->valid & SYNCOPCTX_LKOWNER)) - frame->root->lk_owner = opctx->lk_owner; - - return frame; + call_frame_t *frame = NULL; + int ngrps = -1; + struct syncopctx *opctx = NULL; + + frame = create_frame(this, this->ctx->pool); + if (!frame) + return NULL; + + opctx = syncopctx_getctx(); + + if (opctx && (opctx->valid & SYNCOPCTX_PID)) + frame->root->pid = opctx->pid; + else + frame->root->pid = getpid(); + + if (opctx && (opctx->valid & SYNCOPCTX_UID)) + frame->root->uid = opctx->uid; + else + frame->root->uid = geteuid(); + + if (opctx && (opctx->valid & SYNCOPCTX_GID)) + frame->root->gid = opctx->gid; + else + frame->root->gid = getegid(); + + if (opctx && (opctx->valid & SYNCOPCTX_GROUPS)) { + ngrps = opctx->ngrps; + + if (ngrps != 0 && opctx->groups != NULL) { + if (call_stack_alloc_groups(frame->root, ngrps) != 0) { + STACK_DESTROY(frame->root); + return NULL; + } + + memcpy(frame->root->groups, opctx->groups, (sizeof(gid_t) * ngrps)); + } + } else { + ngrps = getgroups(0, 0); + if (ngrps < 0) { + STACK_DESTROY(frame->root); + return NULL; + } + + if (call_stack_alloc_groups(frame->root, ngrps) != 0) { + STACK_DESTROY(frame->root); + return NULL; + } + + if (getgroups(ngrps, frame->root->groups) < 0) { + STACK_DESTROY(frame->root); + return NULL; + } + } + + if (opctx && (opctx->valid & SYNCOPCTX_LKOWNER)) + frame->root->lk_owner = opctx->lk_owner; + + return frame; } -int synclock_init (synclock_t *lock, lock_attr_t attr); -int synclock_destroy (synclock_t *lock); -int synclock_lock (synclock_t *lock); -int synclock_trylock (synclock_t *lock); -int synclock_unlock (synclock_t *lock); - +int +synclock_init(synclock_t *lock, lock_attr_t attr); +int +synclock_destroy(synclock_t *lock); +int +synclock_lock(synclock_t *lock); +int +synclock_trylock(synclock_t *lock); +int +synclock_unlock(synclock_t *lock); -int syncbarrier_init (syncbarrier_t *barrier); -int syncbarrier_wait (syncbarrier_t *barrier, int waitfor); -int syncbarrier_wake (syncbarrier_t *barrier); -int syncbarrier_destroy (syncbarrier_t *barrier); +int +syncbarrier_init(syncbarrier_t *barrier); +int +syncbarrier_wait(syncbarrier_t *barrier, int waitfor); +int +syncbarrier_wake(syncbarrier_t *barrier); +int +syncbarrier_destroy(syncbarrier_t *barrier); -int syncop_lookup (xlator_t *subvol, loc_t *loc, - /* out */ - struct iatt *iatt, struct iatt *parent, - /* xdata */ - dict_t *xdata_in, dict_t **xdata_out); +int +syncop_lookup(xlator_t *subvol, loc_t *loc, + /* out */ + struct iatt *iatt, struct iatt *parent, + /* xdata */ + dict_t *xdata_in, dict_t **xdata_out); -int syncop_readdirp (xlator_t *subvol, fd_t *fd, size_t size, off_t off, - /* out */ - gf_dirent_t *entries, - dict_t *xdata_in, dict_t **xdata_out); +int +syncop_readdirp(xlator_t *subvol, fd_t *fd, size_t size, off_t off, + /* out */ + gf_dirent_t *entries, dict_t *xdata_in, dict_t **xdata_out); -int syncop_readdir (xlator_t *subvol, fd_t *fd, size_t size, off_t off, - gf_dirent_t *entries, dict_t *xdata_in, dict_t **xdata_out); +int +syncop_readdir(xlator_t *subvol, fd_t *fd, size_t size, off_t off, + gf_dirent_t *entries, dict_t *xdata_in, dict_t **xdata_out); -int syncop_opendir (xlator_t *subvol, loc_t *loc, fd_t *fd, dict_t *xdata_in, - dict_t **xdata_out); +int +syncop_opendir(xlator_t *subvol, loc_t *loc, fd_t *fd, dict_t *xdata_in, + dict_t **xdata_out); -int syncop_setattr (xlator_t *subvol, loc_t *loc, struct iatt *iatt, int valid, - /* out */ - struct iatt *preop, struct iatt *postop, dict_t *xdata_in, - dict_t **xdata_out); +int +syncop_setattr(xlator_t *subvol, loc_t *loc, struct iatt *iatt, int valid, + /* out */ + struct iatt *preop, struct iatt *postop, dict_t *xdata_in, + dict_t **xdata_out); -int syncop_fsetattr (xlator_t *subvol, fd_t *fd, struct iatt *iatt, int valid, - /* out */ - struct iatt *preop, struct iatt *postop, dict_t *xdata_in, - dict_t **xdata_out); +int +syncop_fsetattr(xlator_t *subvol, fd_t *fd, struct iatt *iatt, int valid, + /* out */ + struct iatt *preop, struct iatt *postop, dict_t *xdata_in, + dict_t **xdata_out); -int syncop_statfs (xlator_t *subvol, loc_t *loc, - /* out */ - struct statvfs *buf, - dict_t *xdata_in, dict_t **xdata_out); +int +syncop_statfs(xlator_t *subvol, loc_t *loc, + /* out */ + struct statvfs *buf, dict_t *xdata_in, dict_t **xdata_out); -int syncop_setxattr (xlator_t *subvol, loc_t *loc, dict_t *dict, int32_t flags, - dict_t *xdata_in, dict_t **xdata_out); +int +syncop_setxattr(xlator_t *subvol, loc_t *loc, dict_t *dict, int32_t flags, + dict_t *xdata_in, dict_t **xdata_out); -int syncop_fsetxattr (xlator_t *subvol, fd_t *fd, dict_t *dict, int32_t flags, - dict_t *xdata_in, dict_t **xdata_out); +int +syncop_fsetxattr(xlator_t *subvol, fd_t *fd, dict_t *dict, int32_t flags, + dict_t *xdata_in, dict_t **xdata_out); -int syncop_listxattr (xlator_t *subvol, loc_t *loc, dict_t **dict, - dict_t *xdata_in, dict_t **xdata_out); +int +syncop_listxattr(xlator_t *subvol, loc_t *loc, dict_t **dict, dict_t *xdata_in, + dict_t **xdata_out); -int syncop_getxattr (xlator_t *xl, loc_t *loc, dict_t **dict, const char *key, - dict_t *xdata_in, dict_t **xdata_out); +int +syncop_getxattr(xlator_t *xl, loc_t *loc, dict_t **dict, const char *key, + dict_t *xdata_in, dict_t **xdata_out); -int syncop_fgetxattr (xlator_t *xl, fd_t *fd, dict_t **dict, const char *key, - dict_t *xdata_in, dict_t **xdata_out); +int +syncop_fgetxattr(xlator_t *xl, fd_t *fd, dict_t **dict, const char *key, + dict_t *xdata_in, dict_t **xdata_out); -int syncop_removexattr (xlator_t *subvol, loc_t *loc, const char *name, - dict_t *xdata_in, dict_t **xdata_out); +int +syncop_removexattr(xlator_t *subvol, loc_t *loc, const char *name, + dict_t *xdata_in, dict_t **xdata_out); -int syncop_fremovexattr (xlator_t *subvol, fd_t *fd, const char *name, - dict_t *xdata_in, dict_t **xdata_out); +int +syncop_fremovexattr(xlator_t *subvol, fd_t *fd, const char *name, + dict_t *xdata_in, dict_t **xdata_out); -int syncop_create (xlator_t *subvol, loc_t *loc, int32_t flags, mode_t mode, - fd_t *fd, struct iatt *iatt, - dict_t *xdata_in, dict_t **xdata_out); +int +syncop_create(xlator_t *subvol, loc_t *loc, int32_t flags, mode_t mode, + fd_t *fd, struct iatt *iatt, dict_t *xdata_in, + dict_t **xdata_out); -int syncop_open (xlator_t *subvol, loc_t *loc, int32_t flags, fd_t *fd, - dict_t *xdata_in, dict_t **xdata_out); +int +syncop_open(xlator_t *subvol, loc_t *loc, int32_t flags, fd_t *fd, + dict_t *xdata_in, dict_t **xdata_out); -int syncop_close (fd_t *fd); +int +syncop_close(fd_t *fd); -int syncop_write (xlator_t *subvol, fd_t *fd, const char *buf, int size, - off_t offset, struct iobref *iobref, uint32_t flags, - dict_t *xdata_in, dict_t **xdata_out); +int +syncop_write(xlator_t *subvol, fd_t *fd, const char *buf, int size, + off_t offset, struct iobref *iobref, uint32_t flags, + dict_t *xdata_in, dict_t **xdata_out); -int syncop_writev (xlator_t *subvol, fd_t *fd, const struct iovec *vector, - int32_t count, off_t offset, struct iobref *iobref, - uint32_t flags, struct iatt *preiatt, struct iatt *postiatt, - dict_t *xdata_in, dict_t **xdata_out); +int +syncop_writev(xlator_t *subvol, fd_t *fd, const struct iovec *vector, + int32_t count, off_t offset, struct iobref *iobref, + uint32_t flags, struct iatt *preiatt, struct iatt *postiatt, + dict_t *xdata_in, dict_t **xdata_out); -int syncop_readv (xlator_t *subvol, fd_t *fd, size_t size, off_t off, - uint32_t flags, - /* out */ - struct iovec **vector, int *count, struct iobref **iobref, - struct iatt *iatt, dict_t *xdata_in, dict_t **xdata_out); +int +syncop_readv(xlator_t *subvol, fd_t *fd, size_t size, off_t off, uint32_t flags, + /* out */ + struct iovec **vector, int *count, struct iobref **iobref, + struct iatt *iatt, dict_t *xdata_in, dict_t **xdata_out); -int syncop_ftruncate (xlator_t *subvol, fd_t *fd, off_t offset, - struct iatt *preiatt, struct iatt *postiatt, - dict_t *xdata_in, dict_t **xdata_out); +int +syncop_ftruncate(xlator_t *subvol, fd_t *fd, off_t offset, struct iatt *preiatt, + struct iatt *postiatt, dict_t *xdata_in, dict_t **xdata_out); -int syncop_truncate (xlator_t *subvol, loc_t *loc, off_t offset, - dict_t *xdata_in, dict_t **xdata_out); +int +syncop_truncate(xlator_t *subvol, loc_t *loc, off_t offset, dict_t *xdata_in, + dict_t **xdata_out); -int syncop_unlink (xlator_t *subvol, loc_t *loc, dict_t *xdata_in, - dict_t **xdata_out); +int +syncop_unlink(xlator_t *subvol, loc_t *loc, dict_t *xdata_in, + dict_t **xdata_out); -int syncop_rmdir (xlator_t *subvol, loc_t *loc, int flags, dict_t *xdata_in, - dict_t **xdata_out); +int +syncop_rmdir(xlator_t *subvol, loc_t *loc, int flags, dict_t *xdata_in, + dict_t **xdata_out); -int syncop_fsync (xlator_t *subvol, fd_t *fd, int dataonly, - struct iatt *preiatt, struct iatt *postiatt, - dict_t *xdata_in, dict_t **xdata_out); +int +syncop_fsync(xlator_t *subvol, fd_t *fd, int dataonly, struct iatt *preiatt, + struct iatt *postiatt, dict_t *xdata_in, dict_t **xdata_out); -int syncop_flush (xlator_t *subvol, fd_t *fd, dict_t *xdata_in, - dict_t **xdata_out); +int +syncop_flush(xlator_t *subvol, fd_t *fd, dict_t *xdata_in, dict_t **xdata_out); -int syncop_fstat (xlator_t *subvol, fd_t *fd, struct iatt *stbuf, - dict_t *xdata_in, dict_t **xdata_out); +int +syncop_fstat(xlator_t *subvol, fd_t *fd, struct iatt *stbuf, dict_t *xdata_in, + dict_t **xdata_out); -int syncop_stat (xlator_t *subvol, loc_t *loc, struct iatt *stbuf, - dict_t *xdata_in, dict_t **xdata_out); +int +syncop_stat(xlator_t *subvol, loc_t *loc, struct iatt *stbuf, dict_t *xdata_in, + dict_t **xdata_out); -int syncop_symlink (xlator_t *subvol, loc_t *loc, const char *newpath, - struct iatt *iatt, - dict_t *xdata_in, dict_t **xdata_out); +int +syncop_symlink(xlator_t *subvol, loc_t *loc, const char *newpath, + struct iatt *iatt, dict_t *xdata_in, dict_t **xdata_out); -int syncop_readlink (xlator_t *subvol, loc_t *loc, char **buffer, size_t size, - dict_t *xdata_in, dict_t **xdata_out); +int +syncop_readlink(xlator_t *subvol, loc_t *loc, char **buffer, size_t size, + dict_t *xdata_in, dict_t **xdata_out); -int syncop_mknod (xlator_t *subvol, loc_t *loc, mode_t mode, dev_t rdev, - struct iatt *iatt, dict_t *xdata_in, dict_t **xdata_out); +int +syncop_mknod(xlator_t *subvol, loc_t *loc, mode_t mode, dev_t rdev, + struct iatt *iatt, dict_t *xdata_in, dict_t **xdata_out); -int syncop_mkdir (xlator_t *subvol, loc_t *loc, mode_t mode, struct iatt *iatt, - dict_t *xdata_in, dict_t **xdata_out); +int +syncop_mkdir(xlator_t *subvol, loc_t *loc, mode_t mode, struct iatt *iatt, + dict_t *xdata_in, dict_t **xdata_out); -int syncop_link (xlator_t *subvol, loc_t *oldloc, loc_t *newloc, - struct iatt *iatt, dict_t *xdata_in, dict_t **xdata_out); +int +syncop_link(xlator_t *subvol, loc_t *oldloc, loc_t *newloc, struct iatt *iatt, + dict_t *xdata_in, dict_t **xdata_out); -int syncop_fsyncdir (xlator_t *subvol, fd_t *fd, int datasync, - dict_t *xdata_in, dict_t **xdata_out); +int +syncop_fsyncdir(xlator_t *subvol, fd_t *fd, int datasync, dict_t *xdata_in, + dict_t **xdata_out); -int syncop_access (xlator_t *subvol, loc_t *loc, int32_t mask, - dict_t *xdata_in, dict_t **xdata_out); +int +syncop_access(xlator_t *subvol, loc_t *loc, int32_t mask, dict_t *xdata_in, + dict_t **xdata_out); -int syncop_fallocate(xlator_t *subvol, fd_t *fd, int32_t keep_size, - off_t offset, size_t len, dict_t *xdata_in, - dict_t **xdata_out); +int +syncop_fallocate(xlator_t *subvol, fd_t *fd, int32_t keep_size, off_t offset, + size_t len, dict_t *xdata_in, dict_t **xdata_out); -int syncop_discard(xlator_t *subvol, fd_t *fd, off_t offset, size_t len, - dict_t *xdata_in, dict_t **xdata_out); +int +syncop_discard(xlator_t *subvol, fd_t *fd, off_t offset, size_t len, + dict_t *xdata_in, dict_t **xdata_out); -int syncop_zerofill(xlator_t *subvol, fd_t *fd, off_t offset, off_t len, - dict_t *xdata_in, dict_t **xdata_out); +int +syncop_zerofill(xlator_t *subvol, fd_t *fd, off_t offset, off_t len, + dict_t *xdata_in, dict_t **xdata_out); -int syncop_rename (xlator_t *subvol, loc_t *oldloc, loc_t *newloc, - dict_t *xdata_in, dict_t **xdata_out); +int +syncop_rename(xlator_t *subvol, loc_t *oldloc, loc_t *newloc, dict_t *xdata_in, + dict_t **xdata_out); -int syncop_lk (xlator_t *subvol, fd_t *fd, int cmd, struct gf_flock *flock, - dict_t *xdata_in, dict_t **xdata_out); +int +syncop_lk(xlator_t *subvol, fd_t *fd, int cmd, struct gf_flock *flock, + dict_t *xdata_in, dict_t **xdata_out); -int syncop_inodelk (xlator_t *subvol, const char *volume, loc_t *loc, - int32_t cmd, struct gf_flock *lock, dict_t *xdata_in, - dict_t **xdata_out); +int +syncop_inodelk(xlator_t *subvol, const char *volume, loc_t *loc, int32_t cmd, + struct gf_flock *lock, dict_t *xdata_in, dict_t **xdata_out); -int syncop_lease (xlator_t *subvol, loc_t *loc, struct gf_lease *lease, - dict_t *xdata_in, dict_t **xdata_out); +int +syncop_lease(xlator_t *subvol, loc_t *loc, struct gf_lease *lease, + dict_t *xdata_in, dict_t **xdata_out); -int syncop_ipc (xlator_t *subvol, int op, dict_t *xdata_in, dict_t **xdata_out); +int +syncop_ipc(xlator_t *subvol, int op, dict_t *xdata_in, dict_t **xdata_out); -int syncop_xattrop (xlator_t *subvol, loc_t *loc, gf_xattrop_flags_t flags, - dict_t *dict, dict_t *xdata_in, dict_t **dict_out, - dict_t **xdata_out); +int +syncop_xattrop(xlator_t *subvol, loc_t *loc, gf_xattrop_flags_t flags, + dict_t *dict, dict_t *xdata_in, dict_t **dict_out, + dict_t **xdata_out); int -syncop_fxattrop (xlator_t *subvol, fd_t *fd, gf_xattrop_flags_t flags, - dict_t *dict, dict_t *xdata_in, dict_t **dict_out, - dict_t **xdata_out); +syncop_fxattrop(xlator_t *subvol, fd_t *fd, gf_xattrop_flags_t flags, + dict_t *dict, dict_t *xdata_in, dict_t **dict_out, + dict_t **xdata_out); int -syncop_seek (xlator_t *subvol, fd_t *fd, off_t offset, gf_seek_what_t what, - dict_t *xdata_in, off_t *off); +syncop_seek(xlator_t *subvol, fd_t *fd, off_t offset, gf_seek_what_t what, + dict_t *xdata_in, off_t *off); int -syncop_getactivelk (xlator_t *subvol, loc_t *loc, lock_migration_info_t *locklist, - dict_t *xdata_in, dict_t **xdata_out); +syncop_getactivelk(xlator_t *subvol, loc_t *loc, + lock_migration_info_t *locklist, dict_t *xdata_in, + dict_t **xdata_out); int -syncop_setactivelk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, dict_t *xdata); +syncop_setactivelk_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *xdata); int -syncop_setactivelk (xlator_t *subvol, loc_t *loc, - lock_migration_info_t *locklist, dict_t *xdata_in, - dict_t **xdata_out); +syncop_setactivelk(xlator_t *subvol, loc_t *loc, + lock_migration_info_t *locklist, dict_t *xdata_in, + dict_t **xdata_out); int -syncop_put (xlator_t *subvol, loc_t *loc, mode_t mode, mode_t umask, - uint32_t flags, struct iovec *vector, int32_t count, - off_t offset, struct iobref *iobref, dict_t *xattr, - struct iatt *iatt, dict_t *xdata_in, dict_t **xdata_out); +syncop_put(xlator_t *subvol, loc_t *loc, mode_t mode, mode_t umask, + uint32_t flags, struct iovec *vector, int32_t count, off_t offset, + struct iobref *iobref, dict_t *xattr, struct iatt *iatt, + dict_t *xdata_in, dict_t **xdata_out); int -syncop_setactivelk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, dict_t *xdata); +syncop_setactivelk_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *xdata); int -syncop_icreate (xlator_t *subvol, loc_t *loc, mode_t mode, dict_t *xdata_out); +syncop_icreate(xlator_t *subvol, loc_t *loc, mode_t mode, dict_t *xdata_out); int -syncop_namelink (xlator_t *subvol, loc_t *loc, dict_t *xdata_out); +syncop_namelink(xlator_t *subvol, loc_t *loc, dict_t *xdata_out); int -syncop_entrylk (xlator_t *subvol, const char *volume, loc_t *loc, - const char *basename, entrylk_cmd cmd, entrylk_type type, - dict_t *xdata_in, dict_t **xdata_out); +syncop_entrylk(xlator_t *subvol, const char *volume, loc_t *loc, + const char *basename, entrylk_cmd cmd, entrylk_type type, + dict_t *xdata_in, dict_t **xdata_out); #endif /* _SYNCOP_H */ diff --git a/libglusterfs/src/syscall.h b/libglusterfs/src/syscall.h index 032ff70ffb6..f691ebdaa53 100644 --- a/libglusterfs/src/syscall.h +++ b/libglusterfs/src/syscall.h @@ -18,7 +18,7 @@ #include <sys/time.h> /* GF follows the Linux XATTR definition, which differs in Darwin. */ -#define GF_XATTR_CREATE 0x1 /* set value, fail if attr already exists */ +#define GF_XATTR_CREATE 0x1 /* set value, fail if attr already exists */ #define GF_XATTR_REPLACE 0x2 /* set value, fail if attr does not exist */ /* Linux kernel version 2.6.x don't have these defined @@ -26,151 +26,150 @@ #ifndef XATTR_SECURITY_PREFIX #define XATTR_SECURITY_PREFIX "security." -#define XATTR_SECURITY_PREFIX_LEN (sizeof (XATTR_SECURITY_PREFIX) - 1) +#define XATTR_SECURITY_PREFIX_LEN (sizeof(XATTR_SECURITY_PREFIX) - 1) #endif #ifndef XATTR_SYSTEM_PREFIX #define XATTR_SYSTEM_PREFIX "system." -#define XATTR_SYSTEM_PREFIX_LEN (sizeof (XATTR_SYSTEM_PREFIX) - 1) +#define XATTR_SYSTEM_PREFIX_LEN (sizeof(XATTR_SYSTEM_PREFIX) - 1) #endif #ifndef XATTR_TRUSTED_PREFIX #define XATTR_TRUSTED_PREFIX "trusted." -#define XATTR_TRUSTED_PREFIX_LEN (sizeof (XATTR_TRUSTED_PREFIX) - 1) +#define XATTR_TRUSTED_PREFIX_LEN (sizeof(XATTR_TRUSTED_PREFIX) - 1) #endif #ifndef XATTR_USER_PREFIX #define XATTR_USER_PREFIX "user." -#define XATTR_USER_PREFIX_LEN (sizeof (XATTR_USER_PREFIX) - 1) +#define XATTR_USER_PREFIX_LEN (sizeof(XATTR_USER_PREFIX) - 1) #endif #if defined(GF_DARWIN_HOST_OS) #include <sys/xattr.h> #define XATTR_DARWIN_NOSECURITY XATTR_NOSECURITY -#define XATTR_DARWIN_NODEFAULT XATTR_NODEFAULT +#define XATTR_DARWIN_NODEFAULT XATTR_NODEFAULT #define XATTR_DARWIN_SHOWCOMPRESSION XATTR_SHOWCOMPRESSION #endif - int -sys_lstat (const char *path, struct stat *buf); +sys_lstat(const char *path, struct stat *buf); int -sys_stat (const char *path, struct stat *buf); +sys_stat(const char *path, struct stat *buf); int -sys_fstat (int fd, struct stat *buf); +sys_fstat(int fd, struct stat *buf); int -sys_fstatat (int dirfd, const char *pathname, struct stat *buf, - int flags); +sys_fstatat(int dirfd, const char *pathname, struct stat *buf, int flags); int -sys_open (const char *pathname, int flags, int mode); +sys_open(const char *pathname, int flags, int mode); int -sys_openat (int dirfd, const char *pathname, int flags, int mode); +sys_openat(int dirfd, const char *pathname, int flags, int mode); -DIR *sys_opendir (const char *name); +DIR * +sys_opendir(const char *name); struct dirent * -sys_readdir (DIR *dir, struct dirent *de); +sys_readdir(DIR *dir, struct dirent *de); ssize_t -sys_readlink (const char *path, char *buf, size_t bufsiz); +sys_readlink(const char *path, char *buf, size_t bufsiz); int -sys_closedir (DIR *dir); +sys_closedir(DIR *dir); int -sys_mknod (const char *pathname, mode_t mode, dev_t dev); +sys_mknod(const char *pathname, mode_t mode, dev_t dev); int -sys_mkdir (const char *pathname, mode_t mode); +sys_mkdir(const char *pathname, mode_t mode); int -sys_mkdirat (int dirfd, const char *pathname, mode_t mode); +sys_mkdirat(int dirfd, const char *pathname, mode_t mode); int -sys_unlink (const char *pathname); +sys_unlink(const char *pathname); int -sys_rmdir (const char *pathname); +sys_rmdir(const char *pathname); int -sys_symlink (const char *oldpath, const char *newpath); +sys_symlink(const char *oldpath, const char *newpath); int -sys_rename (const char *oldpath, const char *newpath); +sys_rename(const char *oldpath, const char *newpath); int -sys_link (const char *oldpath, const char *newpath); +sys_link(const char *oldpath, const char *newpath); int -sys_chmod (const char *path, mode_t mode); +sys_chmod(const char *path, mode_t mode); int -sys_fchmod (int fd, mode_t mode); +sys_fchmod(int fd, mode_t mode); int -sys_chown (const char *path, uid_t owner, gid_t group); +sys_chown(const char *path, uid_t owner, gid_t group); int -sys_fchown (int fd, uid_t owner, gid_t group); +sys_fchown(int fd, uid_t owner, gid_t group); int -sys_lchown (const char *path, uid_t owner, gid_t group); +sys_lchown(const char *path, uid_t owner, gid_t group); int -sys_truncate (const char *path, off_t length); +sys_truncate(const char *path, off_t length); int -sys_ftruncate (int fd, off_t length); +sys_ftruncate(int fd, off_t length); int -sys_utimes (const char *filename, const struct timeval times[2]); +sys_utimes(const char *filename, const struct timeval times[2]); #if defined(HAVE_UTIMENSAT) int -sys_utimensat (int dirfd, const char *filename, const struct timespec times[2], - int flags); +sys_utimensat(int dirfd, const char *filename, const struct timespec times[2], + int flags); #endif int -sys_futimes (int fd, const struct timeval times[2]); +sys_futimes(int fd, const struct timeval times[2]); int -sys_creat (const char *pathname, mode_t mode); +sys_creat(const char *pathname, mode_t mode); ssize_t -sys_readv (int fd, const struct iovec *iov, int iovcnt); +sys_readv(int fd, const struct iovec *iov, int iovcnt); ssize_t -sys_writev (int fd, const struct iovec *iov, int iovcnt); +sys_writev(int fd, const struct iovec *iov, int iovcnt); ssize_t -sys_read (int fd, void *buf, size_t count); +sys_read(int fd, void *buf, size_t count); ssize_t -sys_write (int fd, const void *buf, size_t count); +sys_write(int fd, const void *buf, size_t count); off_t -sys_lseek (int fd, off_t offset, int whence); +sys_lseek(int fd, off_t offset, int whence); int -sys_statvfs (const char *path, struct statvfs *buf); +sys_statvfs(const char *path, struct statvfs *buf); int -sys_fstatvfs (int fd, struct statvfs *buf); +sys_fstatvfs(int fd, struct statvfs *buf); int -sys_close (int fd); +sys_close(int fd); int -sys_fsync (int fd); +sys_fsync(int fd); int -sys_fdatasync (int fd); +sys_fdatasync(int fd); void gf_add_prefix(const char *ns, const char *key, char **newkey); @@ -179,42 +178,42 @@ void gf_remove_prefix(const char *ns, const char *key, char **newkey); int -sys_lsetxattr (const char *path, const char *name, const void *value, - size_t size, int flags); +sys_lsetxattr(const char *path, const char *name, const void *value, + size_t size, int flags); ssize_t -sys_llistxattr (const char *path, char *list, size_t size); +sys_llistxattr(const char *path, char *list, size_t size); ssize_t -sys_lgetxattr (const char *path, const char *name, void *value, size_t size); +sys_lgetxattr(const char *path, const char *name, void *value, size_t size); ssize_t -sys_fgetxattr (int filedes, const char *name, void *value, size_t size); +sys_fgetxattr(int filedes, const char *name, void *value, size_t size); int -sys_fsetxattr (int filedes, const char *name, const void *value, - size_t size, int flags); +sys_fsetxattr(int filedes, const char *name, const void *value, size_t size, + int flags); ssize_t -sys_flistxattr (int filedes, char *list, size_t size); +sys_flistxattr(int filedes, char *list, size_t size); int -sys_lremovexattr (const char *path, const char *name); +sys_lremovexattr(const char *path, const char *name); int -sys_fremovexattr (int filedes, const char *name); +sys_fremovexattr(int filedes, const char *name); int -sys_access (const char *pathname, int mode); +sys_access(const char *pathname, int mode); int sys_fallocate(int fd, int mode, off_t offset, off_t len); ssize_t -sys_preadv (int fd, const struct iovec *iov, int iovcnt, off_t offset); +sys_preadv(int fd, const struct iovec *iov, int iovcnt, off_t offset); ssize_t -sys_pwritev (int fd, const struct iovec *iov, int iovcnt, off_t offset); +sys_pwritev(int fd, const struct iovec *iov, int iovcnt, off_t offset); ssize_t sys_pread(int fd, void *buf, size_t count, off_t offset); diff --git a/libglusterfs/src/template-component-messages.h b/libglusterfs/src/template-component-messages.h index 0f0062a5d7c..4dcdda4abf4 100644 --- a/libglusterfs/src/template-component-messages.h +++ b/libglusterfs/src/template-component-messages.h @@ -23,10 +23,6 @@ * glfs-message-id.h. */ -GLFS_MSGID(component, - message id, - message id, - ... -); +GLFS_MSGID(component, message id, message id, ...); #endif /* !_component_MESSAGES_H_ */ diff --git a/libglusterfs/src/throttle-tbf.h b/libglusterfs/src/throttle-tbf.h index b6e04962ca4..b44a0f1fdd5 100644 --- a/libglusterfs/src/throttle-tbf.h +++ b/libglusterfs/src/throttle-tbf.h @@ -16,59 +16,59 @@ #define THROTTLE_TBF_H__ typedef enum tbf_ops { - TBF_OP_MIN = -1, - TBF_OP_HASH = 0, /* checksum calculation */ - TBF_OP_READ = 1, /* inode read(s) */ - TBF_OP_READDIR = 2, /* dentry read(s) */ - TBF_OP_MAX = 3, + TBF_OP_MIN = -1, + TBF_OP_HASH = 0, /* checksum calculation */ + TBF_OP_READ = 1, /* inode read(s) */ + TBF_OP_READDIR = 2, /* dentry read(s) */ + TBF_OP_MAX = 3, } tbf_ops_t; /** * Operation rate specification */ typedef struct tbf_opspec { - tbf_ops_t op; + tbf_ops_t op; - unsigned long rate; + unsigned long rate; - unsigned long maxlimit; + unsigned long maxlimit; - unsigned long token_gen_interval;/* Token generation interval in usec */ + unsigned long token_gen_interval; /* Token generation interval in usec */ } tbf_opspec_t; /** * Token bucket for each operation type */ typedef struct tbf_bucket { - gf_lock_t lock; + gf_lock_t lock; - pthread_t tokener; /* token generator thread */ + pthread_t tokener; /* token generator thread */ - unsigned long tokenrate; /* token generation rate */ + unsigned long tokenrate; /* token generation rate */ - unsigned long tokens; /* number of current tokens */ + unsigned long tokens; /* number of current tokens */ - unsigned long maxtokens; /* maximum token in the bucket */ + unsigned long maxtokens; /* maximum token in the bucket */ - struct list_head queued; /* list of non-conformant requests */ + struct list_head queued; /* list of non-conformant requests */ - unsigned long token_gen_interval;/* Token generation interval in usec */ + unsigned long token_gen_interval; /* Token generation interval in usec */ } tbf_bucket_t; typedef struct tbf { - tbf_bucket_t **bucket; + tbf_bucket_t **bucket; } tbf_t; tbf_t * -tbf_init (tbf_opspec_t *, unsigned int); +tbf_init(tbf_opspec_t *, unsigned int); int -tbf_mod (tbf_t *, tbf_opspec_t *); +tbf_mod(tbf_t *, tbf_opspec_t *); void -tbf_throttle (tbf_t *, tbf_ops_t, unsigned long); +tbf_throttle(tbf_t *, tbf_ops_t, unsigned long); -#define TBF_THROTTLE_BEGIN(tbf, op, tokens) (tbf_throttle (tbf, op, tokens)) +#define TBF_THROTTLE_BEGIN(tbf, op, tokens) (tbf_throttle(tbf, op, tokens)) #define TBF_THROTTLE_END(tbf, op, tokens) #endif /** THROTTLE_TBF_H__ */ diff --git a/libglusterfs/src/tier-ctr-interface.h b/libglusterfs/src/tier-ctr-interface.h index cfd3f8a5e5d..8a627542c0c 100644 --- a/libglusterfs/src/tier-ctr-interface.h +++ b/libglusterfs/src/tier-ctr-interface.h @@ -33,12 +33,12 @@ * */ typedef struct gfdb_ipc_ctr_params { - gf_boolean_t is_promote; - int write_freq_threshold; - int read_freq_threshold; - gfdb_time_t time_stamp; - int query_limit; - gf_boolean_t emergency_demote; + gf_boolean_t is_promote; + int write_freq_threshold; + int read_freq_threshold; + gfdb_time_t time_stamp; + int query_limit; + gf_boolean_t emergency_demote; } gfdb_ipc_ctr_params_t; #endif diff --git a/libglusterfs/src/timer.h b/libglusterfs/src/timer.h index 32b246cf00d..216fc65144a 100644 --- a/libglusterfs/src/timer.h +++ b/libglusterfs/src/timer.h @@ -16,43 +16,40 @@ #include <sys/time.h> #include <pthread.h> -typedef void (*gf_timer_cbk_t) (void *); +typedef void (*gf_timer_cbk_t)(void *); struct _gf_timer { - union { - struct list_head list; - struct { - struct _gf_timer *next; - struct _gf_timer *prev; - }; + union { + struct list_head list; + struct { + struct _gf_timer *next; + struct _gf_timer *prev; }; - struct timespec at; - gf_timer_cbk_t callbk; - void *data; - xlator_t *xl; - gf_boolean_t fired; + }; + struct timespec at; + gf_timer_cbk_t callbk; + void *data; + xlator_t *xl; + gf_boolean_t fired; }; struct _gf_timer_registry { - pthread_t th; - char fin; - struct list_head active; - gf_lock_t lock; + pthread_t th; + char fin; + struct list_head active; + gf_lock_t lock; }; typedef struct _gf_timer gf_timer_t; typedef struct _gf_timer_registry gf_timer_registry_t; gf_timer_t * -gf_timer_call_after (glusterfs_ctx_t *ctx, - struct timespec delta, - gf_timer_cbk_t cbk, - void *data); +gf_timer_call_after(glusterfs_ctx_t *ctx, struct timespec delta, + gf_timer_cbk_t cbk, void *data); int32_t -gf_timer_call_cancel (glusterfs_ctx_t *ctx, - gf_timer_t *event); +gf_timer_call_cancel(glusterfs_ctx_t *ctx, gf_timer_t *event); void -gf_timer_registry_destroy (glusterfs_ctx_t *ctx); +gf_timer_registry_destroy(glusterfs_ctx_t *ctx); #endif /* _TIMER_H */ diff --git a/libglusterfs/src/timespec.h b/libglusterfs/src/timespec.h index 9c393ee7166..73db2d16abe 100644 --- a/libglusterfs/src/timespec.h +++ b/libglusterfs/src/timespec.h @@ -14,14 +14,16 @@ #include <stdint.h> #include <sys/time.h> -#define TS(ts) ((ts.tv_sec * 1000000000LL) + ts.tv_nsec) +#define TS(ts) ((ts.tv_sec * 1000000000LL) + ts.tv_nsec) #define NANO (+1.0E-9) #define GIGA UINT64_C(1000000000) -void timespec_now (struct timespec *ts); -void timespec_adjust_delta (struct timespec *ts, struct timespec delta); -void timespec_sub (const struct timespec *begin, - const struct timespec *end, - struct timespec *res); +void +timespec_now(struct timespec *ts); +void +timespec_adjust_delta(struct timespec *ts, struct timespec delta); +void +timespec_sub(const struct timespec *begin, const struct timespec *end, + struct timespec *res); #endif /* __INCLUDE_TIMESPEC_H__ */ diff --git a/libglusterfs/src/trie.h b/libglusterfs/src/trie.h index f7a4deee02f..6d2d8015964 100644 --- a/libglusterfs/src/trie.h +++ b/libglusterfs/src/trie.h @@ -18,29 +18,35 @@ struct trie; typedef struct trie trie_t; struct trienodevec { - trienode_t **nodes; - unsigned cnt; + trienode_t **nodes; + unsigned cnt; }; +trie_t * +trie_new(); -trie_t *trie_new (); +int +trie_add(trie_t *trie, const char *word); -int trie_add (trie_t *trie, const char *word); +void +trie_destroy(trie_t *trie); -void trie_destroy (trie_t *trie); +void +trie_destroy_bynode(trienode_t *node); -void trie_destroy_bynode (trienode_t *node); +int +trie_measure(trie_t *trie, const char *word, trienode_t **nodes, int nodecnt); -int trie_measure (trie_t *trie, const char *word, trienode_t **nodes, - int nodecnt); +int +trie_measure_vec(trie_t *trie, const char *word, struct trienodevec *nodevec); -int trie_measure_vec (trie_t *trie, const char *word, - struct trienodevec *nodevec); +void +trie_reset_search(trie_t *trie); -void trie_reset_search (trie_t *trie); +int +trienode_get_dist(trienode_t *node); -int trienode_get_dist (trienode_t *node); - -int trienode_get_word (trienode_t *node, char **buf); +int +trienode_get_word(trienode_t *node, char **buf); #endif diff --git a/libglusterfs/src/unittest/unittest.h b/libglusterfs/src/unittest/unittest.h index 6320217db0d..58b3e28bb6e 100644 --- a/libglusterfs/src/unittest/unittest.h +++ b/libglusterfs/src/unittest/unittest.h @@ -18,8 +18,9 @@ #include <cmocka_pbc.h> #include <cmocka.h> -extern void mock_assert(const int result, const char* const expression, - const char * const file, const int line); +extern void +mock_assert(const int result, const char *const expression, + const char *const file, const int line); // Change GF_CALLOC and GF_FREE to use // cmocka memory allocation versions @@ -30,16 +31,17 @@ extern void mock_assert(const int result, const char* const expression, #define GF_FREE test_free /* Catch intended assert()'s while unit-testing */ -extern void mock_assert(const int result, const char* const expression, - const char * const file, const int line); +extern void +mock_assert(const int result, const char *const expression, + const char *const file, const int line); #undef assert -#define assert(expression) \ - mock_assert((int)(expression), #expression, __FILE__, __LINE__); +#define assert(expression) \ + mock_assert((int)(expression), #expression, __FILE__, __LINE__); #endif #else #define REQUIRE(p) /**/ -#define ENSURE(p) /**/ +#define ENSURE(p) /**/ #endif #endif /* _GF_UNITTEST */ diff --git a/libglusterfs/src/upcall-utils.h b/libglusterfs/src/upcall-utils.h index 48d10382c10..765b8ef1aa6 100644 --- a/libglusterfs/src/upcall-utils.h +++ b/libglusterfs/src/upcall-utils.h @@ -16,93 +16,95 @@ #include "compat.h" /* Flags sent for cache_invalidation */ -#define UP_NLINK 0x00000001 /* update nlink */ -#define UP_MODE 0x00000002 /* update mode and ctime */ -#define UP_OWN 0x00000004 /* update mode,uid,gid and ctime */ -#define UP_SIZE 0x00000008 /* update fsize */ -#define UP_TIMES 0x00000010 /* update all times */ -#define UP_ATIME 0x00000020 /* update atime only */ -#define UP_PERM 0x00000040 /* update fields needed for permission - checking */ -#define UP_RENAME 0x00000080 /* this is a rename op - delete the cache - entry */ -#define UP_FORGET 0x00000100 /* inode_forget on server side - - invalidate the cache entry */ -#define UP_PARENT_TIMES 0x00000200 /* update parent dir times */ - -#define UP_XATTR 0x00000400 /* update the xattrs and ctime */ -#define UP_XATTR_RM 0x00000800 /* Remove the xattrs and update ctime */ +#define UP_NLINK 0x00000001 /* update nlink */ +#define UP_MODE 0x00000002 /* update mode and ctime */ +#define UP_OWN 0x00000004 /* update mode,uid,gid and ctime */ +#define UP_SIZE 0x00000008 /* update fsize */ +#define UP_TIMES 0x00000010 /* update all times */ +#define UP_ATIME 0x00000020 /* update atime only */ +#define UP_PERM \ + 0x00000040 /* update fields needed for permission \ + checking */ +#define UP_RENAME \ + 0x00000080 /* this is a rename op - delete the cache \ + entry */ +#define UP_FORGET \ + 0x00000100 /* inode_forget on server side - \ + invalidate the cache entry */ +#define UP_PARENT_TIMES 0x00000200 /* update parent dir times */ + +#define UP_XATTR 0x00000400 /* update the xattrs and ctime */ +#define UP_XATTR_RM 0x00000800 /* Remove the xattrs and update ctime */ #define UP_EXPLICIT_LOOKUP 0x00001000 /* Request an explicit lookup */ -#define UP_INVAL_ATTR 0x00002000 /* Request to invalidate iatt and xatt */ +#define UP_INVAL_ATTR 0x00002000 /* Request to invalidate iatt and xatt */ /* for fops - open, read, lk, */ -#define UP_UPDATE_CLIENT (UP_ATIME) +#define UP_UPDATE_CLIENT (UP_ATIME) /* for fop - write, truncate */ -#define UP_WRITE_FLAGS (UP_SIZE | UP_TIMES) +#define UP_WRITE_FLAGS (UP_SIZE | UP_TIMES) /* for fop - setattr */ -#define UP_ATTR_FLAGS (UP_SIZE | UP_TIMES | UP_OWN | UP_MODE | \ - UP_PERM) +#define UP_ATTR_FLAGS (UP_SIZE | UP_TIMES | UP_OWN | UP_MODE | UP_PERM) /* for fop - rename */ -#define UP_RENAME_FLAGS (UP_RENAME) +#define UP_RENAME_FLAGS (UP_RENAME) /* to invalidate parent directory entries for fops -rename, unlink, rmdir, * mkdir, create */ -#define UP_PARENT_DENTRY_FLAGS (UP_PARENT_TIMES) +#define UP_PARENT_DENTRY_FLAGS (UP_PARENT_TIMES) /* for fop - unlink, link, rmdir, mkdir */ -#define UP_NLINK_FLAGS (UP_NLINK | UP_TIMES) +#define UP_NLINK_FLAGS (UP_NLINK | UP_TIMES) -#define IATT_UPDATE_FLAGS (UP_NLINK | UP_MODE | UP_OWN | UP_SIZE | \ - UP_TIMES | UP_ATIME | UP_PERM) +#define IATT_UPDATE_FLAGS \ + (UP_NLINK | UP_MODE | UP_OWN | UP_SIZE | UP_TIMES | UP_ATIME | UP_PERM) typedef enum { - GF_UPCALL_EVENT_NULL, - GF_UPCALL_CACHE_INVALIDATION, - GF_UPCALL_RECALL_LEASE, - GF_UPCALL_INODELK_CONTENTION, - GF_UPCALL_ENTRYLK_CONTENTION, + GF_UPCALL_EVENT_NULL, + GF_UPCALL_CACHE_INVALIDATION, + GF_UPCALL_RECALL_LEASE, + GF_UPCALL_INODELK_CONTENTION, + GF_UPCALL_ENTRYLK_CONTENTION, } gf_upcall_event_t; struct gf_upcall { - char *client_uid; - uuid_t gfid; - uint32_t event_type; - void *data; + char *client_uid; + uuid_t gfid; + uint32_t event_type; + void *data; }; struct gf_upcall_cache_invalidation { - uint32_t flags; - uint32_t expire_time_attr; - struct iatt stat; - struct iatt p_stat; /* parent dir stat */ - struct iatt oldp_stat; /* oldparent dir stat */ - dict_t *dict; /* For xattrs */ + uint32_t flags; + uint32_t expire_time_attr; + struct iatt stat; + struct iatt p_stat; /* parent dir stat */ + struct iatt oldp_stat; /* oldparent dir stat */ + dict_t *dict; /* For xattrs */ }; struct gf_upcall_recall_lease { - uint32_t lease_type; /* Lease type to which client can downgrade to*/ - uuid_t tid; /* transaction id of the fop that caused - the recall */ - dict_t *dict; + uint32_t lease_type; /* Lease type to which client can downgrade to*/ + uuid_t tid; /* transaction id of the fop that caused + the recall */ + dict_t *dict; }; struct gf_upcall_inodelk_contention { - struct gf_flock flock; - pid_t pid; - const char *domain; - dict_t *xdata; + struct gf_flock flock; + pid_t pid; + const char *domain; + dict_t *xdata; }; struct gf_upcall_entrylk_contention { - uint32_t type; - pid_t pid; - const char *name; - const char *domain; - dict_t *xdata; + uint32_t type; + pid_t pid; + const char *name; + const char *domain; + dict_t *xdata; }; #endif /* _UPCALL_UTILS_H */ diff --git a/libglusterfs/src/xlator.h b/libglusterfs/src/xlator.h index e0b8207444c..12078bb72e3 100644 --- a/libglusterfs/src/xlator.h +++ b/libglusterfs/src/xlator.h @@ -27,20 +27,20 @@ #define FIRST_CHILD(xl) (xl->children->xlator) #define SECOND_CHILD(xl) (xl->children->next->xlator) -#define GF_SET_ATTR_MODE 0x1 -#define GF_SET_ATTR_UID 0x2 -#define GF_SET_ATTR_GID 0x4 -#define GF_SET_ATTR_SIZE 0x8 +#define GF_SET_ATTR_MODE 0x1 +#define GF_SET_ATTR_UID 0x2 +#define GF_SET_ATTR_GID 0x4 +#define GF_SET_ATTR_SIZE 0x8 #define GF_SET_ATTR_ATIME 0x10 #define GF_SET_ATTR_MTIME 0x20 #define GF_SET_ATTR_CTIME 0x40 -#define gf_attr_mode_set(mode) ((mode) & GF_SET_ATTR_MODE) -#define gf_attr_uid_set(mode) ((mode) & GF_SET_ATTR_UID) -#define gf_attr_gid_set(mode) ((mode) & GF_SET_ATTR_GID) -#define gf_attr_size_set(mode) ((mode) & GF_SET_ATTR_SIZE) -#define gf_attr_atime_set(mode) ((mode) & GF_SET_ATTR_ATIME) -#define gf_attr_mtime_set(mode) ((mode) & GF_SET_ATTR_MTIME) +#define gf_attr_mode_set(mode) ((mode)&GF_SET_ATTR_MODE) +#define gf_attr_uid_set(mode) ((mode)&GF_SET_ATTR_UID) +#define gf_attr_gid_set(mode) ((mode)&GF_SET_ATTR_GID) +#define gf_attr_size_set(mode) ((mode)&GF_SET_ATTR_SIZE) +#define gf_attr_atime_set(mode) ((mode)&GF_SET_ATTR_ATIME) +#define gf_attr_mtime_set(mode) ((mode)&GF_SET_ATTR_MTIME) struct _xlator; typedef struct _xlator xlator_t; @@ -51,9 +51,8 @@ typedef struct _gf_dirent gf_dirent_t; struct _loc; typedef struct _loc loc_t; - -typedef int32_t (*event_notify_fn_t) (xlator_t *this, int32_t event, void *data, - ...); +typedef int32_t (*event_notify_fn_t)(xlator_t *this, int32_t event, void *data, + ...); #include "list.h" #include "gf-dirent.h" @@ -64,1003 +63,792 @@ typedef int32_t (*event_notify_fn_t) (xlator_t *this, int32_t event, void *data, #include "options.h" #include "client_t.h" - struct _loc { - const char *path; - const char *name; - inode_t *inode; - inode_t *parent; - /* Currently all location based operations are through 'gfid' of inode. - * But the 'inode->gfid' only gets set in higher most layer (as in, - * 'fuse', 'protocol/server', or 'nfs/server'). So if translators want - * to send fops on a inode before the 'inode->gfid' is set, they have to - * make use of below 'gfid' fields - */ - uuid_t gfid; - uuid_t pargfid; + const char *path; + const char *name; + inode_t *inode; + inode_t *parent; + /* Currently all location based operations are through 'gfid' of inode. + * But the 'inode->gfid' only gets set in higher most layer (as in, + * 'fuse', 'protocol/server', or 'nfs/server'). So if translators want + * to send fops on a inode before the 'inode->gfid' is set, they have to + * make use of below 'gfid' fields + */ + uuid_t gfid; + uuid_t pargfid; }; +typedef int32_t (*fop_getspec_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, char *spec_data); -typedef int32_t (*fop_getspec_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - char *spec_data); - -typedef int32_t (*fop_rchecksum_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - uint32_t weak_checksum, - uint8_t *strong_checksum, - dict_t *xdata); - - -typedef int32_t (*fop_getspec_t) (call_frame_t *frame, - xlator_t *this, - const char *key, - int32_t flag); - -typedef int32_t (*fop_rchecksum_t) (call_frame_t *frame, - xlator_t *this, - fd_t *fd, off_t offset, - int32_t len, dict_t *xdata); - - -typedef int32_t (*fop_lookup_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - inode_t *inode, - struct iatt *buf, - dict_t *xdata, - struct iatt *postparent); - -typedef int32_t (*fop_stat_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - struct iatt *buf, dict_t *xdata); - -typedef int32_t (*fop_fstat_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - struct iatt *buf, dict_t *xdata); - -typedef int32_t (*fop_truncate_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - struct iatt *prebuf, +typedef int32_t (*fop_rchecksum_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, uint32_t weak_checksum, + uint8_t *strong_checksum, dict_t *xdata); + +typedef int32_t (*fop_getspec_t)(call_frame_t *frame, xlator_t *this, + const char *key, int32_t flag); + +typedef int32_t (*fop_rchecksum_t)(call_frame_t *frame, xlator_t *this, + fd_t *fd, off_t offset, int32_t len, + dict_t *xdata); + +typedef int32_t (*fop_lookup_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, inode_t *inode, + struct iatt *buf, dict_t *xdata, + struct iatt *postparent); + +typedef int32_t (*fop_stat_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, struct iatt *buf, + dict_t *xdata); + +typedef int32_t (*fop_fstat_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, struct iatt *buf, + dict_t *xdata); + +typedef int32_t (*fop_truncate_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, struct iatt *prebuf, + struct iatt *postbuf, dict_t *xdata); + +typedef int32_t (*fop_ftruncate_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, struct iatt *prebuf, struct iatt *postbuf, dict_t *xdata); -typedef int32_t (*fop_ftruncate_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - struct iatt *prebuf, - struct iatt *postbuf, dict_t *xdata); - -typedef int32_t (*fop_access_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, dict_t *xdata); +typedef int32_t (*fop_access_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, dict_t *xdata); -typedef int32_t (*fop_readlink_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - const char *path, - struct iatt *buf, dict_t *xdata); - -typedef int32_t (*fop_mknod_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - inode_t *inode, - struct iatt *buf, - struct iatt *preparent, - struct iatt *postparent, dict_t *xdata); +typedef int32_t (*fop_readlink_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, const char *path, + struct iatt *buf, dict_t *xdata); -typedef int32_t (*fop_mkdir_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - inode_t *inode, - struct iatt *buf, - struct iatt *preparent, - struct iatt *postparent, dict_t *xdata); +typedef int32_t (*fop_mknod_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, inode_t *inode, + struct iatt *buf, struct iatt *preparent, + struct iatt *postparent, dict_t *xdata); -typedef int32_t (*fop_unlink_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - struct iatt *preparent, - struct iatt *postparent, dict_t *xdata); +typedef int32_t (*fop_mkdir_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, inode_t *inode, + struct iatt *buf, struct iatt *preparent, + struct iatt *postparent, dict_t *xdata); -typedef int32_t (*fop_rmdir_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - struct iatt *preparent, +typedef int32_t (*fop_unlink_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, struct iatt *preparent, struct iatt *postparent, dict_t *xdata); -typedef int32_t (*fop_symlink_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - inode_t *inode, - struct iatt *buf, - struct iatt *preparent, - struct iatt *postparent, dict_t *xdata); - -typedef int32_t (*fop_rename_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - struct iatt *buf, - struct iatt *preoldparent, - struct iatt *postoldparent, - struct iatt *prenewparent, - struct iatt *postnewparent, dict_t *xdata); - -typedef int32_t (*fop_link_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - inode_t *inode, - struct iatt *buf, - struct iatt *preparent, +typedef int32_t (*fop_rmdir_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, struct iatt *preparent, struct iatt *postparent, dict_t *xdata); -typedef int32_t (*fop_create_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - fd_t *fd, - inode_t *inode, - struct iatt *buf, - struct iatt *preparent, +typedef int32_t (*fop_symlink_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, inode_t *inode, + struct iatt *buf, struct iatt *preparent, struct iatt *postparent, dict_t *xdata); -typedef int32_t (*fop_open_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - fd_t *fd, dict_t *xdata); - -typedef int32_t (*fop_readv_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - struct iovec *vector, - int32_t count, - struct iatt *stbuf, - struct iobref *iobref, dict_t *xdata); - -typedef int32_t (*fop_writev_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - struct iatt *prebuf, - struct iatt *postbuf, dict_t *xdata); - -typedef int32_t (*fop_flush_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, dict_t *xdata); +typedef int32_t (*fop_rename_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, struct iatt *buf, + struct iatt *preoldparent, + struct iatt *postoldparent, + struct iatt *prenewparent, + struct iatt *postnewparent, dict_t *xdata); + +typedef int32_t (*fop_link_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, inode_t *inode, + struct iatt *buf, struct iatt *preparent, + struct iatt *postparent, dict_t *xdata); + +typedef int32_t (*fop_create_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, fd_t *fd, inode_t *inode, + struct iatt *buf, struct iatt *preparent, + struct iatt *postparent, dict_t *xdata); + +typedef int32_t (*fop_open_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, fd_t *fd, dict_t *xdata); -typedef int32_t (*fop_fsync_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - struct iatt *prebuf, +typedef int32_t (*fop_readv_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, struct iovec *vector, + int32_t count, struct iatt *stbuf, + struct iobref *iobref, dict_t *xdata); + +typedef int32_t (*fop_writev_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, struct iatt *prebuf, struct iatt *postbuf, dict_t *xdata); -typedef int32_t (*fop_opendir_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - fd_t *fd, dict_t *xdata); +typedef int32_t (*fop_flush_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, dict_t *xdata); -typedef int32_t (*fop_fsyncdir_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, dict_t *xdata); +typedef int32_t (*fop_fsync_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, struct iatt *prebuf, + struct iatt *postbuf, dict_t *xdata); -typedef int32_t (*fop_statfs_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - struct statvfs *buf, dict_t *xdata); - -typedef int32_t (*fop_setxattr_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, dict_t *xdata); +typedef int32_t (*fop_opendir_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, fd_t *fd, dict_t *xdata); -typedef int32_t (*fop_getxattr_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - dict_t *dict, dict_t *xdata); - -typedef int32_t (*fop_fsetxattr_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, dict_t *xdata); - -typedef int32_t (*fop_fgetxattr_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - dict_t *dict, dict_t *xdata); - -typedef int32_t (*fop_removexattr_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, dict_t *xdata); +typedef int32_t (*fop_fsyncdir_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, dict_t *xdata); -typedef int32_t (*fop_fremovexattr_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, dict_t *xdata); - -typedef int32_t (*fop_lk_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - struct gf_flock *flock, dict_t *xdata); +typedef int32_t (*fop_statfs_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, struct statvfs *buf, + dict_t *xdata); -typedef int32_t (*fop_inodelk_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, +typedef int32_t (*fop_setxattr_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, int32_t op_errno, dict_t *xdata); -typedef int32_t (*fop_finodelk_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, +typedef int32_t (*fop_getxattr_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, dict_t *dict, + dict_t *xdata); + +typedef int32_t (*fop_fsetxattr_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, int32_t op_errno, dict_t *xdata); -typedef int32_t (*fop_entrylk_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, +typedef int32_t (*fop_fgetxattr_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, dict_t *dict, + dict_t *xdata); + +typedef int32_t (*fop_removexattr_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, dict_t *xdata); + +typedef int32_t (*fop_fremovexattr_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, dict_t *xdata); + +typedef int32_t (*fop_lk_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, struct gf_flock *flock, + dict_t *xdata); + +typedef int32_t (*fop_inodelk_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, dict_t *xdata); + +typedef int32_t (*fop_finodelk_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, int32_t op_errno, dict_t *xdata); -typedef int32_t (*fop_fentrylk_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, dict_t *xdata); +typedef int32_t (*fop_entrylk_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, dict_t *xdata); -typedef int32_t (*fop_readdir_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - gf_dirent_t *entries, dict_t *xdata); +typedef int32_t (*fop_fentrylk_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, dict_t *xdata); -typedef int32_t (*fop_readdirp_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - gf_dirent_t *entries, dict_t *xdata); +typedef int32_t (*fop_readdir_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, gf_dirent_t *entries, + dict_t *xdata); -typedef int32_t (*fop_xattrop_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - dict_t *xattr, dict_t *xdata); +typedef int32_t (*fop_readdirp_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, gf_dirent_t *entries, + dict_t *xdata); -typedef int32_t (*fop_fxattrop_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - dict_t *xattr, dict_t *xdata); +typedef int32_t (*fop_xattrop_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, dict_t *xattr, + dict_t *xdata); +typedef int32_t (*fop_fxattrop_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, dict_t *xattr, + dict_t *xdata); -typedef int32_t (*fop_setattr_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, +typedef int32_t (*fop_setattr_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, struct iatt *preop_stbuf, + struct iatt *postop_stbuf, dict_t *xdata); + +typedef int32_t (*fop_fsetattr_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, int32_t op_errno, struct iatt *preop_stbuf, struct iatt *postop_stbuf, dict_t *xdata); -typedef int32_t (*fop_fsetattr_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, +typedef int32_t (*fop_fallocate_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, int32_t op_errno, struct iatt *preop_stbuf, - struct iatt *postop_stbuf, dict_t *xdata); - -typedef int32_t (*fop_fallocate_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - struct iatt *preop_stbuf, - struct iatt *postop_stbuf, dict_t *xdata); - -typedef int32_t (*fop_discard_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - struct iatt *preop_stbuf, - struct iatt *postop_stbuf, dict_t *xdata); + struct iatt *postop_stbuf, + dict_t *xdata); + +typedef int32_t (*fop_discard_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, struct iatt *preop_stbuf, + struct iatt *postop_stbuf, dict_t *xdata); -typedef int32_t (*fop_zerofill_cbk_t) (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, +typedef int32_t (*fop_zerofill_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, int32_t op_errno, struct iatt *preop_stbuf, struct iatt *postop_stbuf, dict_t *xdata); -typedef int32_t (*fop_ipc_cbk_t) (call_frame_t *frame, void *cookie, +typedef int32_t (*fop_ipc_cbk_t)(call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, int32_t op_errno, dict_t *xdata); -typedef int32_t (*fop_seek_cbk_t) (call_frame_t *frame, void *cookie, +typedef int32_t (*fop_seek_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, off_t offset, + dict_t *xdata); + +typedef int32_t (*fop_lease_cbk_t)(call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, - int32_t op_errno, off_t offset, + int32_t op_errno, struct gf_lease *lease, dict_t *xdata); +typedef int32_t (*fop_compound_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, void *data, + dict_t *xdata); -typedef int32_t (*fop_lease_cbk_t) (call_frame_t *frame, void *cookie, - xlator_t *this, int32_t op_ret, - int32_t op_errno, struct gf_lease *lease, - dict_t *xdata); -typedef int32_t (*fop_compound_cbk_t) (call_frame_t *frame, - void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, - void *data, dict_t *xdata); - -typedef int32_t (*fop_getactivelk_cbk_t) (call_frame_t *frame, void *cookie, - xlator_t *this, int32_t op_ret, - int32_t op_errno, - lock_migration_info_t *locklist, - dict_t *xdata); - -typedef int32_t (*fop_setactivelk_cbk_t) (call_frame_t *frame, void *cookie, - xlator_t *this, int32_t op_ret, - int32_t op_errno, dict_t *xdata); - -typedef int32_t (*fop_put_cbk_t) (call_frame_t *frame, void *cookie, - xlator_t *this, int32_t op_ret, - int32_t op_errno, inode_t *inode, - struct iatt *buf, struct iatt *preparent, - struct iatt *postparent, dict_t *xdata); +typedef int32_t (*fop_getactivelk_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, + lock_migration_info_t *locklist, + dict_t *xdata); -typedef int32_t (*fop_icreate_cbk_t) (call_frame_t *frame, void *cookie, - xlator_t *this, int32_t op_ret, - int32_t op_errno, inode_t *inode, - struct iatt *buf, dict_t *xdata); +typedef int32_t (*fop_setactivelk_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, dict_t *xdata); -typedef int32_t (*fop_namelink_cbk_t) (call_frame_t *frame, void *cookie, - xlator_t *this, int32_t op_ret, - int32_t op_errno, struct iatt *prebuf, - struct iatt *postbuf, dict_t *xdata); +typedef int32_t (*fop_put_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, inode_t *inode, + struct iatt *buf, struct iatt *preparent, + struct iatt *postparent, dict_t *xdata); -typedef int32_t (*fop_lookup_t) (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - dict_t *xdata); +typedef int32_t (*fop_icreate_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, inode_t *inode, + struct iatt *buf, dict_t *xdata); -typedef int32_t (*fop_stat_t) (call_frame_t *frame, - xlator_t *this, - loc_t *loc, dict_t *xdata); +typedef int32_t (*fop_namelink_cbk_t)(call_frame_t *frame, void *cookie, + xlator_t *this, int32_t op_ret, + int32_t op_errno, struct iatt *prebuf, + struct iatt *postbuf, dict_t *xdata); -typedef int32_t (*fop_fstat_t) (call_frame_t *frame, - xlator_t *this, - fd_t *fd, dict_t *xdata); +typedef int32_t (*fop_lookup_t)(call_frame_t *frame, xlator_t *this, loc_t *loc, + dict_t *xdata); + +typedef int32_t (*fop_stat_t)(call_frame_t *frame, xlator_t *this, loc_t *loc, + dict_t *xdata); + +typedef int32_t (*fop_fstat_t)(call_frame_t *frame, xlator_t *this, fd_t *fd, + dict_t *xdata); -typedef int32_t (*fop_truncate_t) (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - off_t offset, dict_t *xdata); +typedef int32_t (*fop_truncate_t)(call_frame_t *frame, xlator_t *this, + loc_t *loc, off_t offset, dict_t *xdata); -typedef int32_t (*fop_ftruncate_t) (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - off_t offset, dict_t *xdata); +typedef int32_t (*fop_ftruncate_t)(call_frame_t *frame, xlator_t *this, + fd_t *fd, off_t offset, dict_t *xdata); -typedef int32_t (*fop_access_t) (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - int32_t mask, dict_t *xdata); +typedef int32_t (*fop_access_t)(call_frame_t *frame, xlator_t *this, loc_t *loc, + int32_t mask, dict_t *xdata); -typedef int32_t (*fop_readlink_t) (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - size_t size, dict_t *xdata); +typedef int32_t (*fop_readlink_t)(call_frame_t *frame, xlator_t *this, + loc_t *loc, size_t size, dict_t *xdata); -typedef int32_t (*fop_mknod_t) (call_frame_t *frame, xlator_t *this, - loc_t *loc, mode_t mode, dev_t rdev, - mode_t umask, dict_t *xdata); +typedef int32_t (*fop_mknod_t)(call_frame_t *frame, xlator_t *this, loc_t *loc, + mode_t mode, dev_t rdev, mode_t umask, + dict_t *xdata); -typedef int32_t (*fop_mkdir_t) (call_frame_t *frame, xlator_t *this, loc_t *loc, - mode_t mode, mode_t umask, dict_t *xdata); +typedef int32_t (*fop_mkdir_t)(call_frame_t *frame, xlator_t *this, loc_t *loc, + mode_t mode, mode_t umask, dict_t *xdata); -typedef int32_t (*fop_unlink_t) (call_frame_t *frame, xlator_t *this, - loc_t *loc, int xflags, dict_t *xdata); +typedef int32_t (*fop_unlink_t)(call_frame_t *frame, xlator_t *this, loc_t *loc, + int xflags, dict_t *xdata); -typedef int32_t (*fop_rmdir_t) (call_frame_t *frame, xlator_t *this, - loc_t *loc, int xflags, dict_t *xdata); +typedef int32_t (*fop_rmdir_t)(call_frame_t *frame, xlator_t *this, loc_t *loc, + int xflags, dict_t *xdata); -typedef int32_t (*fop_symlink_t) (call_frame_t *frame, xlator_t *this, - const char *linkname, loc_t *loc, - mode_t umask, dict_t *xdata); +typedef int32_t (*fop_symlink_t)(call_frame_t *frame, xlator_t *this, + const char *linkname, loc_t *loc, mode_t umask, + dict_t *xdata); -typedef int32_t (*fop_rename_t) (call_frame_t *frame, - xlator_t *this, - loc_t *oldloc, - loc_t *newloc, dict_t *xdata); +typedef int32_t (*fop_rename_t)(call_frame_t *frame, xlator_t *this, + loc_t *oldloc, loc_t *newloc, dict_t *xdata); -typedef int32_t (*fop_link_t) (call_frame_t *frame, - xlator_t *this, - loc_t *oldloc, - loc_t *newloc, dict_t *xdata); +typedef int32_t (*fop_link_t)(call_frame_t *frame, xlator_t *this, + loc_t *oldloc, loc_t *newloc, dict_t *xdata); -typedef int32_t (*fop_create_t) (call_frame_t *frame, xlator_t *this, - loc_t *loc, int32_t flags, mode_t mode, - mode_t umask, fd_t *fd, dict_t *xdata); +typedef int32_t (*fop_create_t)(call_frame_t *frame, xlator_t *this, loc_t *loc, + int32_t flags, mode_t mode, mode_t umask, + fd_t *fd, dict_t *xdata); /* Tell subsequent writes on the fd_t to fsync after every writev fop without * requiring a fsync fop. */ -#define GF_OPEN_FSYNC 0x01 +#define GF_OPEN_FSYNC 0x01 /* Tell write-behind to disable writing behind despite O_SYNC not being set. */ -#define GF_OPEN_NOWB 0x02 - -typedef int32_t (*fop_open_t) (call_frame_t *frame, xlator_t *this, - loc_t *loc, int32_t flags, - fd_t *fd, dict_t *xdata); - -typedef int32_t (*fop_readv_t) (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - size_t size, - off_t offset, - uint32_t flags, dict_t *xdata); - -typedef int32_t (*fop_writev_t) (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - struct iovec *vector, - int32_t count, - off_t offset, - uint32_t flags, - struct iobref *iobref, dict_t *xdata); - -typedef int32_t (*fop_flush_t) (call_frame_t *frame, - xlator_t *this, - fd_t *fd, dict_t *xdata); +#define GF_OPEN_NOWB 0x02 + +typedef int32_t (*fop_open_t)(call_frame_t *frame, xlator_t *this, loc_t *loc, + int32_t flags, fd_t *fd, dict_t *xdata); + +typedef int32_t (*fop_readv_t)(call_frame_t *frame, xlator_t *this, fd_t *fd, + size_t size, off_t offset, uint32_t flags, + dict_t *xdata); + +typedef int32_t (*fop_writev_t)(call_frame_t *frame, xlator_t *this, fd_t *fd, + struct iovec *vector, int32_t count, + off_t offset, uint32_t flags, + struct iobref *iobref, dict_t *xdata); + +typedef int32_t (*fop_flush_t)(call_frame_t *frame, xlator_t *this, fd_t *fd, + dict_t *xdata); + +typedef int32_t (*fop_fsync_t)(call_frame_t *frame, xlator_t *this, fd_t *fd, + int32_t datasync, dict_t *xdata); + +typedef int32_t (*fop_opendir_t)(call_frame_t *frame, xlator_t *this, + loc_t *loc, fd_t *fd, dict_t *xdata); + +typedef int32_t (*fop_fsyncdir_t)(call_frame_t *frame, xlator_t *this, fd_t *fd, + int32_t datasync, dict_t *xdata); + +typedef int32_t (*fop_statfs_t)(call_frame_t *frame, xlator_t *this, loc_t *loc, + dict_t *xdata); + +typedef int32_t (*fop_setxattr_t)(call_frame_t *frame, xlator_t *this, + loc_t *loc, dict_t *dict, int32_t flags, + dict_t *xdata); -typedef int32_t (*fop_fsync_t) (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - int32_t datasync, dict_t *xdata); - -typedef int32_t (*fop_opendir_t) (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - fd_t *fd, dict_t *xdata); - -typedef int32_t (*fop_fsyncdir_t) (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - int32_t datasync, dict_t *xdata); - -typedef int32_t (*fop_statfs_t) (call_frame_t *frame, - xlator_t *this, - loc_t *loc, dict_t *xdata); - -typedef int32_t (*fop_setxattr_t) (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - dict_t *dict, - int32_t flags, dict_t *xdata); - -typedef int32_t (*fop_getxattr_t) (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - const char *name, dict_t *xdata); - -typedef int32_t (*fop_fsetxattr_t) (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - dict_t *dict, - int32_t flags, dict_t *xdata); - -typedef int32_t (*fop_fgetxattr_t) (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - const char *name, dict_t *xdata); - -typedef int32_t (*fop_removexattr_t) (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - const char *name, dict_t *xdata); - -typedef int32_t (*fop_fremovexattr_t) (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - const char *name, dict_t *xdata); - -typedef int32_t (*fop_lk_t) (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - int32_t cmd, - struct gf_flock *flock, dict_t *xdata); - -typedef int32_t (*fop_inodelk_t) (call_frame_t *frame, - xlator_t *this, - const char *volume, - loc_t *loc, - int32_t cmd, +typedef int32_t (*fop_getxattr_t)(call_frame_t *frame, xlator_t *this, + loc_t *loc, const char *name, dict_t *xdata); + +typedef int32_t (*fop_fsetxattr_t)(call_frame_t *frame, xlator_t *this, + fd_t *fd, dict_t *dict, int32_t flags, + dict_t *xdata); + +typedef int32_t (*fop_fgetxattr_t)(call_frame_t *frame, xlator_t *this, + fd_t *fd, const char *name, dict_t *xdata); + +typedef int32_t (*fop_removexattr_t)(call_frame_t *frame, xlator_t *this, + loc_t *loc, const char *name, + dict_t *xdata); + +typedef int32_t (*fop_fremovexattr_t)(call_frame_t *frame, xlator_t *this, + fd_t *fd, const char *name, + dict_t *xdata); + +typedef int32_t (*fop_lk_t)(call_frame_t *frame, xlator_t *this, fd_t *fd, + int32_t cmd, struct gf_flock *flock, dict_t *xdata); + +typedef int32_t (*fop_inodelk_t)(call_frame_t *frame, xlator_t *this, + const char *volume, loc_t *loc, int32_t cmd, + struct gf_flock *flock, dict_t *xdata); + +typedef int32_t (*fop_finodelk_t)(call_frame_t *frame, xlator_t *this, + const char *volume, fd_t *fd, int32_t cmd, struct gf_flock *flock, dict_t *xdata); -typedef int32_t (*fop_finodelk_t) (call_frame_t *frame, - xlator_t *this, - const char *volume, - fd_t *fd, - int32_t cmd, - struct gf_flock *flock, dict_t *xdata); +typedef int32_t (*fop_entrylk_t)(call_frame_t *frame, xlator_t *this, + const char *volume, loc_t *loc, + const char *basename, entrylk_cmd cmd, + entrylk_type type, dict_t *xdata); -typedef int32_t (*fop_entrylk_t) (call_frame_t *frame, - xlator_t *this, - const char *volume, loc_t *loc, +typedef int32_t (*fop_fentrylk_t)(call_frame_t *frame, xlator_t *this, + const char *volume, fd_t *fd, const char *basename, entrylk_cmd cmd, entrylk_type type, dict_t *xdata); -typedef int32_t (*fop_fentrylk_t) (call_frame_t *frame, - xlator_t *this, - const char *volume, fd_t *fd, - const char *basename, entrylk_cmd cmd, - entrylk_type type, dict_t *xdata); - -typedef int32_t (*fop_readdir_t) (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - size_t size, - off_t offset, dict_t *xdata); - -typedef int32_t (*fop_readdirp_t) (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - size_t size, - off_t offset, - dict_t *xdata); +typedef int32_t (*fop_readdir_t)(call_frame_t *frame, xlator_t *this, fd_t *fd, + size_t size, off_t offset, dict_t *xdata); -typedef int32_t (*fop_xattrop_t) (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - gf_xattrop_flags_t optype, - dict_t *xattr, dict_t *xdata); - -typedef int32_t (*fop_fxattrop_t) (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - gf_xattrop_flags_t optype, - dict_t *xattr, dict_t *xdata); - -typedef int32_t (*fop_setattr_t) (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - struct iatt *stbuf, - int32_t valid, dict_t *xdata); - -typedef int32_t (*fop_fsetattr_t) (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - struct iatt *stbuf, - int32_t valid, dict_t *xdata); - -typedef int32_t (*fop_fallocate_t) (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - int32_t keep_size, - off_t offset, - size_t len, - dict_t *xdata); +typedef int32_t (*fop_readdirp_t)(call_frame_t *frame, xlator_t *this, fd_t *fd, + size_t size, off_t offset, dict_t *xdata); -typedef int32_t (*fop_discard_t) (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - off_t offset, - size_t len, +typedef int32_t (*fop_xattrop_t)(call_frame_t *frame, xlator_t *this, + loc_t *loc, gf_xattrop_flags_t optype, + dict_t *xattr, dict_t *xdata); + +typedef int32_t (*fop_fxattrop_t)(call_frame_t *frame, xlator_t *this, fd_t *fd, + gf_xattrop_flags_t optype, dict_t *xattr, dict_t *xdata); -typedef int32_t (*fop_zerofill_t) (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - off_t offset, - off_t len, +typedef int32_t (*fop_setattr_t)(call_frame_t *frame, xlator_t *this, + loc_t *loc, struct iatt *stbuf, int32_t valid, + dict_t *xdata); + +typedef int32_t (*fop_fsetattr_t)(call_frame_t *frame, xlator_t *this, fd_t *fd, + struct iatt *stbuf, int32_t valid, dict_t *xdata); -typedef int32_t (*fop_ipc_t) (call_frame_t *frame, xlator_t *this, int32_t op, - dict_t *xdata); +typedef int32_t (*fop_fallocate_t)(call_frame_t *frame, xlator_t *this, + fd_t *fd, int32_t keep_size, off_t offset, + size_t len, dict_t *xdata); -typedef int32_t (*fop_seek_t) (call_frame_t *frame, xlator_t *this, fd_t *fd, - off_t offset, gf_seek_what_t what, - dict_t *xdata); +typedef int32_t (*fop_discard_t)(call_frame_t *frame, xlator_t *this, fd_t *fd, + off_t offset, size_t len, dict_t *xdata); -typedef int32_t (*fop_lease_t) (call_frame_t *frame, xlator_t *this, loc_t *loc, - struct gf_lease *lease, dict_t *xdata); +typedef int32_t (*fop_zerofill_t)(call_frame_t *frame, xlator_t *this, fd_t *fd, + off_t offset, off_t len, dict_t *xdata); -typedef int32_t (*fop_compound_t) (call_frame_t *frame, xlator_t *this, - void *args, dict_t *xdata); +typedef int32_t (*fop_ipc_t)(call_frame_t *frame, xlator_t *this, int32_t op, + dict_t *xdata); -typedef int32_t (*fop_getactivelk_t) (call_frame_t *frame, xlator_t *this, - loc_t *loc, dict_t *xdata); +typedef int32_t (*fop_seek_t)(call_frame_t *frame, xlator_t *this, fd_t *fd, + off_t offset, gf_seek_what_t what, dict_t *xdata); -typedef int32_t (*fop_setactivelk_t) (call_frame_t *frame, xlator_t *this, - loc_t *loc, - lock_migration_info_t *locklist, - dict_t *xdata); +typedef int32_t (*fop_lease_t)(call_frame_t *frame, xlator_t *this, loc_t *loc, + struct gf_lease *lease, dict_t *xdata); -typedef int32_t (*fop_put_t) (call_frame_t *frame, xlator_t *this, loc_t *loc, - mode_t mode, mode_t umask, uint32_t flags, - struct iovec *vector, int32_t count, off_t offset, - struct iobref *iobref, dict_t *xattr, - dict_t *xdata); +typedef int32_t (*fop_compound_t)(call_frame_t *frame, xlator_t *this, + void *args, dict_t *xdata); + +typedef int32_t (*fop_getactivelk_t)(call_frame_t *frame, xlator_t *this, + loc_t *loc, dict_t *xdata); + +typedef int32_t (*fop_setactivelk_t)(call_frame_t *frame, xlator_t *this, + loc_t *loc, + lock_migration_info_t *locklist, + dict_t *xdata); -typedef int32_t (*fop_icreate_t) (call_frame_t *frame, xlator_t *this, - loc_t *loc, mode_t mode, dict_t *xdata); +typedef int32_t (*fop_put_t)(call_frame_t *frame, xlator_t *this, loc_t *loc, + mode_t mode, mode_t umask, uint32_t flags, + struct iovec *vector, int32_t count, off_t offset, + struct iobref *iobref, dict_t *xattr, + dict_t *xdata); -typedef int32_t (*fop_namelink_t) (call_frame_t *frame, xlator_t *this, - loc_t *loc, dict_t *xdata); +typedef int32_t (*fop_icreate_t)(call_frame_t *frame, xlator_t *this, + loc_t *loc, mode_t mode, dict_t *xdata); + +typedef int32_t (*fop_namelink_t)(call_frame_t *frame, xlator_t *this, + loc_t *loc, dict_t *xdata); /* WARNING: make sure the list is in order with FOP definition in `rpc/xdr/src/glusterfs-fops.x`. If it is not in order, mainly the metrics related feature would be broken */ struct xlator_fops { - fop_stat_t stat; - fop_readlink_t readlink; - fop_mknod_t mknod; - fop_mkdir_t mkdir; - fop_unlink_t unlink; - fop_rmdir_t rmdir; - fop_symlink_t symlink; - fop_rename_t rename; - fop_link_t link; - fop_truncate_t truncate; - fop_open_t open; - fop_readv_t readv; - fop_writev_t writev; - fop_statfs_t statfs; - fop_flush_t flush; - fop_fsync_t fsync; - fop_setxattr_t setxattr; - fop_getxattr_t getxattr; - fop_removexattr_t removexattr; - fop_opendir_t opendir; - fop_fsyncdir_t fsyncdir; - fop_access_t access; - fop_create_t create; - fop_ftruncate_t ftruncate; - fop_fstat_t fstat; - fop_lk_t lk; - fop_lookup_t lookup; - fop_readdir_t readdir; - fop_inodelk_t inodelk; - fop_finodelk_t finodelk; - fop_entrylk_t entrylk; - fop_fentrylk_t fentrylk; - fop_xattrop_t xattrop; - fop_fxattrop_t fxattrop; - fop_fgetxattr_t fgetxattr; - fop_fsetxattr_t fsetxattr; - fop_rchecksum_t rchecksum; - fop_setattr_t setattr; - fop_fsetattr_t fsetattr; - fop_readdirp_t readdirp; - - /* These 3 are required to keep the index same as GF_FOP_##FOP */ - void *forget_placeholder; - void *release_placeholder; - void *releasedir_placeholder; - - fop_getspec_t getspec; - fop_fremovexattr_t fremovexattr; - fop_fallocate_t fallocate; - fop_discard_t discard; - fop_zerofill_t zerofill; - fop_ipc_t ipc; - fop_seek_t seek; - fop_lease_t lease; - fop_compound_t compound; - fop_getactivelk_t getactivelk; - fop_setactivelk_t setactivelk; - fop_put_t put; - fop_icreate_t icreate; - fop_namelink_t namelink; - - /* these entries are used for a typechecking hack in STACK_WIND _only_ */ - /* make sure to add _cbk variables only after defining regular fops as - its relative position is used to get the index */ - fop_stat_cbk_t stat_cbk; - fop_readlink_cbk_t readlink_cbk; - fop_mknod_cbk_t mknod_cbk; - fop_mkdir_cbk_t mkdir_cbk; - fop_unlink_cbk_t unlink_cbk; - fop_rmdir_cbk_t rmdir_cbk; - fop_symlink_cbk_t symlink_cbk; - fop_rename_cbk_t rename_cbk; - fop_link_cbk_t link_cbk; - fop_truncate_cbk_t truncate_cbk; - fop_open_cbk_t open_cbk; - fop_readv_cbk_t readv_cbk; - fop_writev_cbk_t writev_cbk; - fop_statfs_cbk_t statfs_cbk; - fop_flush_cbk_t flush_cbk; - fop_fsync_cbk_t fsync_cbk; - fop_setxattr_cbk_t setxattr_cbk; - fop_getxattr_cbk_t getxattr_cbk; - fop_removexattr_cbk_t removexattr_cbk; - fop_opendir_cbk_t opendir_cbk; - fop_fsyncdir_cbk_t fsyncdir_cbk; - fop_access_cbk_t access_cbk; - fop_create_cbk_t create_cbk; - fop_ftruncate_cbk_t ftruncate_cbk; - fop_fstat_cbk_t fstat_cbk; - fop_lk_cbk_t lk_cbk; - fop_lookup_cbk_t lookup_cbk; - fop_readdir_cbk_t readdir_cbk; - fop_inodelk_cbk_t inodelk_cbk; - fop_finodelk_cbk_t finodelk_cbk; - fop_entrylk_cbk_t entrylk_cbk; - fop_fentrylk_cbk_t fentrylk_cbk; - fop_xattrop_cbk_t xattrop_cbk; - fop_fxattrop_cbk_t fxattrop_cbk; - fop_fgetxattr_cbk_t fgetxattr_cbk; - fop_fsetxattr_cbk_t fsetxattr_cbk; - fop_rchecksum_cbk_t rchecksum_cbk; - fop_setattr_cbk_t setattr_cbk; - fop_fsetattr_cbk_t fsetattr_cbk; - fop_readdirp_cbk_t readdirp_cbk; - - /* These 3 are required to keep the index same as GF_FOP_##FOP */ - void *forget_placeholder_cbk; - void *release_placeholder_cbk; - void *releasedir_placeholder_cbk; - - fop_getspec_cbk_t getspec_cbk; - fop_fremovexattr_cbk_t fremovexattr_cbk; - fop_fallocate_cbk_t fallocate_cbk; - fop_discard_cbk_t discard_cbk; - fop_zerofill_cbk_t zerofill_cbk; - fop_ipc_cbk_t ipc_cbk; - fop_seek_cbk_t seek_cbk; - fop_lease_cbk_t lease_cbk; - fop_compound_cbk_t compound_cbk; - fop_getactivelk_cbk_t getactivelk_cbk; - fop_setactivelk_cbk_t setactivelk_cbk; - fop_put_cbk_t put_cbk; - fop_icreate_cbk_t icreate_cbk; - fop_namelink_cbk_t namelink_cbk; + fop_stat_t stat; + fop_readlink_t readlink; + fop_mknod_t mknod; + fop_mkdir_t mkdir; + fop_unlink_t unlink; + fop_rmdir_t rmdir; + fop_symlink_t symlink; + fop_rename_t rename; + fop_link_t link; + fop_truncate_t truncate; + fop_open_t open; + fop_readv_t readv; + fop_writev_t writev; + fop_statfs_t statfs; + fop_flush_t flush; + fop_fsync_t fsync; + fop_setxattr_t setxattr; + fop_getxattr_t getxattr; + fop_removexattr_t removexattr; + fop_opendir_t opendir; + fop_fsyncdir_t fsyncdir; + fop_access_t access; + fop_create_t create; + fop_ftruncate_t ftruncate; + fop_fstat_t fstat; + fop_lk_t lk; + fop_lookup_t lookup; + fop_readdir_t readdir; + fop_inodelk_t inodelk; + fop_finodelk_t finodelk; + fop_entrylk_t entrylk; + fop_fentrylk_t fentrylk; + fop_xattrop_t xattrop; + fop_fxattrop_t fxattrop; + fop_fgetxattr_t fgetxattr; + fop_fsetxattr_t fsetxattr; + fop_rchecksum_t rchecksum; + fop_setattr_t setattr; + fop_fsetattr_t fsetattr; + fop_readdirp_t readdirp; + + /* These 3 are required to keep the index same as GF_FOP_##FOP */ + void *forget_placeholder; + void *release_placeholder; + void *releasedir_placeholder; + + fop_getspec_t getspec; + fop_fremovexattr_t fremovexattr; + fop_fallocate_t fallocate; + fop_discard_t discard; + fop_zerofill_t zerofill; + fop_ipc_t ipc; + fop_seek_t seek; + fop_lease_t lease; + fop_compound_t compound; + fop_getactivelk_t getactivelk; + fop_setactivelk_t setactivelk; + fop_put_t put; + fop_icreate_t icreate; + fop_namelink_t namelink; + + /* these entries are used for a typechecking hack in STACK_WIND _only_ */ + /* make sure to add _cbk variables only after defining regular fops as + its relative position is used to get the index */ + fop_stat_cbk_t stat_cbk; + fop_readlink_cbk_t readlink_cbk; + fop_mknod_cbk_t mknod_cbk; + fop_mkdir_cbk_t mkdir_cbk; + fop_unlink_cbk_t unlink_cbk; + fop_rmdir_cbk_t rmdir_cbk; + fop_symlink_cbk_t symlink_cbk; + fop_rename_cbk_t rename_cbk; + fop_link_cbk_t link_cbk; + fop_truncate_cbk_t truncate_cbk; + fop_open_cbk_t open_cbk; + fop_readv_cbk_t readv_cbk; + fop_writev_cbk_t writev_cbk; + fop_statfs_cbk_t statfs_cbk; + fop_flush_cbk_t flush_cbk; + fop_fsync_cbk_t fsync_cbk; + fop_setxattr_cbk_t setxattr_cbk; + fop_getxattr_cbk_t getxattr_cbk; + fop_removexattr_cbk_t removexattr_cbk; + fop_opendir_cbk_t opendir_cbk; + fop_fsyncdir_cbk_t fsyncdir_cbk; + fop_access_cbk_t access_cbk; + fop_create_cbk_t create_cbk; + fop_ftruncate_cbk_t ftruncate_cbk; + fop_fstat_cbk_t fstat_cbk; + fop_lk_cbk_t lk_cbk; + fop_lookup_cbk_t lookup_cbk; + fop_readdir_cbk_t readdir_cbk; + fop_inodelk_cbk_t inodelk_cbk; + fop_finodelk_cbk_t finodelk_cbk; + fop_entrylk_cbk_t entrylk_cbk; + fop_fentrylk_cbk_t fentrylk_cbk; + fop_xattrop_cbk_t xattrop_cbk; + fop_fxattrop_cbk_t fxattrop_cbk; + fop_fgetxattr_cbk_t fgetxattr_cbk; + fop_fsetxattr_cbk_t fsetxattr_cbk; + fop_rchecksum_cbk_t rchecksum_cbk; + fop_setattr_cbk_t setattr_cbk; + fop_fsetattr_cbk_t fsetattr_cbk; + fop_readdirp_cbk_t readdirp_cbk; + + /* These 3 are required to keep the index same as GF_FOP_##FOP */ + void *forget_placeholder_cbk; + void *release_placeholder_cbk; + void *releasedir_placeholder_cbk; + + fop_getspec_cbk_t getspec_cbk; + fop_fremovexattr_cbk_t fremovexattr_cbk; + fop_fallocate_cbk_t fallocate_cbk; + fop_discard_cbk_t discard_cbk; + fop_zerofill_cbk_t zerofill_cbk; + fop_ipc_cbk_t ipc_cbk; + fop_seek_cbk_t seek_cbk; + fop_lease_cbk_t lease_cbk; + fop_compound_cbk_t compound_cbk; + fop_getactivelk_cbk_t getactivelk_cbk; + fop_setactivelk_cbk_t setactivelk_cbk; + fop_put_cbk_t put_cbk; + fop_icreate_cbk_t icreate_cbk; + fop_namelink_cbk_t namelink_cbk; }; -typedef int32_t (*cbk_forget_t) (xlator_t *this, - inode_t *inode); +typedef int32_t (*cbk_forget_t)(xlator_t *this, inode_t *inode); -typedef int32_t (*cbk_release_t) (xlator_t *this, - fd_t *fd); +typedef int32_t (*cbk_release_t)(xlator_t *this, fd_t *fd); typedef int32_t (*cbk_invalidate_t)(xlator_t *this, inode_t *inode); typedef int32_t (*cbk_client_t)(xlator_t *this, client_t *client); -typedef void (*cbk_ictxmerge_t) (xlator_t *this, fd_t *fd, - inode_t *inode, inode_t *linked_inode); +typedef void (*cbk_ictxmerge_t)(xlator_t *this, fd_t *fd, inode_t *inode, + inode_t *linked_inode); typedef size_t (*cbk_inodectx_size_t)(xlator_t *this, inode_t *inode); typedef size_t (*cbk_fdctx_size_t)(xlator_t *this, fd_t *fd); struct xlator_cbks { - cbk_forget_t forget; - cbk_release_t release; - cbk_release_t releasedir; - cbk_invalidate_t invalidate; - cbk_client_t client_destroy; - cbk_client_t client_disconnect; - cbk_ictxmerge_t ictxmerge; - cbk_inodectx_size_t ictxsize; - cbk_fdctx_size_t fdctxsize; + cbk_forget_t forget; + cbk_release_t release; + cbk_release_t releasedir; + cbk_invalidate_t invalidate; + cbk_client_t client_destroy; + cbk_client_t client_disconnect; + cbk_ictxmerge_t ictxmerge; + cbk_inodectx_size_t ictxsize; + cbk_fdctx_size_t fdctxsize; }; -typedef int32_t (*dumpop_priv_t) (xlator_t *this); +typedef int32_t (*dumpop_priv_t)(xlator_t *this); -typedef int32_t (*dumpop_inode_t) (xlator_t *this); +typedef int32_t (*dumpop_inode_t)(xlator_t *this); -typedef int32_t (*dumpop_fd_t) (xlator_t *this); +typedef int32_t (*dumpop_fd_t)(xlator_t *this); -typedef int32_t (*dumpop_inodectx_t) (xlator_t *this, inode_t *ino); +typedef int32_t (*dumpop_inodectx_t)(xlator_t *this, inode_t *ino); -typedef int32_t (*dumpop_fdctx_t) (xlator_t *this, fd_t *fd); +typedef int32_t (*dumpop_fdctx_t)(xlator_t *this, fd_t *fd); -typedef int32_t (*dumpop_priv_to_dict_t) (xlator_t *this, dict_t *dict, - char *brickname); +typedef int32_t (*dumpop_priv_to_dict_t)(xlator_t *this, dict_t *dict, + char *brickname); -typedef int32_t (*dumpop_inode_to_dict_t) (xlator_t *this, dict_t *dict); +typedef int32_t (*dumpop_inode_to_dict_t)(xlator_t *this, dict_t *dict); -typedef int32_t (*dumpop_fd_to_dict_t) (xlator_t *this, dict_t *dict); +typedef int32_t (*dumpop_fd_to_dict_t)(xlator_t *this, dict_t *dict); -typedef int32_t (*dumpop_inodectx_to_dict_t) (xlator_t *this, inode_t *ino, - dict_t *dict); +typedef int32_t (*dumpop_inodectx_to_dict_t)(xlator_t *this, inode_t *ino, + dict_t *dict); -typedef int32_t (*dumpop_fdctx_to_dict_t) (xlator_t *this, fd_t *fd, - dict_t *dict); +typedef int32_t (*dumpop_fdctx_to_dict_t)(xlator_t *this, fd_t *fd, + dict_t *dict); -typedef int32_t (*dumpop_eh_t) (xlator_t *this); +typedef int32_t (*dumpop_eh_t)(xlator_t *this); struct xlator_dumpops { - dumpop_priv_t priv; - dumpop_inode_t inode; - dumpop_fd_t fd; - dumpop_inodectx_t inodectx; - dumpop_fdctx_t fdctx; - dumpop_priv_to_dict_t priv_to_dict; - dumpop_inode_to_dict_t inode_to_dict; - dumpop_fd_to_dict_t fd_to_dict; - dumpop_inodectx_to_dict_t inodectx_to_dict; - dumpop_fdctx_to_dict_t fdctx_to_dict; - dumpop_eh_t history; + dumpop_priv_t priv; + dumpop_inode_t inode; + dumpop_fd_t fd; + dumpop_inodectx_t inodectx; + dumpop_fdctx_t fdctx; + dumpop_priv_to_dict_t priv_to_dict; + dumpop_inode_to_dict_t inode_to_dict; + dumpop_fd_to_dict_t fd_to_dict; + dumpop_inodectx_to_dict_t inodectx_to_dict; + dumpop_fdctx_to_dict_t fdctx_to_dict; + dumpop_eh_t history; }; typedef struct xlator_list { - xlator_t *xlator; - struct xlator_list *next; + xlator_t *xlator; + struct xlator_list *next; } xlator_list_t; typedef struct fop_metrics { - gf_atomic_t fop; - gf_atomic_t cbk; /* only updaed when there is failure */ + gf_atomic_t fop; + gf_atomic_t cbk; /* only updaed when there is failure */ } fop_metrics_t; struct _xlator { - /* Built during parsing */ - char *name; - char *type; - char *instance_name; /* Used for multi NFSd */ - xlator_t *next; - xlator_t *prev; - xlator_list_t *parents; - xlator_list_t *children; - dict_t *options; - - /* Set after doing dlopen() */ - void *dlhandle; - struct xlator_fops *fops; - struct xlator_cbks *cbks; - struct xlator_dumpops *dumpops; - struct list_head volume_options; /* list of volume_option_t */ - - void (*fini)(xlator_t *this); - int32_t (*init)(xlator_t *this); - int32_t (*reconfigure)(xlator_t *this, dict_t *options); - int32_t (*mem_acct_init)(xlator_t *this); - int32_t (*dump_metrics)(xlator_t *this, int fd); - - event_notify_fn_t notify; - - gf_loglevel_t loglevel; /* Log level for translator */ - + /* Built during parsing */ + char *name; + char *type; + char *instance_name; /* Used for multi NFSd */ + xlator_t *next; + xlator_t *prev; + xlator_list_t *parents; + xlator_list_t *children; + dict_t *options; + + /* Set after doing dlopen() */ + void *dlhandle; + struct xlator_fops *fops; + struct xlator_cbks *cbks; + struct xlator_dumpops *dumpops; + struct list_head volume_options; /* list of volume_option_t */ + + void (*fini)(xlator_t *this); + int32_t (*init)(xlator_t *this); + int32_t (*reconfigure)(xlator_t *this, dict_t *options); + int32_t (*mem_acct_init)(xlator_t *this); + int32_t (*dump_metrics)(xlator_t *this, int fd); + + event_notify_fn_t notify; + + gf_loglevel_t loglevel; /* Log level for translator */ + + struct { struct { - struct { - /* for latency measurement */ - fop_metrics_t metrics[GF_FOP_MAXVALUE]; + /* for latency measurement */ + fop_metrics_t metrics[GF_FOP_MAXVALUE]; - gf_atomic_t count; - } total; + gf_atomic_t count; + } total; - struct { - /* for latency measurement */ - fop_latency_t latencies[GF_FOP_MAXVALUE]; - /* for latency measurement */ - fop_metrics_t metrics[GF_FOP_MAXVALUE]; + struct { + /* for latency measurement */ + fop_latency_t latencies[GF_FOP_MAXVALUE]; + /* for latency measurement */ + fop_metrics_t metrics[GF_FOP_MAXVALUE]; - gf_atomic_t count; - } interval; - } stats; + gf_atomic_t count; + } interval; + } stats; - /* Misc */ - eh_t *history; /* event history context */ - glusterfs_ctx_t *ctx; - glusterfs_graph_t *graph; /* not set for fuse */ - inode_table_t *itable; - char init_succeeded; - void *private; - struct mem_acct *mem_acct; - uint64_t winds; - char switched; + /* Misc */ + eh_t *history; /* event history context */ + glusterfs_ctx_t *ctx; + glusterfs_graph_t *graph; /* not set for fuse */ + inode_table_t *itable; + char init_succeeded; + void *private; + struct mem_acct *mem_acct; + uint64_t winds; + char switched; - /* for the memory pool of 'frame->local' */ - struct mem_pool *local_pool; - gf_boolean_t is_autoloaded; + /* for the memory pool of 'frame->local' */ + struct mem_pool *local_pool; + gf_boolean_t is_autoloaded; - /* Saved volfile ID (used for multiplexing) */ - char *volfile_id; + /* Saved volfile ID (used for multiplexing) */ + char *volfile_id; - /* Its used as an index to inode_ctx*/ - uint32_t xl_id; + /* Its used as an index to inode_ctx*/ + uint32_t xl_id; - /* op_version: initialized in xlator code itself */ - uint32_t op_version[GF_MAX_RELEASES]; + /* op_version: initialized in xlator code itself */ + uint32_t op_version[GF_MAX_RELEASES]; - /* flags: initialized in xlator code itself */ - uint32_t flags; + /* flags: initialized in xlator code itself */ + uint32_t flags; - /* id: unique, initialized in xlator code itself */ - uint32_t id; + /* id: unique, initialized in xlator code itself */ + uint32_t id; - /* identifier: a full string which can unique identify the xlator */ - char *identifier; + /* identifier: a full string which can unique identify the xlator */ + char *identifier; - /* Is this pass_through? */ - gf_boolean_t pass_through; - struct xlator_fops *pass_through_fops; + /* Is this pass_through? */ + gf_boolean_t pass_through; + struct xlator_fops *pass_through_fops; - /* cleanup flag to avoid races during xlator cleanup */ - uint32_t cleanup_starting; + /* cleanup flag to avoid races during xlator cleanup */ + uint32_t cleanup_starting; - /* flag to avoid recall of xlator_mem_cleanup for xame xlator */ - uint32_t call_cleanup; + /* flag to avoid recall of xlator_mem_cleanup for xame xlator */ + uint32_t call_cleanup; - /* Flag to understand how this xlator is categorized */ - gf_category_t category; + /* Flag to understand how this xlator is categorized */ + gf_category_t category; }; typedef struct { - int32_t (*init) (xlator_t *this); - void (*fini) (xlator_t *this); - int32_t (*reconfigure) (xlator_t *this, - dict_t *options); - event_notify_fn_t notify; + int32_t (*init)(xlator_t *this); + void (*fini)(xlator_t *this); + int32_t (*reconfigure)(xlator_t *this, dict_t *options); + event_notify_fn_t notify; } class_methods_t; /* This would be the only structure which needs to be exported by @@ -1071,166 +859,192 @@ typedef struct { * GD2MARKER below. */ typedef struct { - /* op_version: will be used by volume generation logic to figure - out whether to insert it in graph or no, based on cluster's - operating version. - default value: 0, which means good to insert always */ - uint32_t op_version[GF_MAX_RELEASES]; - - /* flags: will be used by volume generation logic to optimize the - placements etc. - default value: 0, which means don't treat it specially */ - uint32_t flags; - - /* xlator_id: unique per xlator. make sure to have no collission - in this ID */ - uint32_t xlator_id; - - /* identifier: a string constant */ - char *identifier; - - /* struct options: if the translator takes any 'options' from the - volume file, then that should be defined here. optional. */ - volume_option_t *options; - - /* Flag to understand how this xlator is categorized */ - gf_category_t category; - - /* XXX: GD2MARKER - * If a new member that needs to be visible to GD2 is introduced, - * add it above this comment. - * Any other new members need to be added below this comment, or at the - * end of the struct - */ - - /* init(): mandatory method, will be called during the - graph initialization */ - int32_t (*init) (xlator_t *this); - - /* fini(): optional method, will be initialized to default - method which would just free the 'xlator->private' variable. - This method is called when the graph is no more in use, and - is being destroyed. Also when SIGTERM is received */ - void (*fini) (xlator_t *this); - - /* reconfigure(): optional method, will be initialized to default - method in case not provided by xlator. This method is called - when there are only option changes in xlator, and no graph change. - eg., a 'gluster volume set' command */ - int32_t (*reconfigure) (xlator_t *this, dict_t *options); - - /* mem_acct_init(): used for memory accounting inside of the xlator. - optional. called during translator initialization */ - int32_t (*mem_acct_init) (xlator_t *this); - - /* dump_metrics(): used for providing internal metrics. optional */ - int32_t (*dump_metrics) (xlator_t *this, int fd); - - /* notify(): used for handling the notification of events from either - the parent or child in the graph. optional. */ - event_notify_fn_t notify; - - /* struct fops: mandatory. provides all the filesystem operations - methods of the xlator */ - struct xlator_fops *fops; - /* struct cbks: optional. provides methods to handle - inode forgets, and fd releases */ - struct xlator_cbks *cbks; - - /* dumpops: a structure again, with methods to dump the details. - optional. */ - struct xlator_dumpops *dumpops; - - /* struct pass_through_fops: optional. provides all the filesystem - operations which should be used if the xlator is marked as pass_through */ - /* by default, the default_fops would be used */ - struct xlator_fops *pass_through_fops; + /* op_version: will be used by volume generation logic to figure + out whether to insert it in graph or no, based on cluster's + operating version. + default value: 0, which means good to insert always */ + uint32_t op_version[GF_MAX_RELEASES]; + + /* flags: will be used by volume generation logic to optimize the + placements etc. + default value: 0, which means don't treat it specially */ + uint32_t flags; + + /* xlator_id: unique per xlator. make sure to have no collission + in this ID */ + uint32_t xlator_id; + + /* identifier: a string constant */ + char *identifier; + + /* struct options: if the translator takes any 'options' from the + volume file, then that should be defined here. optional. */ + volume_option_t *options; + + /* Flag to understand how this xlator is categorized */ + gf_category_t category; + + /* XXX: GD2MARKER + * If a new member that needs to be visible to GD2 is introduced, + * add it above this comment. + * Any other new members need to be added below this comment, or at the + * end of the struct + */ + + /* init(): mandatory method, will be called during the + graph initialization */ + int32_t (*init)(xlator_t *this); + + /* fini(): optional method, will be initialized to default + method which would just free the 'xlator->private' variable. + This method is called when the graph is no more in use, and + is being destroyed. Also when SIGTERM is received */ + void (*fini)(xlator_t *this); + + /* reconfigure(): optional method, will be initialized to default + method in case not provided by xlator. This method is called + when there are only option changes in xlator, and no graph change. + eg., a 'gluster volume set' command */ + int32_t (*reconfigure)(xlator_t *this, dict_t *options); + + /* mem_acct_init(): used for memory accounting inside of the xlator. + optional. called during translator initialization */ + int32_t (*mem_acct_init)(xlator_t *this); + + /* dump_metrics(): used for providing internal metrics. optional */ + int32_t (*dump_metrics)(xlator_t *this, int fd); + + /* notify(): used for handling the notification of events from either + the parent or child in the graph. optional. */ + event_notify_fn_t notify; + + /* struct fops: mandatory. provides all the filesystem operations + methods of the xlator */ + struct xlator_fops *fops; + /* struct cbks: optional. provides methods to handle + inode forgets, and fd releases */ + struct xlator_cbks *cbks; + + /* dumpops: a structure again, with methods to dump the details. + optional. */ + struct xlator_dumpops *dumpops; + + /* struct pass_through_fops: optional. provides all the filesystem + operations which should be used if the xlator is marked as pass_through + */ + /* by default, the default_fops would be used */ + struct xlator_fops *pass_through_fops; } xlator_api_t; #define xlator_has_parent(xl) (xl->parents != NULL) -#define XLATOR_NOTIFY(ret, _xl, params ...) \ - do { \ - xlator_t *_old_THIS = NULL; \ - \ - _old_THIS = THIS; \ - THIS = _xl; \ - \ - ret = _xl->notify (_xl, params);\ - \ - THIS = _old_THIS; \ - } while (0); +#define XLATOR_NOTIFY(ret, _xl, params...) \ + do { \ + xlator_t *_old_THIS = NULL; \ + \ + _old_THIS = THIS; \ + THIS = _xl; \ + \ + ret = _xl->notify(_xl, params); \ + \ + THIS = _old_THIS; \ + } while (0); -int32_t xlator_set_type_virtual (xlator_t *xl, const char *type); +int32_t +xlator_set_type_virtual(xlator_t *xl, const char *type); -int32_t xlator_set_type (xlator_t *xl, const char *type); +int32_t +xlator_set_type(xlator_t *xl, const char *type); -int32_t xlator_dynload (xlator_t *xl); +int32_t +xlator_dynload(xlator_t *xl); -xlator_t *file_to_xlator_tree (glusterfs_ctx_t *ctx, - FILE *fp); +xlator_t * +file_to_xlator_tree(glusterfs_ctx_t *ctx, FILE *fp); -int xlator_notify (xlator_t *this, int32_t event, void *data, ...); -int xlator_init (xlator_t *this); -int xlator_destroy (xlator_t *xl); +int +xlator_notify(xlator_t *this, int32_t event, void *data, ...); +int +xlator_init(xlator_t *this); +int +xlator_destroy(xlator_t *xl); -int32_t xlator_tree_init (xlator_t *xl); -int32_t xlator_tree_free_members (xlator_t *xl); -int32_t xlator_tree_free_memacct (xlator_t *xl); +int32_t +xlator_tree_init(xlator_t *xl); +int32_t +xlator_tree_free_members(xlator_t *xl); +int32_t +xlator_tree_free_memacct(xlator_t *xl); -void xlator_tree_fini (xlator_t *xl); +void +xlator_tree_fini(xlator_t *xl); -void xlator_foreach (xlator_t *this, - void (*fn) (xlator_t *each, - void *data), - void *data); +void +xlator_foreach(xlator_t *this, void (*fn)(xlator_t *each, void *data), + void *data); -void xlator_foreach_depth_first (xlator_t *this, - void (*fn) (xlator_t *each, - void *data), - void *data); +void +xlator_foreach_depth_first(xlator_t *this, + void (*fn)(xlator_t *each, void *data), void *data); -xlator_t *xlator_search_by_name (xlator_t *any, const char *name); -xlator_t *get_xlator_by_name (xlator_t *this, char *target); -xlator_t *get_xlator_by_type (xlator_t *this, char *target); +xlator_t * +xlator_search_by_name(xlator_t *any, const char *name); +xlator_t * +get_xlator_by_name(xlator_t *this, char *target); +xlator_t * +get_xlator_by_type(xlator_t *this, char *target); void -xlator_set_inode_lru_limit (xlator_t *this, void *data); +xlator_set_inode_lru_limit(xlator_t *this, void *data); -void inode_destroy_notify (inode_t *inode, const char *xlname); +void +inode_destroy_notify(inode_t *inode, const char *xlname); -int loc_copy (loc_t *dst, loc_t *src); -int loc_copy_overload_parent (loc_t *dst, - loc_t *src, inode_t *parent); +int +loc_copy(loc_t *dst, loc_t *src); +int +loc_copy_overload_parent(loc_t *dst, loc_t *src, inode_t *parent); #define loc_dup(src, dst) loc_copy(dst, src) -void loc_wipe (loc_t *loc); -int loc_path (loc_t *loc, const char *bname); -void loc_gfid (loc_t *loc, uuid_t gfid); -void loc_pargfid (loc_t *loc, uuid_t pargfid); -char* loc_gfid_utoa (loc_t *loc); -gf_boolean_t loc_is_root (loc_t *loc); -int32_t loc_build_child (loc_t *child, loc_t *parent, char *name); -gf_boolean_t loc_is_nameless (loc_t *loc); -int xlator_mem_acct_init (xlator_t *xl, int num_types); -int is_gf_log_command (xlator_t *trans, const char *name, char *value); -int glusterd_check_log_level (const char *value); -int xlator_volopt_dynload (char *xlator_type, void **dl_handle, - volume_opt_list_t *vol_opt_handle); +void +loc_wipe(loc_t *loc); +int +loc_path(loc_t *loc, const char *bname); +void +loc_gfid(loc_t *loc, uuid_t gfid); +void +loc_pargfid(loc_t *loc, uuid_t pargfid); +char * +loc_gfid_utoa(loc_t *loc); +gf_boolean_t +loc_is_root(loc_t *loc); +int32_t +loc_build_child(loc_t *child, loc_t *parent, char *name); +gf_boolean_t +loc_is_nameless(loc_t *loc); +int +xlator_mem_acct_init(xlator_t *xl, int num_types); +int +is_gf_log_command(xlator_t *trans, const char *name, char *value); +int +glusterd_check_log_level(const char *value); +int +xlator_volopt_dynload(char *xlator_type, void **dl_handle, + volume_opt_list_t *vol_opt_handle); enum gf_hdsk_event_notify_op { - GF_EN_DEFRAG_STATUS, - GF_EN_MAX, + GF_EN_DEFRAG_STATUS, + GF_EN_MAX, }; gf_boolean_t -is_graph_topology_equal (glusterfs_graph_t *graph1, glusterfs_graph_t *graph2); +is_graph_topology_equal(glusterfs_graph_t *graph1, glusterfs_graph_t *graph2); int -glusterfs_volfile_reconfigure (FILE *newvolfile_fp, glusterfs_ctx_t *ctx); +glusterfs_volfile_reconfigure(FILE *newvolfile_fp, glusterfs_ctx_t *ctx); int -gf_volfile_reconfigure (int oldvollen, FILE *newvolfile_fp, - glusterfs_ctx_t *ctx, const char *oldvolfile); +gf_volfile_reconfigure(int oldvollen, FILE *newvolfile_fp, glusterfs_ctx_t *ctx, + const char *oldvolfile); int -loc_touchup (loc_t *loc, const char *name); +loc_touchup(loc_t *loc, const char *name); int glusterfs_leaf_position(xlator_t *tgt); @@ -1239,19 +1053,20 @@ int glusterfs_reachable_leaves(xlator_t *base, dict_t *leaves); int -xlator_subvolume_count (xlator_t *this); +xlator_subvolume_count(xlator_t *this); -void xlator_init_lock (void); -void xlator_init_unlock (void); +void +xlator_init_lock(void); +void +xlator_init_unlock(void); int -copy_opts_to_child (xlator_t *src, xlator_t *dst, char *glob); +copy_opts_to_child(xlator_t *src, xlator_t *dst, char *glob); int -glusterfs_delete_volfile_checksum (glusterfs_ctx_t *ctx, - const char *volfile_id); +glusterfs_delete_volfile_checksum(glusterfs_ctx_t *ctx, const char *volfile_id); int -xlator_memrec_free (xlator_t *xl); +xlator_memrec_free(xlator_t *xl); void -xlator_mem_cleanup (xlator_t *this); +xlator_mem_cleanup(xlator_t *this); #endif /* _XLATOR_H */ |