--- /dev/null
+diff -urN util-linux-2.10l.org/fdisk/fdisk.c util-linux-2.10l/fdisk/fdisk.c
+--- util-linux-2.10l.org/fdisk/fdisk.c Thu May 11 15:40:28 2000
++++ util-linux-2.10l/fdisk/fdisk.c Thu May 11 15:42:56 2000
+@@ -696,7 +696,11 @@
+ get_geometry(int fd, struct geom *g) {
+ int sec_fac;
+ long longsectors;
++#ifdef HDIO_GETGEO_BIG
++ struct hd_big_geometry geometry;
++#else
+ struct hd_geometry geometry;
++#endif
+ int res1, res2;
+
+ get_sectorsize(fd);
+@@ -708,7 +712,11 @@
+ #ifdef HDIO_REQ
+ res2 = ioctl(fd, HDIO_REQ, &geometry);
+ #else
++#ifdef HDIO_GETGEO_BIG
++ res2 = ioctl(fd, HDIO_GETGEO_BIG, &geometry);
++#else
+ res2 = ioctl(fd, HDIO_GETGEO, &geometry);
++#endif
+ #endif
+
+ /* never use geometry.cylinders - it is truncated */
+diff -urN util-linux-2.10l.org/fdisk/sfdisk.c util-linux-2.10l/fdisk/sfdisk.c
+--- util-linux-2.10l.org/fdisk/sfdisk.c Thu May 11 15:40:28 2000
++++ util-linux-2.10l/fdisk/sfdisk.c Thu May 11 15:43:53 2000
+@@ -376,6 +376,14 @@
+ * unsigned long start;
+ * };
+ *
++ * <linux/hdreg.h> defines HDIO_GETGEO_BIG and
++ * struct hd_big_geometry {
++ * unsigned char heads;
++ * unsigned char sectors;
++ * unsigned int cylinders;
++ * unsigned long start;
++ * };
++ *
+ * For large disks g.cylinders is truncated, so we use BLKGETSIZE.
+ */
+