view usr/src/cmd/lvm/metassist/common/volume_request.h @ 0:c9caec207d52 b86

Initial porting based on b86
author Koji Uno <koji.uno@sun.com>
date Tue, 02 Jun 2009 18:56:50 +0900
parents
children 1a15d5aaf794
line wrap: on
line source

/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License, Version 1.0 only
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 * or http://www.opensolaris.org/os/licensing.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information: Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 */
/*
 * Copyright 2003 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 */

#ifndef	_VOLUME_REQUEST_H
#define	_VOLUME_REQUEST_H

#pragma ident	"@(#)volume_request.h	1.2	05/06/08 SMI"

#ifdef __cplusplus
extern "C" {
#endif

#include "volume_devconfig.h"

/*
 * request_t - struct to hold a layout request
 */
typedef struct request {
	/*
	 * The devconfig_t representing the disk set at the top of the
	 * request hierarchy.  This hierarchy represents the requested
	 * volume configuration, as read from the volume-request.
	 */
	devconfig_t *diskset_req;

	/*
	 * The devconfig_t representing the disk set at the top of the
	 * resulting proposed volume hierarchy.  This hierarchy
	 * represents the volume configuration proposed by the layout
	 * engine.  This configuration will eventually be converted to
	 * a volume-spec.
	 */
	devconfig_t *diskset_config;
} request_t;

/*
 * Constructor: Create a request_t struct. This request_t must be
 * freed.
 *
 * @param       request
 *              RETURN: a pointer to a new request_t
 *
 * @return      0
 *              if successful
 *
 * @return      non-zero
 *              if an error occurred.  Use get_error_string() to
 *              retrieve the associated error message.
 */
extern int new_request(request_t **request);

/*
 * Free memory (recursively) allocated to a request_t struct
 *
 * @param       arg
 *              pointer to the request_t struct to free
 */
extern void free_request(void *arg);

/*
 * Set the disk set at the top of the request hierarchy
 *
 * @param       request
 *              The request_t representing the request to modify
 *
 * @param       diskset
 *              The devconfig_t representing the toplevel (disk set)
 *              device in the volume request hierarchy
 */
extern void request_set_diskset_req(request_t *request, devconfig_t *diskset);

/*
 * Get the disk set at the top of the request hierarchy
 *
 * @param       request
 *              The request_t representing the request to examine
 *
 * @return      The devconfig_t representing the toplevel (disk set)
 *              device in the volume request hierarchy
 */
extern devconfig_t *request_get_diskset_req(request_t *request);

/*
 * Set/get the disk set at the top of the proposed volume hierarchy
 *
 * @param       request
 *              The request_t representing the request to modify
 *
 * @param       diskset
 *              The devconfig_t representing the toplevel (disk set)
 *              device in the proposed volume hierarchy
 */
extern void request_set_diskset_config(
	request_t *request, devconfig_t *diskset);

/*
 * Get the disk set at the top of the request hierarchy
 *
 * @param       request
 *              The request_t representing the request to examine
 *
 * @return      The devconfig_t representing the toplevel (disk set)
 *              device in the proposed volume hierarchy
 */
extern devconfig_t *request_get_diskset_config(request_t *request);

#ifdef __cplusplus
}
#endif

#endif /* _VOLUME_REQUEST_H */