xref: /titanic_41/usr/src/cmd/lvm/metassist/layout/layout_device_util.h (revision 7c478bd95313f5f23a4c958a745db2134aa03244)
1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License, Version 1.0 only
6  * (the "License").  You may not use this file except in compliance
7  * with the License.
8  *
9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10  * or http://www.opensolaris.org/os/licensing.
11  * See the License for the specific language governing permissions
12  * and limitations under the License.
13  *
14  * When distributing Covered Code, include this CDDL HEADER in each
15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16  * If applicable, add the following below this CDDL HEADER, with the
17  * fields enclosed by brackets "[]" replaced with your own identifying
18  * information: Portions Copyright [yyyy] [name of copyright owner]
19  *
20  * CDDL HEADER END
21  */
22 /*
23  * Copyright 2003 Sun Microsystems, Inc.  All rights reserved.
24  * Use is subject to license terms.
25  */
26 
27 #ifndef _LAYOUT_DEVICE_UTIL_H
28 #define	_LAYOUT_DEVICE_UTIL_H
29 
30 #pragma ident	"%Z%%M%	%I%	%E% SMI"
31 
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35 
36 #include <libdiskmgt.h>
37 
38 extern boolean_t	is_alt_slice_name(char *name);
39 extern boolean_t	is_did_name(char *name);
40 extern boolean_t	is_did_slice_name(char *name);
41 extern boolean_t	is_did_disk_name(char *name);
42 extern boolean_t	is_ctd_name(char *name);
43 extern boolean_t	is_ctd_slice_name(char *name);
44 extern boolean_t	is_ctd_disk_name(char *name);
45 extern boolean_t	is_ctd_target_name(char *name);
46 extern boolean_t	is_ctd_ctrl_name(char *name);
47 
48 extern int	set_display_name(dm_descriptor_t desc, char *name);
49 extern int	get_display_name(dm_descriptor_t slice, char **name);
50 
51 extern int	slice_get_by_name(char *name, dm_descriptor_t *slicep);
52 extern int	disk_get_by_name(char *name, dm_descriptor_t *diskp);
53 extern int	hba_get_by_name(char *name, dm_descriptor_t *hbap);
54 
55 extern int	extract_diskname(char *slicename, char **diskname);
56 extern int	extract_hbaname(char *slicename, char **hbaname);
57 
58 extern int	get_disk_for_named_slice(char *slicename,
59 	dm_descriptor_t *diskp);
60 
61 /*
62  * functions to manipulate devices
63  */
64 extern int	group_similar_hbas(dlist_t *hbas, dlist_t **list);
65 extern int	hba_is_multiplex(dm_descriptor_t hba, boolean_t *bool);
66 
67 extern int	hba_set_n_avail_disks(dm_descriptor_t hba, uint16_t val);
68 extern int	hba_get_n_avail_disks(dm_descriptor_t hba, uint16_t *val);
69 
70 extern int	hba_get_type(dm_descriptor_t hba, char **type);
71 extern int	hba_is_fast(dm_descriptor_t hba, boolean_t *bool);
72 extern int	hba_is_fast_20(dm_descriptor_t hba, boolean_t *bool);
73 extern int	hba_is_fast_40(dm_descriptor_t hba, boolean_t *bool);
74 extern int	hba_is_fast_80(dm_descriptor_t hba, boolean_t *bool);
75 extern int	hba_supports_protocol(
76 	dm_descriptor_t hba, char *attr, boolean_t *bool);
77 extern int	hba_supports_wide(dm_descriptor_t hba, boolean_t *bool);
78 
79 extern int	disk_get_available_slice_index(
80 	dm_descriptor_t diskp, uint32_t *index);
81 
82 extern int	disk_get_hbas(dm_descriptor_t disk, dlist_t **list);
83 extern int	disk_get_paths(dm_descriptor_t disk, dlist_t **list);
84 extern int	disk_get_slices(dm_descriptor_t disk, dlist_t **list);
85 extern int	disk_get_aliases(dm_descriptor_t disk, dlist_t **list);
86 extern int	disk_get_blocksize(dm_descriptor_t disk, uint64_t *val);
87 extern int	disk_get_ncylinders(dm_descriptor_t disk, uint64_t *val);
88 extern int	disk_get_size_in_blocks(dm_descriptor_t disk, uint64_t *val);
89 extern int	disk_get_start_block(dm_descriptor_t disk, uint64_t *val);
90 extern int	disk_get_nheads(dm_descriptor_t disk, uint64_t *val);
91 extern int	disk_get_nsectors(dm_descriptor_t disk, uint64_t *val);
92 extern int	disk_get_is_efi(dm_descriptor_t disk, boolean_t *val);
93 extern int	disk_get_has_fdisk(dm_descriptor_t disk, boolean_t *val);
94 extern int	disk_get_has_solaris_partition(dm_descriptor_t disk,
95 	boolean_t *val);
96 extern int	disk_get_is_online(dm_descriptor_t disk, boolean_t *val);
97 extern int	disk_get_drive_type(dm_descriptor_t disk, uint32_t *val);
98 extern int	disk_get_media_type(dm_descriptor_t disk, uint32_t *type);
99 extern int	disk_reserve_index(dm_descriptor_t disk, uint16_t index);
100 extern int	disk_release_index(dm_descriptor_t disk, uint16_t index);
101 
102 extern int	slice_get_hbas(dm_descriptor_t slice, dlist_t **list);
103 extern int	slice_get_disk(dm_descriptor_t slice, dm_descriptor_t *diskp);
104 extern int	slice_get_size(dm_descriptor_t slice, uint64_t *val);
105 extern int	slice_get_index(dm_descriptor_t slice, uint32_t *val);
106 extern int	slice_get_size_in_blocks(dm_descriptor_t slice, uint64_t *val);
107 extern int	slice_get_start_block(dm_descriptor_t slice, uint64_t *val);
108 extern int	slice_get_start(dm_descriptor_t slice, uint64_t *val);
109 
110 extern int	slice_set_size(dm_descriptor_t slice, uint64_t size);
111 extern int	slice_set_size_in_blocks(dm_descriptor_t slice, uint64_t size);
112 extern int	slice_set_start_block(dm_descriptor_t slice, uint64_t start);
113 
114 /*
115  * virtual slice utilities.
116  */
117 extern int	create_virtual_slices(dlist_t *unused);
118 extern int	add_virtual_slice(char *name, uint32_t index,
119 	uint64_t startblk, uint64_t sizeblks, dm_descriptor_t disk);
120 
121 extern void	release_virtual_slices();
122 extern int	get_virtual_slices(dlist_t **list);
123 extern boolean_t is_virtual_slice(dm_descriptor_t slice);
124 
125 /*
126  * shared error output functions for dm_descriptor_t objects
127  */
128 extern void print_get_assoc_desc_error(
129 	dm_descriptor_t desc, char *which, int error);
130 extern void print_get_desc_attr_error(
131 	dm_descriptor_t desc, char *devtype, char *attr, int error);
132 
133 extern void print_set_desc_attr_error(
134 	dm_descriptor_t desc, char *devtype, char *attr, int error);
135 
136 #ifdef __cplusplus
137 }
138 #endif
139 
140 #endif /* _LAYOUT_DEVICE_UTIL_H */
141