2N/A * The contents of this file are subject to the terms of the 2N/A * Common Development and Distribution License (the "License"). 2N/A * You may not use this file except in compliance with the License. 2N/A * See the License for the specific language governing permissions 2N/A * and limitations under the License. 2N/A * When distributing Covered Code, include this CDDL HEADER in each 2N/A * If applicable, add the following below this CDDL HEADER, with the 2N/A * fields enclosed by brackets "[]" replaced with your own identifying 2N/A * information: Portions Copyright [yyyy] [name of copyright owner] 2N/A * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved. 2N/A * For media, just get the slices, but for a partition, it must be a solaris 2N/A * partition and if there are active partitions, it must be the active one. 2N/A /* Just check the first drive name. */ 2N/A * Look for the slice by the slice devpath. 2N/A /* if no cluster use, check for a use of the local name */ 2N/A * A slice descriptor points to a disk, the name is the devpath and the 2N/A * secondary name is the media name. 2N/A/* convert rdsk paths to dsk paths */ 2N/A /* not rdsk, check for floppy */ 2N/A strp++;
/* move ptr to the r in rdsk or rdiskette */ 2N/A /* move the succeeding chars over by one */ 2N/A/* return 1 if the slice descriptor is still valid, 0 if not. */ 2N/A /* First verify the media name for removable media */ 2N/A * We could verify the slice is still there, but other code down the 2N/A * line already does these checks (e.g. see get_attrs). 2N/A/* convert dsk paths to rdsk paths */ 2N/A /* make sure there is enough room to add the r to dsk */ 2N/A /* not dsk, check for floppy */ 2N/A /* move the succeeding chars over by one */ 2N/A /* First make sure media is inserted and spun up. */ 2N/A /* check the slice */ 2N/A }
else {
/* data_format == FMT_EFI */ 2N/A /* the slice exists */ 2N/A }
else {
/* data_format == FMT_EFI */ 2N/A * Some extra attrs for cluster slices. 2N/A * get localname and possible mnt point for localpath 2N/A /* determine the slice number for this path */ 2N/A * We need to open the cooked slice (not the raw one) to get the 2N/A * correct devid. Also see if we need to read the localpath for the 2N/A * cluster disk, since the minor name is unavailable for the did pseudo 2N/A /* count the number of slices */ 2N/A /* allocate the array for the descriptors */ 2N/A /* get the media name from the descriptor */ 2N/A /* must be a DM_PARTITION */ 2N/A /* can't get slicenum, so no need to keep trying the drive */ 2N/A }
else {
/* data_format == FMT_EFI */ 2N/A /* check if we already determined the devpath slice number */ 2N/A /* Just check the first drive name. */ 2N/A /* can't get slicenum, so no need to keep trying the drive */ 2N/A /* can't get slice data, so no need to keep trying the drive */ 2N/A }
else {
/* data_format == FMT_EFI */ 2N/A * Just look for the name on the devpaths we have cached. Return 1 if we 2N/A * find the name and the size of that slice is non-zero. 2N/A * If we found a match on the name we now have to check that this 2N/A * slice really exists (non-0 size). 2N/A /* can't get slicenum, so no slice */ 2N/A }
else {
/* data_format == FMT_EFI */