int ret = 0;
 
        ret = gfs2_dirent_offset(GFS2_SB(inode), buf);
-       if (ret < 0)
-               goto consist_inode;
-
+       if (ret < 0) {
+               gfs2_consist_inode(GFS2_I(inode));
+               return ERR_PTR(-EIO);
+       }
        offset = ret;
        prev = NULL;
        dent = buf + offset;
        size = be16_to_cpu(dent->de_rec_len);
-       if (gfs2_check_dirent(GFS2_SB(inode), dent, offset, size, len, 1))
-               goto consist_inode;
+       if (gfs2_check_dirent(GFS2_SB(inode), dent, offset, size, len, 1)) {
+               gfs2_consist_inode(GFS2_I(inode));
+               return ERR_PTR(-EIO);
+       }
        do {
                ret = scan(dent, name, opaque);
                if (ret)
                dent = buf + offset;
                size = be16_to_cpu(dent->de_rec_len);
                if (gfs2_check_dirent(GFS2_SB(inode), dent, offset, size,
-                                     len, 0))
-                       goto consist_inode;
+                                     len, 0)) {
+                       gfs2_consist_inode(GFS2_I(inode));
+                       return ERR_PTR(-EIO);
+               }
        } while(1);
 
        switch(ret) {
                BUG_ON(ret > 0);
                return ERR_PTR(ret);
        }
-
-consist_inode:
-       gfs2_consist_inode(GFS2_I(inode));
-       return ERR_PTR(-EIO);
 }
 
 static int dirent_check_reclen(struct gfs2_inode *dip,
        const void *ptr = d;
        u16 rec_len = be16_to_cpu(d->de_rec_len);
 
-       if (unlikely(rec_len < sizeof(struct gfs2_dirent)))
-               goto broken;
+       if (unlikely(rec_len < sizeof(struct gfs2_dirent))) {
+               gfs2_consist_inode(dip);
+               return -EIO;
+       }
        ptr += rec_len;
        if (ptr < end_p)
                return rec_len;
        if (ptr == end_p)
                return -ENOENT;
-broken:
+
        gfs2_consist_inode(dip);
        return -EIO;
 }
 
        struct inode *inode = &ip->i_inode;
        bool is_new = inode->i_state & I_NEW;
 
-       if (unlikely(ip->i_no_addr != be64_to_cpu(str->di_num.no_addr)))
-               goto corrupt;
-       if (unlikely(!is_new && inode_wrong_type(inode, mode)))
-               goto corrupt;
+       if (unlikely(ip->i_no_addr != be64_to_cpu(str->di_num.no_addr))) {
+               gfs2_consist_inode(ip);
+               return -EIO;
+       }
+       if (unlikely(!is_new && inode_wrong_type(inode, mode))) {
+               gfs2_consist_inode(ip);
+               return -EIO;
+       }
        ip->i_no_formal_ino = be64_to_cpu(str->di_num.no_formal_ino);
        inode->i_mode = mode;
        if (is_new) {
        /* i_diskflags and i_eattr must be set before gfs2_set_inode_flags() */
        gfs2_set_inode_flags(inode);
        height = be16_to_cpu(str->di_height);
-       if (unlikely(height > sdp->sd_max_height))
-               goto corrupt;
+       if (unlikely(height > sdp->sd_max_height)) {
+               gfs2_consist_inode(ip);
+               return -EIO;
+       }
        ip->i_height = (u8)height;
 
        depth = be16_to_cpu(str->di_depth);
-       if (unlikely(depth > GFS2_DIR_MAX_DEPTH))
-               goto corrupt;
+       if (unlikely(depth > GFS2_DIR_MAX_DEPTH)) {
+               gfs2_consist_inode(ip);
+               return -EIO;
+       }
        ip->i_depth = (u8)depth;
        ip->i_entries = be32_to_cpu(str->di_entries);
 
-       if (gfs2_is_stuffed(ip) && inode->i_size > gfs2_max_stuffed_size(ip))
-               goto corrupt;
-
+       if (gfs2_is_stuffed(ip) && inode->i_size > gfs2_max_stuffed_size(ip)) {
+               gfs2_consist_inode(ip);
+               return -EIO;
+       }
        if (S_ISREG(inode->i_mode))
                gfs2_set_aops(inode);
 
        return 0;
-corrupt:
-       gfs2_consist_inode(ip);
-       return -EIO;
 }
 
 /**
 
                return -EIO;
 
        for (ea = GFS2_EA_BH2FIRST(bh);; prev = ea, ea = GFS2_EA2NEXT(ea)) {
-               if (!GFS2_EA_REC_LEN(ea))
-                       goto fail;
+               if (!GFS2_EA_REC_LEN(ea)) {
+                       gfs2_consist_inode(ip);
+                       return -EIO;
+               }
                if (!(bh->b_data <= (char *)ea && (char *)GFS2_EA2NEXT(ea) <=
-                                                 bh->b_data + bh->b_size))
-                       goto fail;
-               if (!gfs2_eatype_valid(sdp, ea->ea_type))
-                       goto fail;
+                                                 bh->b_data + bh->b_size)) {
+                       gfs2_consist_inode(ip);
+                       return -EIO;
+               }
+               if (!gfs2_eatype_valid(sdp, ea->ea_type)) {
+                       gfs2_consist_inode(ip);
+                       return -EIO;
+               }
                error = ea_call(ip, bh, ea, prev, data);
                if (error)
                        return error;
 
                if (GFS2_EA_IS_LAST(ea)) {
                        if ((char *)GFS2_EA2NEXT(ea) !=
-                           bh->b_data + bh->b_size)
-                               goto fail;
+                           bh->b_data + bh->b_size) {
+                               gfs2_consist_inode(ip);
+                               return -EIO;
+                       }
                        break;
                }
        }
 
        return error;
-
-fail:
-       gfs2_consist_inode(ip);
-       return -EIO;
 }
 
 static int ea_foreach(struct gfs2_inode *ip, ea_call_t ea_call, void *data)