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, &sectorsize) == -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"

Reply via email to