fdisk: remove 8k buffer from bss - OSF labels

are not THAT common anyway
This commit is contained in:
Denis Vlasenko 2007-01-03 02:58:54 +00:00
parent 9b1381fd2f
commit d54708399d
3 changed files with 37 additions and 36 deletions

View File

@ -2715,7 +2715,7 @@ is_ide_cdrom_or_tape(const char *device)
static void static void
try(const char *device, int user_specified) trydev(const char *device, int user_specified)
{ {
int gb; int gb;
@ -2736,7 +2736,7 @@ try(const char *device, int user_specified)
return; return;
} }
#if ENABLE_FEATURE_OSF_LABEL #if ENABLE_FEATURE_OSF_LABEL
if (btrydev(device) < 0) if (bsd_trydev(device) < 0)
#endif #endif
printf(_("Disk %s doesn't contain a valid " printf(_("Disk %s doesn't contain a valid "
"partition table\n"), device); "partition table\n"), device);
@ -2780,7 +2780,7 @@ tryprocpt(void)
if (isdigit(s[-1])) if (isdigit(s[-1]))
continue; continue;
sprintf(devname, "/dev/%s", ptname); sprintf(devname, "/dev/%s", ptname);
try(devname, 0); trydev(devname, 0);
} }
#if ENABLE_FEATURE_CLEAN_UP #if ENABLE_FEATURE_CLEAN_UP
fclose(procpt); fclose(procpt);
@ -2865,7 +2865,7 @@ int fdisk_main(int argc, char **argv)
#endif #endif
listing = 1; listing = 1;
for (k = 0; k < argc; k++) for (k = 0; k < argc; k++)
try(argv[k], 1); trydev(argv[k], 1);
} else { } else {
/* we no longer have default device names */ /* we no longer have default device names */
/* but, we can use /proc/partitions instead */ /* but, we can use /proc/partitions instead */

View File

@ -272,12 +272,9 @@ static struct partition *xbsd_part;
static int xbsd_part_index; static int xbsd_part_index;
#endif #endif
#if defined(__alpha__)
/* We access this through a uint64_t * when checksumming */ /* We access this through a uint64_t * when checksumming */
static char disklabelbuffer[BSD_BBSIZE] ATTRIBUTE_ALIGNED(8); /* hopefully xmalloc gives us required alignment */
#else static char *disklabelbuffer; /*[BSD_BBSIZE]*/
static char disklabelbuffer[BSD_BBSIZE];
#endif
static struct xbsd_disklabel xbsd_dlabel; static struct xbsd_disklabel xbsd_dlabel;
@ -299,7 +296,7 @@ check_osf_label(void)
} }
static int static int
btrydev(const char * dev) bsd_trydev(const char * dev)
{ {
if (xbsd_readlabel(NULL, &xbsd_dlabel) == 0) if (xbsd_readlabel(NULL, &xbsd_dlabel) == 0)
return -1; return -1;
@ -309,7 +306,7 @@ btrydev(const char * dev)
} }
static void static void
bmenu(void) bsd_menu(void)
{ {
puts(_("Command action")); puts(_("Command action"));
puts(_("\td\tdelete a BSD partition")); puts(_("\td\tdelete a BSD partition"));
@ -431,7 +428,7 @@ bsd_select(void)
break; break;
#endif #endif
default: default:
bmenu(); bsd_menu();
break; break;
} }
} }
@ -921,6 +918,9 @@ xbsd_readlabel(struct partition *p, struct xbsd_disklabel *d)
{ {
int t, sector; int t, sector;
if (!disklabelbuffer)
disklabelbuffer = xmalloc(BSD_BBSIZE);
/* p is used only to get the starting sector */ /* p is used only to get the starting sector */
#if !defined(__alpha__) #if !defined(__alpha__)
sector = (p ? get_start_sect(p) : 0); sector = (p ? get_start_sect(p) : 0);

View File

@ -808,42 +808,43 @@ create_sgilabel(void)
} }
memset(MBRbuffer, 0, sizeof(MBRbuffer)); memset(MBRbuffer, 0, sizeof(MBRbuffer));
/* fields with '//' are already zeroed out by memset above */
sgilabel->magic = SGI_SSWAP32(SGI_LABEL_MAGIC); sgilabel->magic = SGI_SSWAP32(SGI_LABEL_MAGIC);
sgilabel->boot_part = SGI_SSWAP16(0); //sgilabel->boot_part = SGI_SSWAP16(0);
sgilabel->swap_part = SGI_SSWAP16(1); sgilabel->swap_part = SGI_SSWAP16(1);
/* sizeof(sgilabel->boot_file) = 16 > 6 */ //memset(sgilabel->boot_file, 0, 16);
memset(sgilabel->boot_file, 0, 16); strcpy((char*)sgilabel->boot_file, "/unix"); /* sizeof(sgilabel->boot_file) == 16 > 6 */
strcpy((char*)sgilabel->boot_file, "/unix");
sgilabel->devparam.skew = (0); //sgilabel->devparam.skew = (0);
sgilabel->devparam.gap1 = (0); //sgilabel->devparam.gap1 = (0);
sgilabel->devparam.gap2 = (0); //sgilabel->devparam.gap2 = (0);
sgilabel->devparam.sparecyl = (0); //sgilabel->devparam.sparecyl = (0);
sgilabel->devparam.pcylcount = SGI_SSWAP16(geometry.cylinders); sgilabel->devparam.pcylcount = SGI_SSWAP16(geometry.cylinders);
sgilabel->devparam.head_vol0 = SGI_SSWAP16(0); //sgilabel->devparam.head_vol0 = SGI_SSWAP16(0);
/* tracks/cylinder (heads) */
sgilabel->devparam.ntrks = SGI_SSWAP16(geometry.heads); sgilabel->devparam.ntrks = SGI_SSWAP16(geometry.heads);
/* tracks/cylinder (heads) */ //sgilabel->devparam.cmd_tag_queue_depth = (0);
sgilabel->devparam.cmd_tag_queue_depth = (0); //sgilabel->devparam.unused0 = (0);
sgilabel->devparam.unused0 = (0); //sgilabel->devparam.unused1 = SGI_SSWAP16(0);
sgilabel->devparam.unused1 = SGI_SSWAP16(0); /* sectors/track */
sgilabel->devparam.nsect = SGI_SSWAP16(geometry.sectors); sgilabel->devparam.nsect = SGI_SSWAP16(geometry.sectors);
/* sectors/track */
sgilabel->devparam.bytes = SGI_SSWAP16(512); sgilabel->devparam.bytes = SGI_SSWAP16(512);
sgilabel->devparam.ilfact = SGI_SSWAP16(1); sgilabel->devparam.ilfact = SGI_SSWAP16(1);
sgilabel->devparam.flags = SGI_SSWAP32(TRACK_FWD| sgilabel->devparam.flags = SGI_SSWAP32(TRACK_FWD|
IGNORE_ERRORS|RESEEK); IGNORE_ERRORS|RESEEK);
sgilabel->devparam.datarate = SGI_SSWAP32(0); //sgilabel->devparam.datarate = SGI_SSWAP32(0);
sgilabel->devparam.retries_on_error = SGI_SSWAP32(1); sgilabel->devparam.retries_on_error = SGI_SSWAP32(1);
sgilabel->devparam.ms_per_word = SGI_SSWAP32(0); //sgilabel->devparam.ms_per_word = SGI_SSWAP32(0);
sgilabel->devparam.xylogics_gap1 = SGI_SSWAP16(0); //sgilabel->devparam.xylogics_gap1 = SGI_SSWAP16(0);
sgilabel->devparam.xylogics_syncdelay = SGI_SSWAP16(0); //sgilabel->devparam.xylogics_syncdelay = SGI_SSWAP16(0);
sgilabel->devparam.xylogics_readdelay = SGI_SSWAP16(0); //sgilabel->devparam.xylogics_readdelay = SGI_SSWAP16(0);
sgilabel->devparam.xylogics_gap2 = SGI_SSWAP16(0); //sgilabel->devparam.xylogics_gap2 = SGI_SSWAP16(0);
sgilabel->devparam.xylogics_readgate = SGI_SSWAP16(0); //sgilabel->devparam.xylogics_readgate = SGI_SSWAP16(0);
sgilabel->devparam.xylogics_writecont = SGI_SSWAP16(0); //sgilabel->devparam.xylogics_writecont = SGI_SSWAP16(0);
memset( &(sgilabel->directory), 0, sizeof(struct volume_directory)*15 ); //memset( &(sgilabel->directory), 0, sizeof(struct volume_directory)*15 );
memset( &(sgilabel->partitions), 0, sizeof(struct sgi_partinfo)*16 ); //memset( &(sgilabel->partitions), 0, sizeof(struct sgi_partinfo)*16 );
current_label_type = label_sgi; current_label_type = label_sgi;
partitions = 16; partitions = 16;
sgi_volumes = 15; sgi_volumes = 15;