<div dir="ltr"><div dir="ltr"><div>Hello,</div><div><br></div><div>I already open a bug:</div><div><a href="https://bugzilla.redhat.com/show_bug.cgi?id=1678726">https://bugzilla.redhat.com/show_bug.cgi?id=1678726</a><br></div><div><br></div><div>There is also a link to a bug fix patch</div><div><br></div><div>Regards</div><div>David Spisla<br></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Am Di., 19. Feb. 2019 um 13:07 Uhr schrieb David Spisla <<a href="mailto:spisla80@gmail.com">spisla80@gmail.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div>Hi folks,</div><div><br></div><div>The 'struct md_cache' in md-cache.c uses int data types which are not in common with the data types used in the 'struct iatt' 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 'old_iatt' . 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>
</blockquote></div>