diff options
Diffstat (limited to 'xlators/features/bit-rot/src/stub/bit-rot-common.h')
| -rw-r--r-- | xlators/features/bit-rot/src/stub/bit-rot-common.h | 15 | 
1 files changed, 13 insertions, 2 deletions
diff --git a/xlators/features/bit-rot/src/stub/bit-rot-common.h b/xlators/features/bit-rot/src/stub/bit-rot-common.h index 7ad5e8a80c6..bcf931a2b0b 100644 --- a/xlators/features/bit-rot/src/stub/bit-rot-common.h +++ b/xlators/features/bit-rot/src/stub/bit-rot-common.h @@ -36,12 +36,23 @@ typedef enum br_sign_state {  } br_sign_state_t;  static inline br_vxattr_status_t -br_version_xattr_state (dict_t *xattr, -                        br_version_t **obuf, br_signature_t **sbuf) +br_version_xattr_state (dict_t *xattr, br_version_t **obuf, +                        br_signature_t **sbuf, gf_boolean_t *objbad)  {          int32_t             ret    = 0;          int32_t             vxattr = 0;          br_vxattr_status_t  status; +        void               *data   = NULL; + +        /** +         * The key being present in the dict indicates the xattr was set on +         * disk. The presence of xattr itself as of now is suffecient to say +         * the the object is bad. +         */ +        *objbad = _gf_false; +        ret = dict_get_bin (xattr, BITROT_OBJECT_BAD_KEY, (void **)&data); +        if (!ret) +                *objbad = _gf_true;          ret = dict_get_bin (xattr, BITROT_CURRENT_VERSION_KEY, (void **)obuf);          if (ret)  | 
