Date: Mon, 08 Mar 2010 11:58:39 +0000 From: "Poul-Henning Kamp" <phk@phk.freebsd.dk> To: gary.jennejohn@freenet.de Cc: FreeBSD Current <freebsd-current@freebsd.org>, "Jayachandran C." <c.jayachandran@gmail.com> Subject: Re: newfs broken in -CURRENT after 204654 Message-ID: <51125.1268049519@critter.freebsd.dk> In-Reply-To: Your message of "Mon, 08 Mar 2010 12:56:43 %2B0100." <20100308125643.1ac0be0f@ernst.jennejohn.org>
next in thread | previous in thread | raw e-mail | index | archive | help
In message <20100308125643.1ac0be0f@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.
--
Poul-Henning Kamp | UNIX since Zilog Zeus 3.20
phk@FreeBSD.ORG | TCP/IP since RFC 956
FreeBSD committer | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?51125.1268049519>
