newfs broken in -CURRENT after 204654
Gary Jennejohn
gary.jennejohn at freenet.de
Mon Mar 8 12:24:13 UTC 2010
On Mon, 08 Mar 2010 11:58:39 +0000
"Poul-Henning Kamp" <phk at phk.freebsd.dk> wrote:
> In message <20100308125643.1ac0be0f at ernst.jennejohn.org>, Gary Jennejohn writes
> :
> >On Mon, 8 Mar 2010 14:17:17 +0530
>
> >> I'm trying this one more time, since the issue is still unresolved.
> >>
> >> newfs(8) broke for big-endian systems since revision 204654. This change
> >> made sectorsize variable int64_t, and now it cannot be passed to the ioctl
> >> DIOCGSECTORSIZE.
>
> This patch is correct, DIOCGSECTORSIZE takes an unsigned argument, see
> <sys/disk.h>:
>
> #define DIOCGSECTORSIZE _IOR('d', 128, u_int)
> /*-
> * Get the sectorsize of the device in bytes. The sectorsize is the
> * smallest unit of data which can be transfered from this device.
> * Usually this is a power of two but it may not be. (ie: CDROM audio)
> */
>
>
> >I can't say whether this is correct, but the logic could definitely be
> >simplified like this, since sectorsize is known to be 0 already:
> > if (sectorsize == 0)
> > if (ioctl(disk.d_fd, DIOCGSECTORSIZE, &tsecsize) >= 0)
> > sectorsize = tsecsize;
>
> I'm not sure that is a valid assumption.
>
I disagree, but there's no reason to get into a bike-shed painting contest :) The
original patch is OK the way it is.
---
Gary Jennejohn
More information about the freebsd-current
mailing list