<div dir="ltr"><div>Hi,</div><div><br></div><div>This week I've finished mpersifying the decoder of struct xfs_dqstats, see [0].</div><div>I also added tests quotactl-xfs-success and quotactl-xfs-success-v. This time</div><div>they could all fetch the struct correctly in multiple personalities and the tests</div><div>passed.</div><div>And I've discussed a little bit about mpers and attribute packed with eSyr on IRC.</div><div>Besides mpersifying the decoder, I tried just adding ATTRIBUTE_PACKED to </div><div>struct fs_qfilestat (see [1]) and then I re-run the tests and they all passed. </div><div>I tried to figure out how or why the tests passed considering it will break </div><div>alignment on 64 bit.</div><div><br></div><div>Before all these changes, quotactl-xfs-success.test failed on tests-m32 because </div><div>the unmpersified decoder tries to fetch struct xfs_dqstats with alignment on 64 bit </div><div>(because the my env is 64 bit) which is 80 bytes. In this specific test </div><div>TAIL_ALLOC_OBJECT_CONST_PTR is used so on 32 bit struct fs_quota_stat (it's a little </div><div>confused since it's called xfs_dqstats in quota.c) just gets 68 bytes at the end of  </div><div>a mapped memory region, which means fetching 80 bytes will fail with </div><div>"strace: umoven: short read (68 < 80)".</div><div><br></div><div>After adding ATTRIBUTE_PACKED to struct fs_qfilestat, it seems to be a coincidence </div><div>that both on 32 and 64 bit struct xfs_dqstats are 72 bytes so fetching it will </div><div>succeed (I'm not so sure whether it's a coincidence or it's designed in this way).</div><div><br></div><div>Anyway, I realize it's not the right way or at least not a good way to fix this </div><div>decoder.</div><div><br></div><div>I will continue to revise the code I've wrriten and perhaps I should pay part of  </div><div>my attention to other tests, too. I will learn things about net and socket next.</div><div><br></div><div>[0]<a href="https://github.com/haoyouab/strace/commit/5d910b497b9ac079a6d5db48140e0db899373973">https://github.com/haoyouab/strace/commit/5d910b497b9ac079a6d5db48140e0db899373973</a></div><div>[1]<a href="https://github.com/haoyouab/strace/commit/d3035a77a78c53b058ce3da3469eec9ed74dff45">https://github.com/haoyouab/strace/commit/d3035a77a78c53b058ce3da3469eec9ed74dff45</a></div><div><br></div><div>Zhibin Li</div><div><br></div></div>