Re: newfs broken in -CURRENT after 204654

From: Poul-Henning Kamp <phk_at_phk.freebsd.dk>
Date: Mon, 08 Mar 2010 11:58:39 +0000
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.


-- 
Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
phk_at_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.
Received on Mon Mar 08 2010 - 10:58:41 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:01 UTC