Re: [PATCH] dir: support platforms that require aligned reads

2017-07-16 Thread Jeff King
On Sun, Jul 16, 2017 at 05:18:27PM +0200, René Scharfe wrote: > > it looks like assumptions about struct layout are pervasive and part of > > the on-disk format. Yuck. :( > > Assuming that there is no padding probably even works for the platforms > the code currently supports (basically x86), but

Re: [PATCH] dir: support platforms that require aligned reads

2017-07-16 Thread René Scharfe
Am 16.07.2017 um 16:04 schrieb Jeff King: > On Sun, Jul 16, 2017 at 02:17:37PM +0200, René Scharfe wrote: > >> -static void stat_data_from_disk(struct stat_data *to, const struct >> stat_data *from) >> +static void stat_data_from_disk(struct stat_data *to, const unsigned char >> *data) >> { >>

Re: [PATCH] dir: support platforms that require aligned reads

2017-07-16 Thread Jeff King
On Sun, Jul 16, 2017 at 02:17:37PM +0200, René Scharfe wrote: > -static void stat_data_from_disk(struct stat_data *to, const struct stat_data > *from) > +static void stat_data_from_disk(struct stat_data *to, const unsigned char > *data) > { > - to->sd_ctime.sec = get_be32(&from->sd_ctime.s

[PATCH] dir: support platforms that require aligned reads

2017-07-16 Thread René Scharfe
The untracked cache is stored on disk by concatenating its memory structures without any padding. Consequently some of the structs are not aligned at a particular boundary when the whole extension is read back in one go. That's only OK on platforms without strict alignment requirements, or for by