On Thu, Mar 04, 2010 at 06:34:03PM +0530, C. Jayachandran wrote: > I'm testing this on the mips platform, but I think there is an issue > with change that made sectorsize int64_t, because the ioctl > DIOCGSECTORSIZE used to read sector size seems to take u_int. This > quick change fixes it for me (sample patch - may be whitespace > damaged).
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. The patch below (updated from the previous one) fixes it, please review and apply if correct. Thanks, JC. Index: sbin/newfs/newfs.c =================================================================== --- sbin/newfs/newfs.c (revision 204701) +++ sbin/newfs/newfs.c (working copy) @@ -132,6 +132,7 @@ char *cp, *special; intmax_t reserved; int ch, i, rval; + u_int tsecsize; off_t mediasize; char part_name; /* partition name, default to full disk */ @@ -327,9 +328,12 @@ mediasize = st.st_size; /* set fssize from the partition */ } else { - if (sectorsize == 0) - if (ioctl(disk.d_fd, DIOCGSECTORSIZE, §orsize) == -1) + if (sectorsize == 0) { + if (ioctl(disk.d_fd, DIOCGSECTORSIZE, &tsecsize) == -1) sectorsize = 0; /* back out on error for safety */ + else + sectorsize = tsecsize; + } if (sectorsize && ioctl(disk.d_fd, DIOCGMEDIASIZE, &mediasize) != -1) getfssize(&fssize, special, mediasize / sectorsize, reserved); } _______________________________________________ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"