/* * 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 "%Z%%M% %I% %E% 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 */