<div dir="ltr"><div dir="ltr"><div>Hi folks,</div><div><br></div><div>The &#39;struct md_cache&#39; in md-cache.c uses int data types which are not in common with the data types used in the &#39;struct iatt&#39; in iatt.h . If one take a closer look to the implementations one can see that the struct in md-cache.c uses still the int data types like in the struct &#39;old_iatt&#39; . This can lead to unexpected side effects and some values of iatt maybe will not mapped correctly. I would suggest to open a bug report. What do you think?<br><br>Additional info:<br><br>struct md_cache {<br>    ia_prot_t md_prot;<br>    uint32_t md_nlink;<br>    uint32_t md_uid;<br>    uint32_t md_gid;<br>    uint32_t md_atime;<br>    uint32_t md_atime_nsec;<br>    uint32_t md_mtime;<br>    uint32_t md_mtime_nsec;<br>    uint32_t md_ctime;<br>    uint32_t md_ctime_nsec;<br>    uint64_t md_rdev;<br>    uint64_t md_size;<br>    uint64_t md_blocks;<br>    uint64_t invalidation_time;<br>    uint64_t generation;<br>    dict_t *xattr;<br>    char *linkname;<br>    time_t ia_time;<br>    time_t xa_time;<br>    gf_boolean_t need_lookup;<br>    gf_boolean_t valid;<br>    gf_boolean_t gen_rollover;<br>    gf_boolean_t invalidation_rollover;<br>    gf_lock_t lock;<br>};<br><br>struct iatt {<br>    uint64_t ia_flags;<br>    uint64_t ia_ino;     /* inode number */<br>    uint64_t ia_dev;     /* backing device ID */<br>    uint64_t ia_rdev;    /* device ID (if special file) */<br>    uint64_t ia_size;    /* file size in bytes */<br>    uint32_t ia_nlink;   /* Link count */<br>    uint32_t ia_uid;     /* user ID of owner */<br>    uint32_t ia_gid;     /* group ID of owner */<br>    uint32_t ia_blksize; /* blocksize for filesystem I/O */<br>    uint64_t ia_blocks;  /* number of 512B blocks allocated */<br>    int64_t ia_atime;    /* last access time */<br>    int64_t ia_mtime;    /* last modification time */<br>    int64_t ia_ctime;    /* last status change time */<br>    int64_t ia_btime;    /* creation time. Fill using statx */<br>    uint32_t ia_atime_nsec;<br>    uint32_t ia_mtime_nsec;<br>    uint32_t ia_ctime_nsec;<br>    uint32_t ia_btime_nsec;<br>    uint64_t ia_attributes;      /* chattr related:compressed, immutable,<br>                                  * append only, encrypted etc.*/<br>    uint64_t ia_attributes_mask; /* Mask for the attributes */<br><br>    uuid_t ia_gfid;<br>    ia_type_t ia_type; /* type of file */<br>    ia_prot_t ia_prot; /* protection */<br>};<br><br>struct old_iatt {<br>    uint64_t ia_ino; /* inode number */<br>    uuid_t ia_gfid;<br>    uint64_t ia_dev;     /* backing device ID */<br>    ia_type_t ia_type;   /* type of file */<br>    ia_prot_t ia_prot;   /* protection */<br>    uint32_t ia_nlink;   /* Link count */<br>    uint32_t ia_uid;     /* user ID of owner */<br>    uint32_t ia_gid;     /* group ID of owner */<br>    uint64_t ia_rdev;    /* device ID (if special file) */<br>    uint64_t ia_size;    /* file size in bytes */<br>    uint32_t ia_blksize; /* blocksize for filesystem I/O */<br>    uint64_t ia_blocks;  /* number of 512B blocks allocated */<br>    uint32_t ia_atime;   /* last access time */<br>    uint32_t ia_atime_nsec;<br>    uint32_t ia_mtime; /* last modification time */<br>    uint32_t ia_mtime_nsec;<br>    uint32_t ia_ctime; /* last status change time */<br>    uint32_t ia_ctime_nsec;<br>};<br></div></div></div>