xref: /onnv-gate/usr/src/cmd/lvm/metassist/layout/layout_messages.c (revision 0:68f95e015346)
1*0Sstevel@tonic-gate /*
2*0Sstevel@tonic-gate  * CDDL HEADER START
3*0Sstevel@tonic-gate  *
4*0Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
5*0Sstevel@tonic-gate  * Common Development and Distribution License, Version 1.0 only
6*0Sstevel@tonic-gate  * (the "License").  You may not use this file except in compliance
7*0Sstevel@tonic-gate  * with the License.
8*0Sstevel@tonic-gate  *
9*0Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10*0Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
11*0Sstevel@tonic-gate  * See the License for the specific language governing permissions
12*0Sstevel@tonic-gate  * and limitations under the License.
13*0Sstevel@tonic-gate  *
14*0Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
15*0Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16*0Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
17*0Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
18*0Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
19*0Sstevel@tonic-gate  *
20*0Sstevel@tonic-gate  * CDDL HEADER END
21*0Sstevel@tonic-gate  */
22*0Sstevel@tonic-gate /*
23*0Sstevel@tonic-gate  * Copyright 2003 Sun Microsystems, Inc.  All rights reserved.
24*0Sstevel@tonic-gate  * Use is subject to license terms.
25*0Sstevel@tonic-gate  */
26*0Sstevel@tonic-gate 
27*0Sstevel@tonic-gate #pragma ident	"%Z%%M%	%I%	%E% SMI"
28*0Sstevel@tonic-gate 
29*0Sstevel@tonic-gate #include <libintl.h>
30*0Sstevel@tonic-gate #include <stdlib.h>
31*0Sstevel@tonic-gate 
32*0Sstevel@tonic-gate #include "volume_error.h"
33*0Sstevel@tonic-gate #include "volume_output.h"
34*0Sstevel@tonic-gate #include "volume_string.h"
35*0Sstevel@tonic-gate 
36*0Sstevel@tonic-gate #include "layout_messages.h"
37*0Sstevel@tonic-gate 
38*0Sstevel@tonic-gate /*
39*0Sstevel@tonic-gate  * FUNCTION:	print_layout_volume_msg(char *type, uint64_t nbytes)
40*0Sstevel@tonic-gate  *
41*0Sstevel@tonic-gate  * PURPOSE:	Prints a generic message indicating the start of the
42*0Sstevel@tonic-gate  *		layout process for a volume of the indicated type and
43*0Sstevel@tonic-gate  *		capacity.
44*0Sstevel@tonic-gate  */
45*0Sstevel@tonic-gate void
print_layout_volume_msg(char * type,uint64_t nbytes)46*0Sstevel@tonic-gate print_layout_volume_msg(
47*0Sstevel@tonic-gate 	char *type,
48*0Sstevel@tonic-gate 	uint64_t nbytes)
49*0Sstevel@tonic-gate {
50*0Sstevel@tonic-gate 	char *spstr = NULL;
51*0Sstevel@tonic-gate 
52*0Sstevel@tonic-gate 	(void) bytes_to_sizestr(nbytes, &spstr, universal_units, B_FALSE);
53*0Sstevel@tonic-gate 
54*0Sstevel@tonic-gate 	oprintf(OUTPUT_VERBOSE,
55*0Sstevel@tonic-gate 		gettext("  ->Layout a %s with capacity %s\n"),
56*0Sstevel@tonic-gate 		type, spstr);
57*0Sstevel@tonic-gate 
58*0Sstevel@tonic-gate 	free(spstr);
59*0Sstevel@tonic-gate }
60*0Sstevel@tonic-gate 
61*0Sstevel@tonic-gate /*
62*0Sstevel@tonic-gate  * FUNCTION:	print_layout_explicit_msg(char *type)
63*0Sstevel@tonic-gate  *
64*0Sstevel@tonic-gate  * PURPOSE:	Prints a generic message indicating the start of the
65*0Sstevel@tonic-gate  *		layout population process using explicit components
66*0Sstevel@tonic-gate  *		for a volume of the indicated type.
67*0Sstevel@tonic-gate  */
68*0Sstevel@tonic-gate void
print_layout_explicit_msg(char * type)69*0Sstevel@tonic-gate print_layout_explicit_msg(
70*0Sstevel@tonic-gate 	char *type)
71*0Sstevel@tonic-gate {
72*0Sstevel@tonic-gate 	oprintf(OUTPUT_TERSE,
73*0Sstevel@tonic-gate 		gettext("  ->Layout a %s with explicitly specified "
74*0Sstevel@tonic-gate 			"components\n"),
75*0Sstevel@tonic-gate 		type);
76*0Sstevel@tonic-gate }
77*0Sstevel@tonic-gate 
78*0Sstevel@tonic-gate /*
79*0Sstevel@tonic-gate  * FUNCTION:	print_layout_explicit_added_msg(char *comp)
80*0Sstevel@tonic-gate  *
81*0Sstevel@tonic-gate  * PURPOSE:	Prints a generic message indicating the named component
82*0Sstevel@tonic-gate  *		was added to a volume.
83*0Sstevel@tonic-gate  */
84*0Sstevel@tonic-gate void
print_layout_explicit_added_msg(char * comp)85*0Sstevel@tonic-gate print_layout_explicit_added_msg(
86*0Sstevel@tonic-gate 	char *comp)
87*0Sstevel@tonic-gate {
88*0Sstevel@tonic-gate 	oprintf(OUTPUT_TERSE, gettext("  ---->added '%s'\n"), comp);
89*0Sstevel@tonic-gate }
90*0Sstevel@tonic-gate 
91*0Sstevel@tonic-gate /*
92*0Sstevel@tonic-gate  * FUNCTION:	print_success_msg()
93*0Sstevel@tonic-gate  *
94*0Sstevel@tonic-gate  * PURPOSE:	Prints a generic layout success message.
95*0Sstevel@tonic-gate  */
96*0Sstevel@tonic-gate void
print_layout_success_msg()97*0Sstevel@tonic-gate print_layout_success_msg()
98*0Sstevel@tonic-gate {
99*0Sstevel@tonic-gate 	oprintf(OUTPUT_TERSE, gettext("  <-Success!\n"));
100*0Sstevel@tonic-gate }
101*0Sstevel@tonic-gate 
102*0Sstevel@tonic-gate /*
103*0Sstevel@tonic-gate  * FUNCTION:	print_insufficient_resources_msg(char *type)
104*0Sstevel@tonic-gate  *
105*0Sstevel@tonic-gate  * PURPOSE:	Prints a message indicating that there are insufficient
106*0Sstevel@tonic-gate  *		resources.
107*0Sstevel@tonic-gate  *
108*0Sstevel@tonic-gate  *		Also sets the metassist error string indicating why
109*0Sstevel@tonic-gate  *		the metassist command failed.  The volume type is included
110*0Sstevel@tonic-gate  *		for context in this message.
111*0Sstevel@tonic-gate  */
112*0Sstevel@tonic-gate void
print_insufficient_resources_msg(char * type)113*0Sstevel@tonic-gate print_insufficient_resources_msg(
114*0Sstevel@tonic-gate 	char *type)
115*0Sstevel@tonic-gate {
116*0Sstevel@tonic-gate 	oprintf(OUTPUT_TERSE,
117*0Sstevel@tonic-gate 		gettext("  <-Failed: insufficient resources available\n"));
118*0Sstevel@tonic-gate 
119*0Sstevel@tonic-gate 	volume_set_error(
120*0Sstevel@tonic-gate 		gettext("insufficient resources available to complete "
121*0Sstevel@tonic-gate 			"requested %s\n"),
122*0Sstevel@tonic-gate 		type);
123*0Sstevel@tonic-gate }
124*0Sstevel@tonic-gate 
125*0Sstevel@tonic-gate /*
126*0Sstevel@tonic-gate  * FUNCTION:	print_insufficient_hbas_msg(int n)
127*0Sstevel@tonic-gate  *
128*0Sstevel@tonic-gate  * PURPOSE:	Prints a status message indicating that there are insufficient
129*0Sstevel@tonic-gate  *		HBAs and that only 'n' are available.
130*0Sstevel@tonic-gate  *
131*0Sstevel@tonic-gate  *		Used to indicate strategy selection during layouts.
132*0Sstevel@tonic-gate  */
133*0Sstevel@tonic-gate void
print_insufficient_hbas_msg(int n)134*0Sstevel@tonic-gate print_insufficient_hbas_msg(
135*0Sstevel@tonic-gate 	int n)
136*0Sstevel@tonic-gate {
137*0Sstevel@tonic-gate 	if (n == 0) {
138*0Sstevel@tonic-gate 	    oprintf(OUTPUT_VERBOSE,
139*0Sstevel@tonic-gate 		gettext("  <--Failed: no HBA has sufficient disks\n"));
140*0Sstevel@tonic-gate 	} else if (n == 1) {
141*0Sstevel@tonic-gate 	    oprintf(OUTPUT_VERBOSE,
142*0Sstevel@tonic-gate 		gettext("  <--Failed: only 1 HBA has sufficient disks\n"));
143*0Sstevel@tonic-gate 	} else {
144*0Sstevel@tonic-gate 	    oprintf(OUTPUT_VERBOSE,
145*0Sstevel@tonic-gate 		gettext("  <--Failed: only %d HBAs have sufficient disks\n"),
146*0Sstevel@tonic-gate 		n);
147*0Sstevel@tonic-gate 	}
148*0Sstevel@tonic-gate }
149*0Sstevel@tonic-gate 
150*0Sstevel@tonic-gate /*
151*0Sstevel@tonic-gate  * FUNCTION:	print_insufficient_disks_msg(int n)
152*0Sstevel@tonic-gate  *
153*0Sstevel@tonic-gate  * PURPOSE:	Prints a status message indicating that there are insufficient
154*0Sstevel@tonic-gate  *		disks and that only 'n' are available.
155*0Sstevel@tonic-gate  *
156*0Sstevel@tonic-gate  *		Used to indicate strategy selection during layouts.
157*0Sstevel@tonic-gate  */
158*0Sstevel@tonic-gate void
print_insufficient_disks_msg(int n)159*0Sstevel@tonic-gate print_insufficient_disks_msg(
160*0Sstevel@tonic-gate 	int n)
161*0Sstevel@tonic-gate {
162*0Sstevel@tonic-gate 	if (n == 0) {
163*0Sstevel@tonic-gate 	    oprintf(OUTPUT_VERBOSE,
164*0Sstevel@tonic-gate 		    gettext("  <--Failed: no disks available\n"),
165*0Sstevel@tonic-gate 		    n);
166*0Sstevel@tonic-gate 	} else if (n == 1) {
167*0Sstevel@tonic-gate 	    oprintf(OUTPUT_VERBOSE,
168*0Sstevel@tonic-gate 		gettext("  <--Failed: only 1 disk available\n"),
169*0Sstevel@tonic-gate 		    n);
170*0Sstevel@tonic-gate 	} else {
171*0Sstevel@tonic-gate 	    oprintf(OUTPUT_VERBOSE,
172*0Sstevel@tonic-gate 		    gettext("  <--Failed: only %d disks available\n"),
173*0Sstevel@tonic-gate 		    n);
174*0Sstevel@tonic-gate 	}
175*0Sstevel@tonic-gate }
176*0Sstevel@tonic-gate 
177*0Sstevel@tonic-gate /*
178*0Sstevel@tonic-gate  * FUNCTION:	print_no_hbas_msg()
179*0Sstevel@tonic-gate  *
180*0Sstevel@tonic-gate  * PURPOSE:	Prints a layout failure due to no usable HBAs message.
181*0Sstevel@tonic-gate  */
182*0Sstevel@tonic-gate void
print_no_hbas_msg()183*0Sstevel@tonic-gate print_no_hbas_msg()
184*0Sstevel@tonic-gate {
185*0Sstevel@tonic-gate 	oprintf(OUTPUT_TERSE,
186*0Sstevel@tonic-gate 		gettext("  There are no usable HBAs.\n"));
187*0Sstevel@tonic-gate }
188*0Sstevel@tonic-gate 
189*0Sstevel@tonic-gate /*
190*0Sstevel@tonic-gate  * FUNCTION:	print_debug_failure_msg(char *type, char *err)
191*0Sstevel@tonic-gate  *
192*0Sstevel@tonic-gate  * PURPOSE:	Prints a generic message for unexpected failures
193*0Sstevel@tonic-gate  *		during layout.
194*0Sstevel@tonic-gate  */
195*0Sstevel@tonic-gate void
print_debug_failure_msg(char * type,char * err)196*0Sstevel@tonic-gate print_debug_failure_msg(
197*0Sstevel@tonic-gate 	char *type,
198*0Sstevel@tonic-gate 	char *err)
199*0Sstevel@tonic-gate {
200*0Sstevel@tonic-gate 	oprintf(OUTPUT_DEBUG,
201*0Sstevel@tonic-gate 		gettext("    layout of %s failed: %s\n"),
202*0Sstevel@tonic-gate 		type, err);
203*0Sstevel@tonic-gate }
204*0Sstevel@tonic-gate 
205*0Sstevel@tonic-gate /*
206*0Sstevel@tonic-gate  * FUNCTION:	print_insufficient_components_msg(int ncomp)
207*0Sstevel@tonic-gate  *
208*0Sstevel@tonic-gate  * INPUT:	ncomp	- number of available components
209*0Sstevel@tonic-gate  *
210*0Sstevel@tonic-gate  * PURPOSE:	Helper to print out a message indicating that there
211*0Sstevel@tonic-gate  *		are insufficient components for a volume, only ncomps
212*0Sstevel@tonic-gate  *		are actually available.
213*0Sstevel@tonic-gate  */
214*0Sstevel@tonic-gate void
print_insufficient_components_msg(int ncomp)215*0Sstevel@tonic-gate print_insufficient_components_msg(
216*0Sstevel@tonic-gate 	int	ncomp)
217*0Sstevel@tonic-gate {
218*0Sstevel@tonic-gate 	oprintf(OUTPUT_VERBOSE,
219*0Sstevel@tonic-gate 		gettext("  <---Failed: only found %d components\n"), ncomp);
220*0Sstevel@tonic-gate }
221*0Sstevel@tonic-gate 
222*0Sstevel@tonic-gate /*
223*0Sstevel@tonic-gate  * FUNCTION:	print_hba_insufficient_space_msg(char *name, uint64_t nbytes)
224*0Sstevel@tonic-gate  *
225*0Sstevel@tonic-gate  * INPUT:	name	- a char * HBA name
226*0Sstevel@tonic-gate  *
227*0Sstevel@tonic-gate  * RETURNS:	int	- 0 on success
228*0Sstevel@tonic-gate  *			 !0 otherwise.
229*0Sstevel@tonic-gate  *
230*0Sstevel@tonic-gate  * PURPOSE:	Helper to print out a message indicating the the HBA has
231*0Sstevel@tonic-gate  *		insufficient space for use by the mirror layout strategy.
232*0Sstevel@tonic-gate  */
233*0Sstevel@tonic-gate void
print_hba_insufficient_space_msg(char * name,uint64_t nbytes)234*0Sstevel@tonic-gate print_hba_insufficient_space_msg(
235*0Sstevel@tonic-gate 	char		*name,
236*0Sstevel@tonic-gate 	uint64_t	nbytes)
237*0Sstevel@tonic-gate {
238*0Sstevel@tonic-gate 	char *spstr = NULL;
239*0Sstevel@tonic-gate 
240*0Sstevel@tonic-gate 	(void) bytes_to_sizestr(nbytes, &spstr, universal_units, B_FALSE);
241*0Sstevel@tonic-gate 
242*0Sstevel@tonic-gate 	oprintf(OUTPUT_VERBOSE,
243*0Sstevel@tonic-gate 		gettext("  <--Failed: '%s' only has %s available\n"),
244*0Sstevel@tonic-gate 		name, spstr);
245*0Sstevel@tonic-gate 
246*0Sstevel@tonic-gate 	free(spstr);
247*0Sstevel@tonic-gate }
248*0Sstevel@tonic-gate 
249*0Sstevel@tonic-gate /*
250*0Sstevel@tonic-gate  * FUNCTION:	print_insufficient_capacity_msg(uint64_t nbytes)
251*0Sstevel@tonic-gate  *
252*0Sstevel@tonic-gate  * INPUT:	nbytes	- available capacity in bytes
253*0Sstevel@tonic-gate  *
254*0Sstevel@tonic-gate  * PURPOSE:	Helper to print out a message indicating that there
255*0Sstevel@tonic-gate  *		is insufficient space for a volume, only nbytes are
256*0Sstevel@tonic-gate  *		actually available.
257*0Sstevel@tonic-gate  */
258*0Sstevel@tonic-gate void
print_insufficient_capacity_msg(uint64_t nbytes)259*0Sstevel@tonic-gate print_insufficient_capacity_msg(
260*0Sstevel@tonic-gate 	uint64_t nbytes)
261*0Sstevel@tonic-gate {
262*0Sstevel@tonic-gate 	char *spstr = NULL;
263*0Sstevel@tonic-gate 
264*0Sstevel@tonic-gate 	(void) bytes_to_sizestr(nbytes, &spstr, universal_units, B_FALSE);
265*0Sstevel@tonic-gate 
266*0Sstevel@tonic-gate 	oprintf(OUTPUT_VERBOSE,
267*0Sstevel@tonic-gate 		gettext("  <---Failed: only found %s capacity\n"), spstr);
268*0Sstevel@tonic-gate 
269*0Sstevel@tonic-gate 	free(spstr);
270*0Sstevel@tonic-gate }
271*0Sstevel@tonic-gate 
272*0Sstevel@tonic-gate /*
273*0Sstevel@tonic-gate  * FUNCTION:	print_layout_submirrors_msg(char *type, uint64_t nbytes,
274*0Sstevel@tonic-gate  *		int nsubs)
275*0Sstevel@tonic-gate  *
276*0Sstevel@tonic-gate  * PURPOSE:	Prints a generic status message indicating that layout of
277*0Sstevel@tonic-gate  *		nsub submirrors of the indicated type and size has begun.
278*0Sstevel@tonic-gate  */
279*0Sstevel@tonic-gate void
print_layout_submirrors_msg(char * type,uint64_t nbytes,int nsubs)280*0Sstevel@tonic-gate print_layout_submirrors_msg(
281*0Sstevel@tonic-gate 	char	*type,
282*0Sstevel@tonic-gate 	uint64_t nbytes,
283*0Sstevel@tonic-gate 	int	nsubs)
284*0Sstevel@tonic-gate {
285*0Sstevel@tonic-gate 	char *spstr = NULL;
286*0Sstevel@tonic-gate 
287*0Sstevel@tonic-gate 	(void) bytes_to_sizestr(nbytes, &spstr, universal_units, B_FALSE);
288*0Sstevel@tonic-gate 
289*0Sstevel@tonic-gate 	oprintf(OUTPUT_TERSE,
290*0Sstevel@tonic-gate 		gettext("  -->Layout %d %s submirrors with capacity %s\n"),
291*0Sstevel@tonic-gate 		nsubs, type, spstr);
292*0Sstevel@tonic-gate 
293*0Sstevel@tonic-gate 	free(spstr);
294*0Sstevel@tonic-gate }
295*0Sstevel@tonic-gate 
296*0Sstevel@tonic-gate /*
297*0Sstevel@tonic-gate  * FUNCTION:	print_layout_submirrors_failed_msg(char *type, int count,
298*0Sstevel@tonic-gate  *			int nsubs)
299*0Sstevel@tonic-gate  *
300*0Sstevel@tonic-gate  * PURPOSE:	Prints a generic status message indicating that only count
301*0Sstevel@tonic-gate  *		submirrors (out of nsubs) of the indicated type could be
302*0Sstevel@tonic-gate  *		composed.
303*0Sstevel@tonic-gate  */
304*0Sstevel@tonic-gate void
print_layout_submirrors_failed_msg(char * type,int count,int nsubs)305*0Sstevel@tonic-gate print_layout_submirrors_failed_msg(
306*0Sstevel@tonic-gate 	char	*type,
307*0Sstevel@tonic-gate 	int	count,
308*0Sstevel@tonic-gate 	int	nsubs)
309*0Sstevel@tonic-gate {
310*0Sstevel@tonic-gate 	if (count == 0) {
311*0Sstevel@tonic-gate 	    oprintf(OUTPUT_VERBOSE,
312*0Sstevel@tonic-gate 		    gettext("  <---Failed, no %s submirrors could "
313*0Sstevel@tonic-gate 			    "be composed.\n"),
314*0Sstevel@tonic-gate 		    type);
315*0Sstevel@tonic-gate 	} else {
316*0Sstevel@tonic-gate 	    oprintf(OUTPUT_VERBOSE,
317*0Sstevel@tonic-gate 		    gettext("  <---Failed, only %d of %d %s submirror(s) "
318*0Sstevel@tonic-gate 			    "could be composed.\n"),
319*0Sstevel@tonic-gate 		    count, nsubs, type);
320*0Sstevel@tonic-gate 	}
321*0Sstevel@tonic-gate }
322*0Sstevel@tonic-gate 
323*0Sstevel@tonic-gate /*
324*0Sstevel@tonic-gate  * FUNCTION:	print_populate_volume_msg(char *type, uint64_t nbytes)
325*0Sstevel@tonic-gate  *
326*0Sstevel@tonic-gate  * PURPOSE:	Prints a generic message indicating a population process
327*0Sstevel@tonic-gate  *		for a volume of the indicated type and size is beginning.
328*0Sstevel@tonic-gate  */
329*0Sstevel@tonic-gate void
print_populate_volume_msg(char * type,uint64_t nbytes)330*0Sstevel@tonic-gate print_populate_volume_msg(
331*0Sstevel@tonic-gate 	char *type,
332*0Sstevel@tonic-gate 	uint64_t nbytes)
333*0Sstevel@tonic-gate {
334*0Sstevel@tonic-gate 	char *spstr = NULL;
335*0Sstevel@tonic-gate 
336*0Sstevel@tonic-gate 	(void) bytes_to_sizestr(nbytes, &spstr, universal_units, B_FALSE);
337*0Sstevel@tonic-gate 
338*0Sstevel@tonic-gate 	oprintf(OUTPUT_TERSE,
339*0Sstevel@tonic-gate 		gettext("  --->Populate a %s of capacity %s\n"),
340*0Sstevel@tonic-gate 		type, spstr);
341*0Sstevel@tonic-gate 
342*0Sstevel@tonic-gate 	free(spstr);
343*0Sstevel@tonic-gate }
344*0Sstevel@tonic-gate 
345*0Sstevel@tonic-gate /*
346*0Sstevel@tonic-gate  * FUNCTION:	print_populate_volume_ncomps_msg(char *type, uint64_t nbytes,
347*0Sstevel@tonic-gate  *			int ncomps)
348*0Sstevel@tonic-gate  *
349*0Sstevel@tonic-gate  * PURPOSE:	Prints a generic message indicating a population process
350*0Sstevel@tonic-gate  *		for a volume of the indicated type, size and number of
351*0Sstevel@tonic-gate  *		components is beginning.
352*0Sstevel@tonic-gate  */
353*0Sstevel@tonic-gate void
print_populate_volume_ncomps_msg(char * type,uint64_t nbytes,int ncomps)354*0Sstevel@tonic-gate print_populate_volume_ncomps_msg(
355*0Sstevel@tonic-gate 	char *type,
356*0Sstevel@tonic-gate 	uint64_t nbytes,
357*0Sstevel@tonic-gate 	int ncomps)
358*0Sstevel@tonic-gate {
359*0Sstevel@tonic-gate 	char *spstr = NULL;
360*0Sstevel@tonic-gate 
361*0Sstevel@tonic-gate 	(void) bytes_to_sizestr(nbytes, &spstr, universal_units, B_FALSE);
362*0Sstevel@tonic-gate 
363*0Sstevel@tonic-gate 	oprintf(OUTPUT_TERSE,
364*0Sstevel@tonic-gate 		gettext("  --->Populate a %s of capacity %s (%d components)\n"),
365*0Sstevel@tonic-gate 		type, spstr, ncomps);
366*0Sstevel@tonic-gate 
367*0Sstevel@tonic-gate 	free(spstr);
368*0Sstevel@tonic-gate }
369*0Sstevel@tonic-gate 
370*0Sstevel@tonic-gate /*
371*0Sstevel@tonic-gate  * FUNCTION:	print_populate_success_msg()
372*0Sstevel@tonic-gate  *
373*0Sstevel@tonic-gate  * PURPOSE:	Prints a generic message indicating a population process
374*0Sstevel@tonic-gate  *		completed successfully.
375*0Sstevel@tonic-gate  */
376*0Sstevel@tonic-gate void
print_populate_success_msg()377*0Sstevel@tonic-gate print_populate_success_msg()
378*0Sstevel@tonic-gate {
379*0Sstevel@tonic-gate 	oprintf(OUTPUT_TERSE,
380*0Sstevel@tonic-gate 		gettext("  <---Success!\n"));
381*0Sstevel@tonic-gate }
382*0Sstevel@tonic-gate 
383*0Sstevel@tonic-gate /*
384*0Sstevel@tonic-gate  * FUNCTION:	print_populate_choose_slices_msg()
385*0Sstevel@tonic-gate  *
386*0Sstevel@tonic-gate  * PURPOSE:	Prints a generic message indicating a population process
387*0Sstevel@tonic-gate  *		is beginning to choose slices.
388*0Sstevel@tonic-gate  */
389*0Sstevel@tonic-gate void
print_populate_choose_slices_msg()390*0Sstevel@tonic-gate print_populate_choose_slices_msg()
391*0Sstevel@tonic-gate {
392*0Sstevel@tonic-gate 	oprintf(OUTPUT_VERBOSE,
393*0Sstevel@tonic-gate 		gettext("      choosing \"best\" slices from "
394*0Sstevel@tonic-gate 			"those available...\n"));
395*0Sstevel@tonic-gate }
396*0Sstevel@tonic-gate 
397*0Sstevel@tonic-gate /*
398*0Sstevel@tonic-gate  * FUNCTION:	print_populate_no_slices_msg()
399*0Sstevel@tonic-gate  *
400*0Sstevel@tonic-gate  * PURPOSE:	Prints a layout failure due to no available slices message.
401*0Sstevel@tonic-gate  */
402*0Sstevel@tonic-gate void
print_populate_no_slices_msg()403*0Sstevel@tonic-gate print_populate_no_slices_msg()
404*0Sstevel@tonic-gate {
405*0Sstevel@tonic-gate 	oprintf(OUTPUT_VERBOSE,
406*0Sstevel@tonic-gate 		gettext("  <---Failed: there are no slices available.\n"));
407*0Sstevel@tonic-gate }
408