Source-Changes-D archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: CVS commit: src/sys/kern
On Thu, Nov 07, 2019 at 19:06:29 +0100, Martin Husemann wrote:
> OK, why is it 8 byte aligned? Checking....
>
> > revision 1.108
> > date: 2011-01-18 20:52:24 +0100; author: matt; state: Exp; lines: +2 -1;
> > Make struct disklabel 8 byte aligned. This increases its size by 4 bytes
> > on IPL32 platforms so add code in sys_ioctl (and netbsd32_ioctl) to deal
> > with the older/smaller diskabel size. This change makes disklabel the
> > same for both IPL32 and LP64 platforms.
>
> Argh! Somehow I dimly remember having been here already ...
> I think I proposed to change the loop to 8 byte increments back then, but
> noone knows what odd systems it will the stop working on (none at all is my
> personal bet).
I gather the alignment mess is caused by pointers d_un.un_b.un_d_boot0
and d_un.un_b.un_d_boot1 that are inside the d_un union and are NOT
part of the actual disklabel: "These are returned when using
getdiskbyname(3) to retrieve the values from /etc/disktab."
So that was completely self-inflicted. The loop is fine for the
on-disk structure.
Now the question is how to dig our way out of this, b/c unfortunately
it's a public interface. But the mindless memcpy should be the last
resort IMO.
-uwe
Home |
Main Index |
Thread Index |
Old Index