diff options
Diffstat (limited to 'usr/src/cmd/format/startup.c')
-rw-r--r-- | usr/src/cmd/format/startup.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/usr/src/cmd/format/startup.c b/usr/src/cmd/format/startup.c index 99aa8d9d34..fd8e035688 100644 --- a/usr/src/cmd/format/startup.c +++ b/usr/src/cmd/format/startup.c @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -1607,6 +1607,12 @@ add_device_to_disklist(char *devname, char *devpath) } } + if (ioctl(search_file, DKIOCGMEDIAINFO, &mediainfo) == -1) { + cur_blksz = DEV_BSIZE; + } else { + cur_blksz = mediainfo.dki_lbsize; + } + /* * If the type of disk is one we don't know about, * add it to the list. @@ -1708,8 +1714,11 @@ add_device_to_disklist(char *devname, char *devpath) * generic check for reserved disks here, including intel disks. */ if (dkinfo.dki_ctype == DKC_SCSI_CCS) { + char *first_sector; + + first_sector = zalloc(cur_blksz); i = scsi_rdwr(DIR_READ, search_file, (diskaddr_t)0, - 1, (char *)&search_label, F_SILENT, NULL); + 1, first_sector, F_SILENT, NULL); switch (i) { case DSK_RESERVED: access_flags |= DSK_RESERVED; @@ -1720,6 +1729,7 @@ add_device_to_disklist(char *devname, char *devpath) default: break; } + free(first_sector); } #endif /* defined(sparc) */ @@ -1751,6 +1761,11 @@ add_device_to_disklist(char *devname, char *devpath) search_disk->disk_name = alloc_string(devname); search_disk->disk_path = alloc_string(devpath); + /* + * Remember the lba size of the disk + */ + search_disk->disk_lbasize = cur_blksz; + (void) strcpy(x86_devname, devname); /* |