summaryrefslogtreecommitdiff
path: root/util-linux/fdisk_sgi.c
diff options
context:
space:
mode:
authorDenys Vlasenko2009-09-16 03:03:13 +0200
committerDenys Vlasenko2009-09-16 03:03:13 +0200
commitddf7850f2b775c2148f76cd7e839b8a6e667de8e (patch)
tree7f70a23e698c6a1ddb04416259c65450fbc0d522 /util-linux/fdisk_sgi.c
parent8dc0e1929e3af3b1673e5a8e486808386400c020 (diff)
downloadbusybox-ddf7850f2b775c2148f76cd7e839b8a6e667de8e.zip
busybox-ddf7850f2b775c2148f76cd7e839b8a6e667de8e.tar.gz
fdisk: add a warning and truncate disks with >= 2^32 sectors
As a result, for sectors we can use uint32_t instead of long long, and on 32 bits it has drastic effects: function old new delta get_geometry 619 646 +27 set_sun_partition 148 150 +2 get_partition 134 135 +1 xbsd_write_bootstrap 382 381 -1 xbsd_readlabel 247 246 -1 bsd_select 1674 1672 -2 sun_other_endian 4 1 -3 scsi_disk 4 1 -3 floppy 4 1 -3 fdisk_main 3735 3732 -3 read_maybe_empty 43 37 -6 create_doslabel 111 104 -7 read_line 97 88 -9 add_logical 117 107 -10 write_table 599 588 -11 new_partition 1684 1670 -14 list_disk_geometry 229 215 -14 wrong_p_order 130 110 -20 xselect 3142 3114 -28 seek_sector 71 40 -31 get_boot 1576 1533 -43 fill_bounds 174 128 -46 delete_partition 603 551 -52 list_table 1401 1232 -169 set_partition 459 286 -173 verify 1840 1495 -345 add_partition 2486 1270 -1216 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 3/24 up/down: 30/-2210) Total: -2180 bytes text data bss dec hex filename 848812 460 7116 856388 d1144 busybox_old 846620 460 7108 854188 d08ac busybox_unstripped Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'util-linux/fdisk_sgi.c')
-rw-r--r--util-linux/fdisk_sgi.c46
1 files changed, 23 insertions, 23 deletions
diff --git a/util-linux/fdisk_sgi.c b/util-linux/fdisk_sgi.c
index 51cf30c..0e3cff5 100644
--- a/util-linux/fdisk_sgi.c
+++ b/util-linux/fdisk_sgi.c
@@ -36,7 +36,7 @@ struct device_parameter { /* 48 bytes */
unsigned short nsect; /* sectors/tracks in cyl 0 or vol 0 */
unsigned short bytes;
unsigned short ilfact;
- unsigned int flags; /* controller flags */
+ unsigned int flags; /* controller flags */
unsigned int datarate;
unsigned int retries_on_error;
unsigned int ms_per_word;
@@ -70,7 +70,7 @@ typedef struct {
unsigned int vol_file_start; /* number of logical block */
unsigned int vol_file_size; /* number of bytes */
} directory[15];
- struct sgi_partinfo { /* 16 * 12 bytes */
+ struct sgi_partinfo { /* 16 * 12 bytes */
unsigned int num_sectors; /* number of blocks */
unsigned int start_sector; /* must be cylinder aligned */
unsigned int id;
@@ -291,11 +291,11 @@ sgi_list_table(int xtra)
int kpi = 0; /* kernel partition ID */
if (xtra) {
- printf("\nDisk %s (SGI disk label): %d heads, %d sectors\n"
- "%d cylinders, %d physical cylinders\n"
- "%d extra sects/cyl, interleave %d:1\n"
+ printf("\nDisk %s (SGI disk label): %u heads, %u sectors\n"
+ "%u cylinders, %u physical cylinders\n"
+ "%u extra sects/cyl, interleave %u:1\n"
"%s\n"
- "Units = %s of %d * 512 bytes\n\n",
+ "Units = %s of %u * 512 bytes\n\n",
disk_device, g_heads, g_sectors, g_cylinders,
SGI_SSWAP16(sgiparam.pcylcount),
SGI_SSWAP16(sgiparam.sparecyl),
@@ -304,8 +304,8 @@ sgi_list_table(int xtra)
str_units(PLURAL), units_per_sector);
} else {
printf("\nDisk %s (SGI disk label): "
- "%d heads, %d sectors, %d cylinders\n"
- "Units = %s of %d * 512 bytes\n\n",
+ "%u heads, %u sectors, %u cylinders\n"
+ "Units = %s of %u * 512 bytes\n\n",
disk_device, g_heads, g_sectors, g_cylinders,
str_units(PLURAL), units_per_sector );
}
@@ -324,7 +324,7 @@ sgi_list_table(int xtra)
uint32_t len = sgi_get_num_sectors(i);
kpi++; /* only count nonempty partitions */
printf(
- "%2d: %s %4s %9ld %9ld %9ld %2x %s\n",
+ "%2u: %s %4s %9lu %9lu %9lu %2x %s\n",
/* fdisk part number */ i+1,
/* device */ partname(disk_device, kpi, w+3),
/* flags */ (sgi_get_swappartition() == i) ? "swap" :
@@ -345,7 +345,7 @@ sgi_list_table(int xtra)
uint32_t len = SGI_SSWAP32(sgilabel->directory[i].vol_file_size);
unsigned char *name = sgilabel->directory[i].vol_file_name;
- printf("%2d: %-10s sector%5u size%8u\n",
+ printf("%2u: %-10s sector%5u size%8u\n",
i, (char*)name, (unsigned int) start, (unsigned int) len);
}
}
@@ -507,19 +507,19 @@ verify_sgi(int verbose)
if ((sgi_get_start_sector(Index[0]) != 0) && verbose)
printf("The entire disk partition should start "
"at block 0,\n"
- "not at diskblock %d\n",
+ "not at diskblock %u\n",
sgi_get_start_sector(Index[0]));
if (SGI_DEBUG) /* I do not understand how some disks fulfil it */
if ((sgi_get_num_sectors(Index[0]) != lastblock) && verbose)
- printf("The entire disk partition is only %d diskblock large,\n"
- "but the disk is %d diskblocks long\n",
+ printf("The entire disk partition is only %u diskblock large,\n"
+ "but the disk is %u diskblocks long\n",
sgi_get_num_sectors(Index[0]), lastblock);
lastblock = sgi_get_num_sectors(Index[0]);
} else {
if (verbose)
printf("One Partition (#11) should cover the entire disk\n");
if (SGI_DEBUG > 2)
- printf("sysid=%d\tpartition=%d\n",
+ printf("sysid=%u\tpartition=%u\n",
sgi_get_sysid(Index[0]), Index[0]+1);
}
for (i = 1, start = 0; i < sortcount; i++) {
@@ -528,20 +528,20 @@ verify_sgi(int verbose)
if ((sgi_get_start_sector(Index[i]) % cylsize) != 0) {
if (SGI_DEBUG) /* I do not understand how some disks fulfil it */
if (verbose)
- printf("Partition %d does not start on cylinder boundary\n",
+ printf("Partition %u does not start on cylinder boundary\n",
Index[i]+1);
}
if (sgi_get_num_sectors(Index[i]) % cylsize != 0) {
if (SGI_DEBUG) /* I do not understand how some disks fulfil it */
if (verbose)
- printf("Partition %d does not end on cylinder boundary\n",
+ printf("Partition %u does not end on cylinder boundary\n",
Index[i]+1);
}
/* We cannot handle several "entire disk" entries. */
if (sgi_get_sysid(Index[i]) == SGI_ENTIRE_DISK) continue;
if (start > sgi_get_start_sector(Index[i])) {
if (verbose)
- printf("Partitions %d and %d overlap by %d sectors\n",
+ printf("Partitions %u and %u overlap by %u sectors\n",
Index[i-1]+1, Index[i]+1,
start - sgi_get_start_sector(Index[i]));
if (gap > 0) gap = -gap;
@@ -549,7 +549,7 @@ verify_sgi(int verbose)
}
if (start < sgi_get_start_sector(Index[i])) {
if (verbose)
- printf("Unused gap of %8u sectors - sectors %8u-%8u\n",
+ printf("Unused gap of %u sectors - sectors %u-%u\n",
sgi_get_start_sector(Index[i]) - start,
start, sgi_get_start_sector(Index[i])-1);
gap += sgi_get_start_sector(Index[i]) - start;
@@ -559,7 +559,7 @@ verify_sgi(int verbose)
+ sgi_get_num_sectors(Index[i]);
if (SGI_DEBUG > 1) {
if (verbose)
- printf("%2d:%12d\t%12d\t%12d\n", Index[i],
+ printf("%2u:%12u\t%12u\t%12u\n", Index[i],
sgi_get_start_sector(Index[i]),
sgi_get_num_sectors(Index[i]),
sgi_get_sysid(Index[i]));
@@ -567,7 +567,7 @@ verify_sgi(int verbose)
}
if (start < lastblock) {
if (verbose)
- printf("Unused gap of %8u sectors - sectors %8u-%8u\n",
+ printf("Unused gap of %u sectors - sectors %u-%u\n",
lastblock - start, start, lastblock-1);
gap += lastblock - start;
add2freelist(start, lastblock);
@@ -788,7 +788,7 @@ create_sgilabel(void)
/* otherwise print error and use truncated version */
g_cylinders = geometry.cylinders;
printf(
-"Warning: BLKGETSIZE ioctl failed on %s. Using geometry cylinder value of %d.\n"
+"Warning: BLKGETSIZE ioctl failed on %s. Using geometry cylinder value of %u.\n"
"This value may be truncated for devices > 33.8 GB.\n", disk_device, g_cylinders);
}
}
@@ -799,9 +799,9 @@ create_sgilabel(void)
old[i].sysid = get_part_table(i)->sys_ind;
old[i].start = get_start_sect(get_part_table(i));
old[i].nsect = get_nr_sects(get_part_table(i));
- printf("Trying to keep parameters of partition %d\n", i);
+ printf("Trying to keep parameters of partition %u\n", i);
if (SGI_DEBUG)
- printf("ID=%02x\tSTART=%d\tLENGTH=%d\n",
+ printf("ID=%02x\tSTART=%u\tLENGTH=%u\n",
old[i].sysid, old[i].start, old[i].nsect);
}
}