diff options
| author | Ravishankar N <ravishankar@redhat.com> | 2019-01-24 12:14:11 +0530 | 
|---|---|---|
| committer | Amar Tumballi <amarts@redhat.com> | 2019-01-24 12:16:50 +0000 | 
| commit | 06061aaa447f03e2522483d02525619ebc9854db (patch) | |
| tree | 814472e5c7e5c1c36e034ab10366c544fa65e275 /libglusterfs/src | |
| parent | 04f84756e1baa5eff4560339700f82970eaa5d80 (diff) | |
afr/self-heal:Fix wrong type checking
gf_dirent struct has d_type variable which should check
with DT_DIR istead of IA_IFDIR or IA_IFDIR has to compare
with entry->d_stat.ia_type
Change-Id: Idf1059ce2a590734bc5b6adaad73604d9a708804
updates: bz#1653359
Signed-off-by: Mohammed Rafi KC <rkavunga@redhat.com>
Diffstat (limited to 'libglusterfs/src')
| -rw-r--r-- | libglusterfs/src/common-utils.c | 23 | ||||
| -rw-r--r-- | libglusterfs/src/glusterfs/common-utils.h | 3 | ||||
| -rw-r--r-- | libglusterfs/src/libglusterfs.sym | 1 | ||||
| -rw-r--r-- | libglusterfs/src/syncop-utils.c | 2 | 
4 files changed, 28 insertions, 1 deletions
diff --git a/libglusterfs/src/common-utils.c b/libglusterfs/src/common-utils.c index 0798661806d..e16bb330a44 100644 --- a/libglusterfs/src/common-utils.c +++ b/libglusterfs/src/common-utils.c @@ -5341,3 +5341,26 @@ find_xlator_option_in_cmd_args_t(const char *option_name, cmd_args_t *args)      }      return NULL;  } + +int +gf_d_type_from_ia_type(ia_type_t type) +{ +    switch (type) { +        case IA_IFDIR: +            return DT_DIR; +        case IA_IFCHR: +            return DT_CHR; +        case IA_IFBLK: +            return DT_BLK; +        case IA_IFIFO: +            return DT_FIFO; +        case IA_IFLNK: +            return DT_LNK; +        case IA_IFREG: +            return DT_REG; +        case IA_IFSOCK: +            return DT_SOCK; +        default: +            return DT_UNKNOWN; +    } +} diff --git a/libglusterfs/src/glusterfs/common-utils.h b/libglusterfs/src/glusterfs/common-utils.h index 9061861ce3b..89b38e02448 100644 --- a/libglusterfs/src/glusterfs/common-utils.h +++ b/libglusterfs/src/glusterfs/common-utils.h @@ -1067,4 +1067,7 @@ gf_replace_new_iatt_in_dict(struct _dict *);  xlator_cmdline_option_t *  find_xlator_option_in_cmd_args_t(const char *option_name, cmd_args_t *args); +int +gf_d_type_from_ia_type(ia_type_t type); +  #endif /* _COMMON_UTILS_H */ diff --git a/libglusterfs/src/libglusterfs.sym b/libglusterfs/src/libglusterfs.sym index beeab5468f9..f0a92796187 100644 --- a/libglusterfs/src/libglusterfs.sym +++ b/libglusterfs/src/libglusterfs.sym @@ -1150,3 +1150,4 @@ gf_changelog_init  gf_changelog_register_generic  gf_gfid_generate_from_xxh64  find_xlator_option_in_cmd_args_t +gf_d_type_from_ia_type diff --git a/libglusterfs/src/syncop-utils.c b/libglusterfs/src/syncop-utils.c index 13e7165658e..be03527496e 100644 --- a/libglusterfs/src/syncop-utils.c +++ b/libglusterfs/src/syncop-utils.c @@ -403,7 +403,7 @@ syncop_mt_dir_scan(call_frame_t *frame, xlator_t *subvol, loc_t *loc, int pid,                  continue;              } -            if (entry->d_type == IA_IFDIR) { +            if (entry->d_stat.ia_type == IA_IFDIR) {                  ret = fn(subvol, entry, loc, data);                  gf_dirent_entry_free(entry);                  if (ret)  | 
