\hypertarget{g__bde_8c_source}{}\doxysection{g\+\_\+bde.\+c}
\label{g__bde_8c_source}\index{geom/bde/g\_bde.c@{geom/bde/g\_bde.c}}
\mbox{\hyperlink{g__bde_8c}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00001}00001 \textcolor{comment}{/*-\/}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00002}00002 \textcolor{comment}{ * SPDX-\/License-\/Identifier: BSD-\/2-\/Clause-\/FreeBSD}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00003}00003 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00004}00004 \textcolor{comment}{ * Copyright (c) 2002 Poul-\/Henning Kamp}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00005}00005 \textcolor{comment}{ * Copyright (c) 2002 Networks Associates Technology, Inc.}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00006}00006 \textcolor{comment}{ * All rights reserved.}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00007}00007 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00008}00008 \textcolor{comment}{ * This software was developed for the FreeBSD Project by Poul-\/Henning Kamp}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00009}00009 \textcolor{comment}{ * and NAI Labs, the Security Research Division of Network Associates, Inc.}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00010}00010 \textcolor{comment}{ * under DARPA/SPAWAR contract N66001-\/01-\/C-\/8035 ("{}CBOSS"{}), as part of the}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00011}00011 \textcolor{comment}{ * DARPA CHATS research program.}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00012}00012 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00013}00013 \textcolor{comment}{ * Redistribution and use in source and binary forms, with or without}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00014}00014 \textcolor{comment}{ * modification, are permitted provided that the following conditions}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00015}00015 \textcolor{comment}{ * are met:}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00016}00016 \textcolor{comment}{ * 1. Redistributions of source code must retain the above copyright}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00017}00017 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer.}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00018}00018 \textcolor{comment}{ * 2. Redistributions in binary form must reproduce the above copyright}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00019}00019 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer in the}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00020}00020 \textcolor{comment}{ *    documentation and/or other materials provided with the distribution.}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00021}00021 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00022}00022 \textcolor{comment}{ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00023}00023 \textcolor{comment}{ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00024}00024 \textcolor{comment}{ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00025}00025 \textcolor{comment}{ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00026}00026 \textcolor{comment}{ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00027}00027 \textcolor{comment}{ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00028}00028 \textcolor{comment}{ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00029}00029 \textcolor{comment}{ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00030}00030 \textcolor{comment}{ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00031}00031 \textcolor{comment}{ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00032}00032 \textcolor{comment}{ * SUCH DAMAGE.}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00033}00033 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00034}00034 \textcolor{comment}{ * \$FreeBSD\$}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00035}00035 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00036}00036 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00037}00037 }
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00038}00038 \textcolor{preprocessor}{\#include <sys/param.h>}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00039}00039 \textcolor{preprocessor}{\#include <sys/bio.h>}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00040}00040 \textcolor{preprocessor}{\#include <sys/lock.h>}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00041}00041 \textcolor{preprocessor}{\#include <sys/mutex.h>}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00042}00042 \textcolor{preprocessor}{\#include <sys/malloc.h>}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00043}00043 \textcolor{preprocessor}{\#include <sys/systm.h>}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00044}00044 \textcolor{preprocessor}{\#include <sys/kernel.h>}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00045}00045 \textcolor{preprocessor}{\#include <sys/kthread.h>}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00046}00046 \textcolor{preprocessor}{\#include <sys/sysctl.h>}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00047}00047 }
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00048}00048 \textcolor{preprocessor}{\#include <crypto/rijndael/rijndael-\/api-\/fst.h>}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00049}00049 \textcolor{preprocessor}{\#include <crypto/sha2/sha512.h>}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00050}00050 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{geom_8h}{geom/geom.h}}>}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00051}00051 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{g__bde_8h}{geom/bde/g\_bde.h}}>}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00052}\mbox{\hyperlink{g__bde_8c_ad9869f408e167e55675f8e270f3aa044}{00052}} \textcolor{preprocessor}{\#define BDE\_CLASS\_NAME "{}BDE"{}}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00053}00053 }
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00054}\mbox{\hyperlink{g__bde_8c_a9d246d13a17f3d54c6aa010974f170d9}{00054}} \mbox{\hyperlink{g__bde_8c_a9d246d13a17f3d54c6aa010974f170d9}{FEATURE}}(geom\_bde, \textcolor{stringliteral}{"{}GEOM-\/based Disk Encryption"{}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00055}00055 }
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00056}00056 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00057}\mbox{\hyperlink{g__bde_8c_a5f105fb1a61d8f90a3e63130fcbb8fb8}{00057}} \mbox{\hyperlink{g__bde_8c_a5f105fb1a61d8f90a3e63130fcbb8fb8}{g\_bde\_start}}(\textcolor{keyword}{struct} bio *\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}})}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00058}00058 \{}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00059}00059 }
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00060}00060         \textcolor{keywordflow}{switch} (\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_cmd) \{}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00061}00061         \textcolor{keywordflow}{case} BIO\_DELETE:}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00062}00062         \textcolor{keywordflow}{case} BIO\_READ:}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00063}00063         \textcolor{keywordflow}{case} BIO\_WRITE:}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00064}00064                 \mbox{\hyperlink{g__bde_8h_afa8a48bd707806368e19c97a59f12718}{g\_bde\_start1}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00065}00065                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00066}00066         \textcolor{keywordflow}{case} BIO\_GETATTR:}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00067}00067                 \mbox{\hyperlink{geom_8h_a0975be2dcd40a26a56a1a9bfc80433e1}{g\_io\_deliver}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, EOPNOTSUPP);}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00068}00068                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00069}00069         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00070}00070                 \mbox{\hyperlink{geom_8h_a0975be2dcd40a26a56a1a9bfc80433e1}{g\_io\_deliver}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, EOPNOTSUPP);}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00071}00071                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00072}00072         \}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00073}00073         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00074}00074 \}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00075}00075 }
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00076}00076 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00077}\mbox{\hyperlink{g__bde_8c_a446788b7589f4db0ea76a54f08f19d9b}{00077}} \mbox{\hyperlink{g__bde_8c_a446788b7589f4db0ea76a54f08f19d9b}{g\_bde\_orphan}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structg__consumer}{g\_consumer}} *\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}})}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00078}00078 \{}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00079}00079         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__geom}{g\_geom}} *\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00080}00080         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__provider}{g\_provider}} *\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00081}00081         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__bde__softc}{g\_bde\_softc}} *sc;}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00082}00082 }
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00083}00083         \mbox{\hyperlink{geom_8h_a7588d7ea7fbf7180b345df84b8797166}{g\_trace}}(\mbox{\hyperlink{geom_8h_a7f1804ff1a11f763a1ab5bdbd3e1287c}{G\_T\_TOPOLOGY}}, \textcolor{stringliteral}{"{}g\_bde\_orphan(\%p/\%s)"{}}, \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}, \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a6435d5aec0376e995dce3131fd3beb52}{provider}}-\/>\mbox{\hyperlink{structg__provider_a2bffb416ee58cf4df7839c6fd5ec004a}{name}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00084}00084         \mbox{\hyperlink{geom_8h_a1898dc8c812faa5de231ab840e8562bf}{g\_topology\_assert}}();}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00085}00085 }
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00086}00086         \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}} = \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a75734fc8cd22ffc4209c36cc0a459cba}{geom}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00087}00087         sc = \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>\mbox{\hyperlink{structg__geom_aa83c08c83459420f6cbcfe64c6099466}{softc}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00088}00088         \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>\mbox{\hyperlink{structg__geom_afa218bd6b4ead71e6238ecd0577e1cc9}{flags}} |= \mbox{\hyperlink{geom_8h_ac5e457264b1579081f1d544c1eceb256}{G\_GEOM\_WITHER}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00089}00089         LIST\_FOREACH(\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}, \&\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>provider, provider)}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00090}00090                 \mbox{\hyperlink{geom_8h_a164882713025c4e0cc58b1ac8501bcf0}{g\_wither\_provider}}(\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}, ENXIO);}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00091}00091         explicit\_bzero(sc, \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct} \mbox{\hyperlink{structg__bde__softc}{g\_bde\_softc}}));      \textcolor{comment}{/* destroy evidence */}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00092}00092         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00093}00093 \}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00094}00094 }
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00095}00095 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00096}\mbox{\hyperlink{g__bde_8c_ab9ac96167be1b5900169f73ce3ebedf2}{00096}} \mbox{\hyperlink{g__bde_8c_ab9ac96167be1b5900169f73ce3ebedf2}{g\_bde\_access}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structg__provider}{g\_provider}} *\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}, \textcolor{keywordtype}{int} dr, \textcolor{keywordtype}{int} dw, \textcolor{keywordtype}{int} de)}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00097}00097 \{}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00098}00098         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__geom}{g\_geom}} *\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00099}00099         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__consumer}{g\_consumer}} *\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00100}00100 }
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00101}00101         \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}} = \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_afe5c92b8a2a9e4cdf1cab6daa96923c1}{geom}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00102}00102         \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}} = LIST\_FIRST(\&\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>consumer);}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00103}00103         \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a40c3b377327dc07731eaf19340004033}{acr}} == 0 \&\& \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a28f563df0299e7e1ab9a1121b6e483eb}{acw}} == 0 \&\& \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_ace7a7f6859bd4cf00ff910bda08bb05a}{ace}} == 0) \{}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00104}00104                 de++;}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00105}00105                 dr++;}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00106}00106         \}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00107}00107         \textcolor{comment}{/* ... and let go of it on last close */}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00108}00108         \textcolor{keywordflow}{if} ((\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a40c3b377327dc07731eaf19340004033}{acr}} + dr) == 0 \&\& (\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a28f563df0299e7e1ab9a1121b6e483eb}{acw}} + dw) == 0 \&\& (\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_ace7a7f6859bd4cf00ff910bda08bb05a}{ace}} + de) == 1) \{}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00109}00109                 de-\/-\/;}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00110}00110                 dr-\/-\/;}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00111}00111         \}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00112}00112         \textcolor{keywordflow}{return} (\mbox{\hyperlink{geom_8h_a27b7c72cc3bc5a4d07ce5976e1aa1b58}{g\_access}}(\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}, dr, dw, de));}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00113}00113 \}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00114}00114 }
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00115}00115 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00116}\mbox{\hyperlink{g__bde_8c_ac3f8524d96e7d09fe653f70fc48c2af1}{00116}} \mbox{\hyperlink{g__bde_8c_ac3f8524d96e7d09fe653f70fc48c2af1}{g\_bde\_create\_geom}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structgctl__req}{gctl\_req}} *\mbox{\hyperlink{g__part__if_8m_a7a9f20c97e75f805eb506910bd3e70d3}{req}}, \textcolor{keyword}{struct} \mbox{\hyperlink{structg__class}{g\_class}} *\mbox{\hyperlink{g__raid__md__if_8m_a4f7502795edfd2493d3d223d0df33e1d}{mp}}, \textcolor{keyword}{struct} \mbox{\hyperlink{structg__provider}{g\_provider}} *\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}})}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00117}00117 \{}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00118}00118         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__geom}{g\_geom}} *\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00119}00119         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__consumer}{g\_consumer}} *\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00120}00120         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__bde__key}{g\_bde\_key}} *kp;}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00121}00121         \textcolor{keywordtype}{int} error, i;}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00122}00122         u\_int \mbox{\hyperlink{structg__bde__key_a66aa1db7d90034f5b5ac35ba7a011ab7}{sectorsize}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00123}00123         off\_t mediasize;}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00124}00124         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__bde__softc}{g\_bde\_softc}} *sc;}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00125}00125         \textcolor{keywordtype}{void} *pass;}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00126}00126         \textcolor{keywordtype}{void} *\mbox{\hyperlink{structg__bde__softc_aed5c45f058e35c02ee14c6707fcc0b37}{key}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00127}00127 }
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00128}00128         \mbox{\hyperlink{geom_8h_a7588d7ea7fbf7180b345df84b8797166}{g\_trace}}(\mbox{\hyperlink{geom_8h_a7f1804ff1a11f763a1ab5bdbd3e1287c}{G\_T\_TOPOLOGY}}, \textcolor{stringliteral}{"{}g\_bde\_create\_geom(\%s, \%s)"{}}, \mbox{\hyperlink{g__raid__md__if_8m_a4f7502795edfd2493d3d223d0df33e1d}{mp}}-\/>\mbox{\hyperlink{structg__class_a66bf8381cf0afbf7ccdebfa6b90a4a96}{name}}, \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a2bffb416ee58cf4df7839c6fd5ec004a}{name}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00129}00129         \mbox{\hyperlink{geom_8h_a1898dc8c812faa5de231ab840e8562bf}{g\_topology\_assert}}();}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00130}00130         \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}} = NULL;}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00131}00131 }
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00132}00132         \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}} = \mbox{\hyperlink{geom_8h_a4000befe2ff4b405b8333ccc5b0fdb41}{g\_new\_geomf}}(\mbox{\hyperlink{g__raid__md__if_8m_a4f7502795edfd2493d3d223d0df33e1d}{mp}}, \textcolor{stringliteral}{"{}\%s.bde"{}}, \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a2bffb416ee58cf4df7839c6fd5ec004a}{name}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00133}00133         \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}} = \mbox{\hyperlink{geom_8h_aef9ca3f0eecc1b245c3c9cd0bac1cdc4}{g\_new\_consumer}}(\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00134}00134         error = \mbox{\hyperlink{geom_8h_a7f6ee69db47bae6ff5284f6a9cfceb91}{g\_attach}}(\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}, \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00135}00135         \textcolor{keywordflow}{if} (error != 0) \{}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00136}00136                 \mbox{\hyperlink{geom_8h_a9f53f6118c5e44ca2bcbd7ae548597b9}{g\_destroy\_consumer}}(\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00137}00137                 \mbox{\hyperlink{geom_8h_ac8307c99785f672632d3cf33134211ea}{g\_destroy\_geom}}(\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00138}00138                 \mbox{\hyperlink{geom_8h_a1d51201471b52be7e19a98b0fcb144de}{gctl\_error}}(\mbox{\hyperlink{g__part__if_8m_a7a9f20c97e75f805eb506910bd3e70d3}{req}}, \textcolor{stringliteral}{"{}could not attach consumer"{}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00139}00139                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00140}00140         \}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00141}00141         error = \mbox{\hyperlink{geom_8h_a27b7c72cc3bc5a4d07ce5976e1aa1b58}{g\_access}}(\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}, 1, 1, 1);}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00142}00142         \textcolor{keywordflow}{if} (error) \{}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00143}00143                 \mbox{\hyperlink{geom_8h_a037802c2ec5d43fcf1222215f9f8a735}{g\_detach}}(\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00144}00144                 \mbox{\hyperlink{geom_8h_a9f53f6118c5e44ca2bcbd7ae548597b9}{g\_destroy\_consumer}}(\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00145}00145                 \mbox{\hyperlink{geom_8h_ac8307c99785f672632d3cf33134211ea}{g\_destroy\_geom}}(\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00146}00146                 \mbox{\hyperlink{geom_8h_a1d51201471b52be7e19a98b0fcb144de}{gctl\_error}}(\mbox{\hyperlink{g__part__if_8m_a7a9f20c97e75f805eb506910bd3e70d3}{req}}, \textcolor{stringliteral}{"{}could not access consumer"{}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00147}00147                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00148}00148         \}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00149}00149         pass = NULL;}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00150}00150         \mbox{\hyperlink{structg__bde__softc_aed5c45f058e35c02ee14c6707fcc0b37}{key}} = NULL;}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00151}00151         \textcolor{keywordflow}{do} \{}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00152}00152                 pass = \mbox{\hyperlink{geom_8h_a3e3d6786258b3336d55a96607f9b8eb8}{gctl\_get\_param}}(\mbox{\hyperlink{g__part__if_8m_a7a9f20c97e75f805eb506910bd3e70d3}{req}}, \textcolor{stringliteral}{"{}pass"{}}, \&i);}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00153}00153                 \textcolor{keywordflow}{if} (pass == NULL || i != SHA512\_DIGEST\_LENGTH) \{}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00154}00154                         \mbox{\hyperlink{geom_8h_a1d51201471b52be7e19a98b0fcb144de}{gctl\_error}}(\mbox{\hyperlink{g__part__if_8m_a7a9f20c97e75f805eb506910bd3e70d3}{req}}, \textcolor{stringliteral}{"{}No usable key presented"{}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00155}00155                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00156}00156                 \}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00157}00157                 \mbox{\hyperlink{structg__bde__softc_aed5c45f058e35c02ee14c6707fcc0b37}{key}} = \mbox{\hyperlink{geom_8h_a3e3d6786258b3336d55a96607f9b8eb8}{gctl\_get\_param}}(\mbox{\hyperlink{g__part__if_8m_a7a9f20c97e75f805eb506910bd3e70d3}{req}}, \textcolor{stringliteral}{"{}key"{}}, \&i);}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00158}00158                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{structg__bde__softc_aed5c45f058e35c02ee14c6707fcc0b37}{key}} != NULL \&\& i != 16) \{}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00159}00159                         \mbox{\hyperlink{geom_8h_a1d51201471b52be7e19a98b0fcb144de}{gctl\_error}}(\mbox{\hyperlink{g__part__if_8m_a7a9f20c97e75f805eb506910bd3e70d3}{req}}, \textcolor{stringliteral}{"{}Invalid key presented"{}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00160}00160                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00161}00161                 \}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00162}00162                 \mbox{\hyperlink{structg__bde__softc_a3550952b25e3c8697e43254841743beb}{sectorsize}} = \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a6435d5aec0376e995dce3131fd3beb52}{provider}}-\/>\mbox{\hyperlink{structg__provider_aea3cd43d41461790b8d0afcd8c49a355}{sectorsize}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00163}00163                 \mbox{\hyperlink{structg__bde__softc_a6dbd335cfec2c527075a9df582778506}{mediasize}} = \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a6435d5aec0376e995dce3131fd3beb52}{provider}}-\/>\mbox{\hyperlink{structg__provider_a8f47c464c78aa91fa4ca5143ed3cd15e}{mediasize}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00164}00164                 sc = \mbox{\hyperlink{geom_8h_a0f190247baa73dc863a79fea9d5f6b4f}{g\_malloc}}(\textcolor{keyword}{sizeof}(\textcolor{keyword}{struct} \mbox{\hyperlink{structg__bde__softc}{g\_bde\_softc}}), M\_WAITOK | M\_ZERO);}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00165}00165                 \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>\mbox{\hyperlink{structg__geom_aa83c08c83459420f6cbcfe64c6099466}{softc}} = sc;}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00166}00166                 sc-\/>\mbox{\hyperlink{structg__bde__softc_ac17ac7126b208895820c4457f14db013}{geom}} = \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00167}00167                 sc-\/>\mbox{\hyperlink{structg__bde__softc_a3bc97d06913991a91d0e7009c6991ce5}{consumer}} = \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00168}00168 }
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00169}00169                 error = \mbox{\hyperlink{g__bde_8h_a39fd847b1c2a22e14446402feaf1442b}{g\_bde\_decrypt\_lock}}(sc, pass, \mbox{\hyperlink{structg__bde__softc_aed5c45f058e35c02ee14c6707fcc0b37}{key}},}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00170}00170                     \mbox{\hyperlink{structg__bde__softc_a6dbd335cfec2c527075a9df582778506}{mediasize}}, \mbox{\hyperlink{structg__bde__softc_a3550952b25e3c8697e43254841743beb}{sectorsize}}, NULL);}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00171}00171                 explicit\_bzero(sc-\/>\mbox{\hyperlink{structg__bde__softc_a3004ff7ec5e1294d1cca2bbd35ea3e29}{sha2}}, \textcolor{keyword}{sizeof} sc-\/>\mbox{\hyperlink{structg__bde__softc_a3004ff7ec5e1294d1cca2bbd35ea3e29}{sha2}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00172}00172                 \textcolor{keywordflow}{if} (error)}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00173}00173                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00174}00174                 kp = \&sc-\/>\mbox{\hyperlink{structg__bde__softc_aed5c45f058e35c02ee14c6707fcc0b37}{key}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00175}00175 }
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00176}00176                 \textcolor{comment}{/* Initialize helper-\/fields */}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00177}00177                 kp-\/>\mbox{\hyperlink{structg__bde__key_a19801ede0848a12614c8402be36fa40d}{keys\_per\_sector}} = kp-\/>\mbox{\hyperlink{structg__bde__key_a66aa1db7d90034f5b5ac35ba7a011ab7}{sectorsize}} / \mbox{\hyperlink{g__bde_8h_aeb4e94faeca023758a78cd9cd45cc656}{G\_BDE\_SKEYLEN}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00178}00178                 kp-\/>\mbox{\hyperlink{structg__bde__key_a19fcaf93ac99c557c6bb6f6ed0ee2c42}{zone\_cont}} = kp-\/>\mbox{\hyperlink{structg__bde__key_a19801ede0848a12614c8402be36fa40d}{keys\_per\_sector}} * kp-\/>\mbox{\hyperlink{structg__bde__key_a66aa1db7d90034f5b5ac35ba7a011ab7}{sectorsize}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00179}00179                 kp-\/>\mbox{\hyperlink{structg__bde__key_ae57a9921228a0b26282b8a131623d630}{zone\_width}} = kp-\/>\mbox{\hyperlink{structg__bde__key_a19fcaf93ac99c557c6bb6f6ed0ee2c42}{zone\_cont}} + kp-\/>\mbox{\hyperlink{structg__bde__key_a66aa1db7d90034f5b5ac35ba7a011ab7}{sectorsize}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00180}00180                 kp-\/>\mbox{\hyperlink{structg__bde__key_a71c1315e6871a2546e82ab7e38d93b23}{media\_width}} = kp-\/>\mbox{\hyperlink{structg__bde__key_a24a6da7f1a62a46ce669f45927f00307}{sectorN}} -\/ kp-\/>\mbox{\hyperlink{structg__bde__key_ac3bc453b01531611394dcabb3c25ead6}{sector0}} -\/}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00181}00181                     \mbox{\hyperlink{g__bde_8h_a0f44849dd4673db8de19f94a741d27a7}{G\_BDE\_MAXKEYS}} * kp-\/>\mbox{\hyperlink{structg__bde__key_a66aa1db7d90034f5b5ac35ba7a011ab7}{sectorsize}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00182}00182 }
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00183}00183                 \textcolor{comment}{/* Our external parameters */}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00184}00184                 sc-\/>\mbox{\hyperlink{structg__bde__softc_a4153065111056f3bd3269dd988cb05dd}{zone\_cont}} = kp-\/>\mbox{\hyperlink{structg__bde__key_a19fcaf93ac99c557c6bb6f6ed0ee2c42}{zone\_cont}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00185}00185                 sc-\/>\mbox{\hyperlink{structg__bde__softc_a6dbd335cfec2c527075a9df582778506}{mediasize}} = \mbox{\hyperlink{g__bde_8h_a1a81354f303cb614add4800492d5298a}{g\_bde\_max\_sector}}(kp);}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00186}00186                 sc-\/>\mbox{\hyperlink{structg__bde__softc_a3550952b25e3c8697e43254841743beb}{sectorsize}} = kp-\/>\mbox{\hyperlink{structg__bde__key_a66aa1db7d90034f5b5ac35ba7a011ab7}{sectorsize}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00187}00187 }
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00188}00188                 TAILQ\_INIT(\&sc-\/>freelist);}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00189}00189                 TAILQ\_INIT(\&sc-\/>worklist);}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00190}00190                 mtx\_init(\&sc-\/>\mbox{\hyperlink{structg__bde__softc_a7a9fcb7e0a97a3af4186b18ca2db9daa}{worklist\_mutex}}, \textcolor{stringliteral}{"{}g\_bde\_worklist"{}}, NULL, MTX\_DEF);}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00191}00191                 \textcolor{comment}{/* XXX: error check */}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00192}00192                 kproc\_create(\mbox{\hyperlink{g__bde_8h_a6d037c99d1189618a550c7b1d84b53bb}{g\_bde\_worker}}, \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}, \&sc-\/>\mbox{\hyperlink{structg__bde__softc_a2db125456c211ba6ee623cfa11a23bc8}{thread}}, 0, 0,}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00193}00193                         \textcolor{stringliteral}{"{}g\_bde \%s"{}}, \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>\mbox{\hyperlink{structg__geom_af64450500f1fea18f639b191a5017107}{name}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00194}00194                 \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}} = \mbox{\hyperlink{geom_8h_a79a5fe6e79cbc1a257454a3554fa11ef}{g\_new\_providerf}}(\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}, \textcolor{stringliteral}{"{}\%s"{}}, \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>\mbox{\hyperlink{structg__geom_af64450500f1fea18f639b191a5017107}{name}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00195}00195                 \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a0ae62d15d2436a80825accbdb3cd6149}{stripesize}} = kp-\/>\mbox{\hyperlink{structg__bde__key_a19fcaf93ac99c557c6bb6f6ed0ee2c42}{zone\_cont}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00196}00196                 \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_ac6baefca9562013cb451aee0a665e378}{stripeoffset}} = 0;}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00197}00197                 \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a8f47c464c78aa91fa4ca5143ed3cd15e}{mediasize}} = sc-\/>\mbox{\hyperlink{structg__bde__softc_a6dbd335cfec2c527075a9df582778506}{mediasize}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00198}00198                 \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_aea3cd43d41461790b8d0afcd8c49a355}{sectorsize}} = sc-\/>\mbox{\hyperlink{structg__bde__softc_a3550952b25e3c8697e43254841743beb}{sectorsize}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00199}00199                 \mbox{\hyperlink{geom_8h_a7a46b49361266e9bb4b1441aade2c48f}{g\_error\_provider}}(\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}, 0);}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00200}00200                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00201}00201         \} \textcolor{keywordflow}{while} (0);}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00202}00202         \textcolor{keywordflow}{if} (pass != NULL)}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00203}00203                 explicit\_bzero(pass, SHA512\_DIGEST\_LENGTH);}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00204}00204         \textcolor{keywordflow}{if} (\mbox{\hyperlink{structg__bde__softc_aed5c45f058e35c02ee14c6707fcc0b37}{key}} != NULL)}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00205}00205                 explicit\_bzero(\mbox{\hyperlink{structg__bde__softc_aed5c45f058e35c02ee14c6707fcc0b37}{key}}, 16);}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00206}00206         \textcolor{keywordflow}{if} (error == 0)}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00207}00207                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00208}00208         \mbox{\hyperlink{geom_8h_a27b7c72cc3bc5a4d07ce5976e1aa1b58}{g\_access}}(\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}, -\/1, -\/1, -\/1);}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00209}00209         \mbox{\hyperlink{geom_8h_a037802c2ec5d43fcf1222215f9f8a735}{g\_detach}}(\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00210}00210         \mbox{\hyperlink{geom_8h_a9f53f6118c5e44ca2bcbd7ae548597b9}{g\_destroy\_consumer}}(\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00211}00211         \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>\mbox{\hyperlink{structg__geom_aa83c08c83459420f6cbcfe64c6099466}{softc}} != NULL)}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00212}00212                 \mbox{\hyperlink{geom_8h_ad9924deb20de7b40cb6cf06e5ae28855}{g\_free}}(\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>\mbox{\hyperlink{structg__geom_aa83c08c83459420f6cbcfe64c6099466}{softc}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00213}00213         \mbox{\hyperlink{geom_8h_ac8307c99785f672632d3cf33134211ea}{g\_destroy\_geom}}(\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00214}00214         \textcolor{keywordflow}{switch} (error) \{}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00215}00215         \textcolor{keywordflow}{case} ENOENT:}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00216}00216                 \mbox{\hyperlink{geom_8h_a1d51201471b52be7e19a98b0fcb144de}{gctl\_error}}(\mbox{\hyperlink{g__part__if_8m_a7a9f20c97e75f805eb506910bd3e70d3}{req}}, \textcolor{stringliteral}{"{}Lock was destroyed"{}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00217}00217                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00218}00218         \textcolor{keywordflow}{case} ESRCH:}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00219}00219                 \mbox{\hyperlink{geom_8h_a1d51201471b52be7e19a98b0fcb144de}{gctl\_error}}(\mbox{\hyperlink{g__part__if_8m_a7a9f20c97e75f805eb506910bd3e70d3}{req}}, \textcolor{stringliteral}{"{}Lock was nuked"{}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00220}00220                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00221}00221         \textcolor{keywordflow}{case} EINVAL:}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00222}00222                 \mbox{\hyperlink{geom_8h_a1d51201471b52be7e19a98b0fcb144de}{gctl\_error}}(\mbox{\hyperlink{g__part__if_8m_a7a9f20c97e75f805eb506910bd3e70d3}{req}}, \textcolor{stringliteral}{"{}Could not open lock"{}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00223}00223                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00224}00224         \textcolor{keywordflow}{case} ENOTDIR:}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00225}00225                 \mbox{\hyperlink{geom_8h_a1d51201471b52be7e19a98b0fcb144de}{gctl\_error}}(\mbox{\hyperlink{g__part__if_8m_a7a9f20c97e75f805eb506910bd3e70d3}{req}}, \textcolor{stringliteral}{"{}Lock not found"{}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00226}00226                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00227}00227         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00228}00228                 \mbox{\hyperlink{geom_8h_a1d51201471b52be7e19a98b0fcb144de}{gctl\_error}}(\mbox{\hyperlink{g__part__if_8m_a7a9f20c97e75f805eb506910bd3e70d3}{req}}, \textcolor{stringliteral}{"{}Could not open lock (\%d)"{}}, error);}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00229}00229                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00230}00230         \}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00231}00231         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00232}00232 \}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00233}00233 }
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00234}00234 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00235}\mbox{\hyperlink{g__bde_8c_afaf8d7c64a12b72028fc3cfe0ebf4b6f}{00235}} \mbox{\hyperlink{g__bde_8c_afaf8d7c64a12b72028fc3cfe0ebf4b6f}{g\_bde\_destroy\_geom}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structgctl__req}{gctl\_req}} *\mbox{\hyperlink{g__part__if_8m_a7a9f20c97e75f805eb506910bd3e70d3}{req}}, \textcolor{keyword}{struct} \mbox{\hyperlink{structg__class}{g\_class}} *\mbox{\hyperlink{g__raid__md__if_8m_a4f7502795edfd2493d3d223d0df33e1d}{mp}}, \textcolor{keyword}{struct} \mbox{\hyperlink{structg__geom}{g\_geom}} *\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}})}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00236}00236 \{}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00237}00237         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__consumer}{g\_consumer}} *\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00238}00238         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__provider}{g\_provider}} *\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00239}00239         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__bde__softc}{g\_bde\_softc}} *sc;}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00240}00240 }
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00241}00241         \mbox{\hyperlink{geom_8h_a7588d7ea7fbf7180b345df84b8797166}{g\_trace}}(\mbox{\hyperlink{geom_8h_a7f1804ff1a11f763a1ab5bdbd3e1287c}{G\_T\_TOPOLOGY}}, \textcolor{stringliteral}{"{}g\_bde\_destroy\_geom(\%s, \%s)"{}}, \mbox{\hyperlink{g__raid__md__if_8m_a4f7502795edfd2493d3d223d0df33e1d}{mp}}-\/>\mbox{\hyperlink{structg__class_a66bf8381cf0afbf7ccdebfa6b90a4a96}{name}}, \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>\mbox{\hyperlink{structg__geom_af64450500f1fea18f639b191a5017107}{name}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00242}00242         \mbox{\hyperlink{geom_8h_a1898dc8c812faa5de231ab840e8562bf}{g\_topology\_assert}}();}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00243}00243         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00244}00244 \textcolor{comment}{         * Orderly detachment.}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00245}00245 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00246}00246         KASSERT(\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}} != NULL, (\textcolor{stringliteral}{"{}NULL geom"{}}));}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00247}00247         \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}} = LIST\_FIRST(\&\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>provider);}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00248}00248         KASSERT(\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}} != NULL, (\textcolor{stringliteral}{"{}NULL provider"{}}));}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00249}00249         \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a62d7db6055318331bae725b44d58c140}{acr}} > 0 || \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_abc6824f999ce8b17107d833c908c83e6}{acw}} > 0 || \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_ae46b0f6e935dcb33a2a06556dbcbeb4c}{ace}} > 0)}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00250}00250                 \textcolor{keywordflow}{return} (EBUSY);}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00251}00251         sc = \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>\mbox{\hyperlink{structg__geom_aa83c08c83459420f6cbcfe64c6099466}{softc}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00252}00252         \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}} = LIST\_FIRST(\&\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>consumer);}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00253}00253         KASSERT(\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}} != NULL, (\textcolor{stringliteral}{"{}NULL consumer"{}}));}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00254}00254         sc-\/>\mbox{\hyperlink{structg__bde__softc_a42b28a4bf4f575371fcdfda95425c601}{dead}} = 1;}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00255}00255         wakeup(sc);}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00256}00256         \mbox{\hyperlink{geom_8h_a27b7c72cc3bc5a4d07ce5976e1aa1b58}{g\_access}}(\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}, -\/1, -\/1, -\/1);}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00257}00257         \mbox{\hyperlink{geom_8h_a037802c2ec5d43fcf1222215f9f8a735}{g\_detach}}(\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00258}00258         \mbox{\hyperlink{geom_8h_a9f53f6118c5e44ca2bcbd7ae548597b9}{g\_destroy\_consumer}}(\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00259}00259         \textcolor{keywordflow}{while} (sc-\/>\mbox{\hyperlink{structg__bde__softc_a42b28a4bf4f575371fcdfda95425c601}{dead}} != 2 \&\& !LIST\_EMPTY(\&\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>consumers))}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00260}00260                 tsleep(sc, PRIBIO, \textcolor{stringliteral}{"{}g\_bdedie"{}}, hz);}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00261}00261         mtx\_destroy(\&sc-\/>\mbox{\hyperlink{structg__bde__softc_a7a9fcb7e0a97a3af4186b18ca2db9daa}{worklist\_mutex}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00262}00262         explicit\_bzero(\&sc-\/>\mbox{\hyperlink{structg__bde__softc_aed5c45f058e35c02ee14c6707fcc0b37}{key}}, \textcolor{keyword}{sizeof} sc-\/>\mbox{\hyperlink{structg__bde__softc_aed5c45f058e35c02ee14c6707fcc0b37}{key}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00263}00263         \mbox{\hyperlink{geom_8h_ad9924deb20de7b40cb6cf06e5ae28855}{g\_free}}(sc);}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00264}00264         \mbox{\hyperlink{geom_8h_a87a0eb5de79ed5e49fcfec012f213c9b}{g\_wither\_geom}}(\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}, ENXIO);}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00265}00265         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00266}00266 \}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00267}00267 }
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00268}00268 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00269}\mbox{\hyperlink{g__bde_8c_a0f372f258d26f7ee3f0c78b18301ad97}{00269}} \mbox{\hyperlink{g__bde_8c_a0f372f258d26f7ee3f0c78b18301ad97}{g\_bde\_ctlreq}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structgctl__req}{gctl\_req}} *\mbox{\hyperlink{g__part__if_8m_a7a9f20c97e75f805eb506910bd3e70d3}{req}}, \textcolor{keyword}{struct} \mbox{\hyperlink{structg__class}{g\_class}} *\mbox{\hyperlink{g__raid__md__if_8m_a4f7502795edfd2493d3d223d0df33e1d}{mp}}, \textcolor{keywordtype}{char} \textcolor{keyword}{const} *verb)}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00270}00270 \{}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00271}00271         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__geom}{g\_geom}} *\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00272}00272         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__provider}{g\_provider}} *\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00273}00273 }
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00274}00274         \textcolor{keywordflow}{if} (!strcmp(verb, \textcolor{stringliteral}{"{}create geom"{}})) \{}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00275}00275                 \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}} = \mbox{\hyperlink{geom_8h_a02d62eea445edba7982f681b41c6c307}{gctl\_get\_provider}}(\mbox{\hyperlink{g__part__if_8m_a7a9f20c97e75f805eb506910bd3e70d3}{req}}, \textcolor{stringliteral}{"{}provider"{}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00276}00276                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}} != NULL)}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00277}00277                         \mbox{\hyperlink{g__bde_8c_ac3f8524d96e7d09fe653f70fc48c2af1}{g\_bde\_create\_geom}}(\mbox{\hyperlink{g__part__if_8m_a7a9f20c97e75f805eb506910bd3e70d3}{req}}, \mbox{\hyperlink{g__raid__md__if_8m_a4f7502795edfd2493d3d223d0df33e1d}{mp}}, \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00278}00278         \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (!strcmp(verb, \textcolor{stringliteral}{"{}destroy geom"{}})) \{}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00279}00279                 \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}} = \mbox{\hyperlink{geom_8h_abed39403ebb1af29764ffa772cfce2a5}{gctl\_get\_geom}}(\mbox{\hyperlink{g__part__if_8m_a7a9f20c97e75f805eb506910bd3e70d3}{req}}, \mbox{\hyperlink{g__raid__md__if_8m_a4f7502795edfd2493d3d223d0df33e1d}{mp}}, \textcolor{stringliteral}{"{}geom"{}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00280}00280                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}} != NULL)}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00281}00281                         \mbox{\hyperlink{g__bde_8c_afaf8d7c64a12b72028fc3cfe0ebf4b6f}{g\_bde\_destroy\_geom}}(\mbox{\hyperlink{g__part__if_8m_a7a9f20c97e75f805eb506910bd3e70d3}{req}}, \mbox{\hyperlink{g__raid__md__if_8m_a4f7502795edfd2493d3d223d0df33e1d}{mp}}, \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00282}00282         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00283}00283                 \mbox{\hyperlink{geom_8h_a1d51201471b52be7e19a98b0fcb144de}{gctl\_error}}(\mbox{\hyperlink{g__part__if_8m_a7a9f20c97e75f805eb506910bd3e70d3}{req}}, \textcolor{stringliteral}{"{}unknown verb"{}});}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00284}00284         \}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00285}00285 \}}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00286}00286 }
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00287}\mbox{\hyperlink{g__bde_8c_ad9fea2c8b7e4255f36a35d651e793c6f}{00287}} \textcolor{keyword}{static} \textcolor{keyword}{struct }\mbox{\hyperlink{structg__class}{g\_class}} \mbox{\hyperlink{g__bde_8c_ad9fea2c8b7e4255f36a35d651e793c6f}{g\_bde\_class}}     = \{}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00288}00288         .\mbox{\hyperlink{structg__class_a66bf8381cf0afbf7ccdebfa6b90a4a96}{name}} = \mbox{\hyperlink{g__bde_8c_ad9869f408e167e55675f8e270f3aa044}{BDE\_CLASS\_NAME}},}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00289}00289         .version = \mbox{\hyperlink{geom_8h_a33025dbc893de9dc049ba2f30283bc5a}{G\_VERSION}},}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00290}00290         .destroy\_geom = \mbox{\hyperlink{g__bde_8c_afaf8d7c64a12b72028fc3cfe0ebf4b6f}{g\_bde\_destroy\_geom}},}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00291}00291         .ctlreq = \mbox{\hyperlink{g__bde_8c_a0f372f258d26f7ee3f0c78b18301ad97}{g\_bde\_ctlreq}},}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00292}00292         .start = \mbox{\hyperlink{g__bde_8c_a5f105fb1a61d8f90a3e63130fcbb8fb8}{g\_bde\_start}},}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00293}00293         .orphan = \mbox{\hyperlink{g__bde_8c_a446788b7589f4db0ea76a54f08f19d9b}{g\_bde\_orphan}},}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00294}00294         .access = \mbox{\hyperlink{g__bde_8c_ab9ac96167be1b5900169f73ce3ebedf2}{g\_bde\_access}},}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00295}00295         .spoiled = \mbox{\hyperlink{geom_8h_ac8cee5c0bb693826291c30b6da85fd7a}{g\_std\_spoiled}},}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00296}00296 \};}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00297}00297 }
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00298}\mbox{\hyperlink{g__bde_8c_a41aa9995432676719f8718160b69431a}{00298}} \mbox{\hyperlink{g__bde_8c_a41aa9995432676719f8718160b69431a}{DECLARE\_GEOM\_CLASS}}(\mbox{\hyperlink{g__bde_8c_ad9fea2c8b7e4255f36a35d651e793c6f}{g\_bde\_class}}, g\_bde);}
\DoxyCodeLine{\Hypertarget{g__bde_8c_source_l00299}\mbox{\hyperlink{g__bde_8c_adda94aef565bdb82c766131e042f94fb}{00299}} \mbox{\hyperlink{g__bde_8c_adda94aef565bdb82c766131e042f94fb}{MODULE\_VERSION}}(geom\_bde, 0);}

\end{DoxyCode}
