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 2006 Sun Microsystems, Inc. All rights reserved. 2N/A * Use is subject to license terms. 2N/A#
pragma ident "%Z%%M% %I% %E% SMI" 2N/A * Creates and maintains a cache of slices used by SVM. 2N/A * The list of SVM slices in use. 2N/A * Pointers to libmeta functions that we dynamically resolve. 2N/A * Search the list of devices under SVM for the specified device. 2N/A /* dynamically load libmeta */ 2N/A * need to initialize the cluster library to 2N/A /* load the SVM cache */ 2N/A /* start a thread to monitor the svm config */ 2N/A * Only start the svmevent thread if 2N/A * we are not doing an install 2N/A * If the sysevent thread fails, 2N/A * log the error but continue 2N/A * on. This failing to start 2N/A * is not catastrophic in 2N/A * particular for short lived 2N/A * consumers of libdiskmgt. 2N/A "libdiskmgt: sysevent " 2N/A "thread for SVM failed " 2N/A /* If prev. record is a dup, skip it. */ 2N/A /* there are no metadb's; that is ok, no need to check the rest */ 2N/A * SVM uses "drive names" (ctd name without trailing slice) for drives 2N/A * in disksets. Since it massages these names there is no direct correspondence 2N/A * with the slice device names in /dev. So, we need to massage these names 2N/A * back to something we can match on when a slice comes in. We create an 2N/A * entry for each possible slice since we don't know what slices actually 2N/A * exist. Slice 0 & 7 are probably enough, but the user could have 2N/A * repartitioned the drive after they added it to the diskset and removed the 2N/A /* change rdsk to dsk */ 2N/A /* start p pointing to r in rdsk */ 2N/A /* change rdsk to dsk */ 2N/A /* start p pointing to r in rdsk */ 2N/A for (i = 0; i <
8; i++) {
2N/A * Free the list of SVM entries. 2N/A * Try to dynamically link the libmeta functions we need. 2N/A "metaflushsetname");
2N/A "metafreenamelist");
2N/A "metafreereplicalist");
2N/A "metasetnosetname");
2N/A "meta_invalidate_name");
2N/A * Create a list of SVM devices 2N/A /* for each possible set number, see if we really have a diskset */ 2N/A /* metad rpc program not registered - no metasets */