\hypertarget{geom__slice_8c_source}{}\doxysection{geom\+\_\+slice.\+c}
\label{geom__slice_8c_source}\index{geom/geom\_slice.c@{geom/geom\_slice.c}}
\mbox{\hyperlink{geom__slice_8c}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00001}00001 \textcolor{comment}{/*-\/}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00002}00002 \textcolor{comment}{ * SPDX-\/License-\/Identifier: BSD-\/3-\/Clause}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00003}00003 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00004}00004 \textcolor{comment}{ * Copyright (c) 2002 Poul-\/Henning Kamp}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00005}00005 \textcolor{comment}{ * Copyright (c) 2002 Networks Associates Technology, Inc.}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00006}00006 \textcolor{comment}{ * All rights reserved.}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00007}00007 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00008}00008 \textcolor{comment}{ * This software was developed for the FreeBSD Project by Poul-\/Henning Kamp}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00009}00009 \textcolor{comment}{ * and NAI Labs, the Security Research Division of Network Associates, Inc.}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00010}00010 \textcolor{comment}{ * under DARPA/SPAWAR contract N66001-\/01-\/C-\/8035 ("{}CBOSS"{}), as part of the}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00011}00011 \textcolor{comment}{ * DARPA CHATS research program.}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00012}00012 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00013}00013 \textcolor{comment}{ * Redistribution and use in source and binary forms, with or without}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00014}00014 \textcolor{comment}{ * modification, are permitted provided that the following conditions}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00015}00015 \textcolor{comment}{ * are met:}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00016}00016 \textcolor{comment}{ * 1. Redistributions of source code must retain the above copyright}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00017}00017 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer.}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00018}00018 \textcolor{comment}{ * 2. Redistributions in binary form must reproduce the above copyright}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00019}00019 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer in the}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00020}00020 \textcolor{comment}{ *    documentation and/or other materials provided with the distribution.}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00021}00021 \textcolor{comment}{ * 3. The names of the authors may not be used to endorse or promote}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00022}00022 \textcolor{comment}{ *    products derived from this software without specific prior written}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00023}00023 \textcolor{comment}{ *    permission.}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00024}00024 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00025}00025 \textcolor{comment}{ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00026}00026 \textcolor{comment}{ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00027}00027 \textcolor{comment}{ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00028}00028 \textcolor{comment}{ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00029}00029 \textcolor{comment}{ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00030}00030 \textcolor{comment}{ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00031}00031 \textcolor{comment}{ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00032}00032 \textcolor{comment}{ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00033}00033 \textcolor{comment}{ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00034}00034 \textcolor{comment}{ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00035}00035 \textcolor{comment}{ * SUCH DAMAGE.}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00036}00036 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00037}00037 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00038}00038 \textcolor{preprocessor}{\#include <sys/cdefs.h>}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00039}\mbox{\hyperlink{geom__slice_8c_a8c3ef283470a68cd30afe9b8a72cb60f}{00039}} \mbox{\hyperlink{geom__slice_8c_a8c3ef283470a68cd30afe9b8a72cb60f}{\_\_FBSDID}}(\textcolor{stringliteral}{"{}\$FreeBSD\$"{}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00040}00040 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00041}00041 \textcolor{preprocessor}{\#include <sys/param.h>}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00042}00042 \textcolor{preprocessor}{\#include <sys/systm.h>}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00043}00043 \textcolor{preprocessor}{\#include <sys/kernel.h>}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00044}00044 \textcolor{preprocessor}{\#include <sys/malloc.h>}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00045}00045 \textcolor{preprocessor}{\#include <sys/bio.h>}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00046}00046 \textcolor{preprocessor}{\#include <sys/sysctl.h>}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00047}00047 \textcolor{preprocessor}{\#include <sys/proc.h>}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00048}00048 \textcolor{preprocessor}{\#include <sys/lock.h>}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00049}00049 \textcolor{preprocessor}{\#include <sys/mutex.h>}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00050}00050 \textcolor{preprocessor}{\#include <sys/errno.h>}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00051}00051 \textcolor{preprocessor}{\#include <sys/sbuf.h>}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00052}00052 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{geom_8h}{geom/geom.h}}>}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00053}00053 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{geom__slice_8h}{geom/geom\_slice.h}}>}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00054}00054 \textcolor{preprocessor}{\#include <machine/stdarg.h>}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00055}00055 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00056}\mbox{\hyperlink{geom__slice_8c_a61b65ab37f5c6af52dedc62aada790a8}{00056}} \textcolor{keyword}{static} \mbox{\hyperlink{geom_8h_a68544c65a4d728ce733305aeba2f335b}{g\_access\_t}} \mbox{\hyperlink{geom__slice_8c_a61b65ab37f5c6af52dedc62aada790a8}{g\_slice\_access}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00057}\mbox{\hyperlink{geom__slice_8c_aa607c4f903486bdf1e97134fb017e074}{00057}} \textcolor{keyword}{static} \mbox{\hyperlink{geom_8h_a2a6559adb145f83df6a58cfbc2be6759}{g\_start\_t}} \mbox{\hyperlink{geom__slice_8c_aa607c4f903486bdf1e97134fb017e074}{g\_slice\_start}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00058}00058 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00059}00059 \textcolor{keyword}{static} \textcolor{keyword}{struct }\mbox{\hyperlink{structg__slicer}{g\_slicer}} *}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00060}\mbox{\hyperlink{geom__slice_8c_adbc088077b7a25ea7e1234b5d7c90f3c}{00060}} \mbox{\hyperlink{geom__slice_8c_adbc088077b7a25ea7e1234b5d7c90f3c}{g\_slice\_alloc}}(\textcolor{keywordtype}{unsigned} \mbox{\hyperlink{structg__slicer_acdefe997cd393fd282b2375493582334}{nslice}}, \textcolor{keywordtype}{unsigned} scsize)}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00061}00061 \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00062}00062         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__slicer}{g\_slicer}} *gsp;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00063}00063 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00064}00064         gsp = \mbox{\hyperlink{geom_8h_a0f190247baa73dc863a79fea9d5f6b4f}{g\_malloc}}(\textcolor{keyword}{sizeof} *gsp, M\_WAITOK | M\_ZERO);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00065}00065         \textcolor{keywordflow}{if} (scsize > 0)}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00066}00066                 gsp-\/>\mbox{\hyperlink{structg__slicer_aa87a1eddcf05b70ee032fed3e1309e36}{softc}} = \mbox{\hyperlink{geom_8h_a0f190247baa73dc863a79fea9d5f6b4f}{g\_malloc}}(scsize, M\_WAITOK | M\_ZERO);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00067}00067         \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00068}00068                 gsp-\/>\mbox{\hyperlink{structg__slicer_aa87a1eddcf05b70ee032fed3e1309e36}{softc}} = NULL;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00069}00069         gsp-\/>\mbox{\hyperlink{structg__slicer_a687973b1d6e6cd411c354d378b8dd408}{slices}} = \mbox{\hyperlink{geom_8h_a0f190247baa73dc863a79fea9d5f6b4f}{g\_malloc}}(\mbox{\hyperlink{structg__slicer_acdefe997cd393fd282b2375493582334}{nslice}} * \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct} \mbox{\hyperlink{structg__slice}{g\_slice}}),}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00070}00070             M\_WAITOK | M\_ZERO);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00071}00071         gsp-\/>\mbox{\hyperlink{structg__slicer_acdefe997cd393fd282b2375493582334}{nslice}} = \mbox{\hyperlink{structg__slicer_acdefe997cd393fd282b2375493582334}{nslice}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00072}00072         \textcolor{keywordflow}{return} (gsp);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00073}00073 \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00074}00074 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00075}00075 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00076}\mbox{\hyperlink{geom__slice_8c_a453256497748a028afe9f3c0a4c835e6}{00076}} \mbox{\hyperlink{geom__slice_8c_a453256497748a028afe9f3c0a4c835e6}{g\_slice\_free}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structg__geom}{g\_geom}} *\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}})}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00077}00077 \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00078}00078         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__slicer}{g\_slicer}} *gsp;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00079}00079 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00080}00080         gsp = \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>\mbox{\hyperlink{structg__geom_aa83c08c83459420f6cbcfe64c6099466}{softc}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00081}00081         \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>\mbox{\hyperlink{structg__geom_aa83c08c83459420f6cbcfe64c6099466}{softc}} = NULL;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00082}00082 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00083}00083         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00084}00084 \textcolor{comment}{         * We can get multiple spoiled events before wither-\/washer}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00085}00085 \textcolor{comment}{         * detaches our consumer, so this can get called multiple}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00086}00086 \textcolor{comment}{         * times.}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00087}00087 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00088}00088         \textcolor{keywordflow}{if} (gsp == NULL)}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00089}00089                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00090}00090         \mbox{\hyperlink{geom_8h_ad9924deb20de7b40cb6cf06e5ae28855}{g\_free}}(gsp-\/>\mbox{\hyperlink{structg__slicer_a687973b1d6e6cd411c354d378b8dd408}{slices}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00091}00091         \textcolor{keywordflow}{if} (gsp-\/>\mbox{\hyperlink{structg__slicer_a35273c8e9ebdf22f462d18e79f7c0de1}{hotspot}} != NULL)}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00092}00092                 \mbox{\hyperlink{geom_8h_ad9924deb20de7b40cb6cf06e5ae28855}{g\_free}}(gsp-\/>\mbox{\hyperlink{structg__slicer_a35273c8e9ebdf22f462d18e79f7c0de1}{hotspot}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00093}00093         \textcolor{keywordflow}{if} (gsp-\/>\mbox{\hyperlink{structg__slicer_aa87a1eddcf05b70ee032fed3e1309e36}{softc}} != NULL)}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00094}00094                 \mbox{\hyperlink{geom_8h_ad9924deb20de7b40cb6cf06e5ae28855}{g\_free}}(gsp-\/>\mbox{\hyperlink{structg__slicer_aa87a1eddcf05b70ee032fed3e1309e36}{softc}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00095}00095         \mbox{\hyperlink{geom_8h_ad9924deb20de7b40cb6cf06e5ae28855}{g\_free}}(gsp);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00096}00096 \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00097}00097 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00098}00098 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00099}\mbox{\hyperlink{geom__slice_8c_a8c52240b24c5d9fd2d5d102a556fbb6c}{00099}} \mbox{\hyperlink{geom__slice_8c_a61b65ab37f5c6af52dedc62aada790a8}{g\_slice\_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{geom__slice_8c_source_l00100}00100 \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00101}00101         \textcolor{keywordtype}{int} error;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00102}00102         u\_int u;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00103}00103         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__geom}{g\_geom}} *\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00104}00104         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__consumer}{g\_consumer}} *\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00105}00105         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__provider}{g\_provider}} *pp2;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00106}00106         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__slicer}{g\_slicer}} *gsp;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00107}00107         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__slice}{g\_slice}} *gsl, *gsl2;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00108}00108 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00109}00109         \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}} = \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_afe5c92b8a2a9e4cdf1cab6daa96923c1}{geom}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00110}00110         \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}} = LIST\_FIRST(\&\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>consumer);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00111}00111         KASSERT (\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}} != NULL, (\textcolor{stringliteral}{"{}g\_slice\_access but no consumer"{}}));}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00112}00112         gsp = \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>\mbox{\hyperlink{structg__geom_aa83c08c83459420f6cbcfe64c6099466}{softc}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00113}00113         \textcolor{keywordflow}{if} (dr > 0 || dw > 0 || de > 0) \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00114}00114                 gsl = \&gsp-\/>\mbox{\hyperlink{structg__slicer_a687973b1d6e6cd411c354d378b8dd408}{slices}}[\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_af66d4470c5f372fdc0f71d66a65542be}{index}}];}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00115}00115                 \textcolor{keywordflow}{for} (u = 0; u < gsp-\/>\mbox{\hyperlink{structg__slicer_acdefe997cd393fd282b2375493582334}{nslice}}; u++) \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00116}00116                         gsl2 = \&gsp-\/>\mbox{\hyperlink{structg__slicer_a687973b1d6e6cd411c354d378b8dd408}{slices}}[u];}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00117}00117                         \textcolor{keywordflow}{if} (gsl2-\/>\mbox{\hyperlink{structg__slice_a11d00404d2ece1307dd27c8c4f9fbdd2}{length}} == 0)}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00118}00118                                 \textcolor{keywordflow}{continue};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00119}00119                         \textcolor{keywordflow}{if} (u == \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_af66d4470c5f372fdc0f71d66a65542be}{index}})}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00120}00120                                 \textcolor{keywordflow}{continue};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00121}00121                         \textcolor{keywordflow}{if} (gsl-\/>\mbox{\hyperlink{structg__slice_a0cf8543c61a8591889017a01766a0ace}{offset}} + gsl-\/>\mbox{\hyperlink{structg__slice_a11d00404d2ece1307dd27c8c4f9fbdd2}{length}} <= gsl2-\/>\mbox{\hyperlink{structg__slice_a0cf8543c61a8591889017a01766a0ace}{offset}})}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00122}00122                                 \textcolor{keywordflow}{continue};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00123}00123                         \textcolor{keywordflow}{if} (gsl2-\/>\mbox{\hyperlink{structg__slice_a0cf8543c61a8591889017a01766a0ace}{offset}} + gsl2-\/>\mbox{\hyperlink{structg__slice_a11d00404d2ece1307dd27c8c4f9fbdd2}{length}} <= gsl-\/>\mbox{\hyperlink{structg__slice_a0cf8543c61a8591889017a01766a0ace}{offset}})}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00124}00124                                 \textcolor{keywordflow}{continue};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00125}00125                         \textcolor{comment}{/* overlap */}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00126}00126                         pp2 = gsl2-\/>\mbox{\hyperlink{structg__slice_a18ba0122246266269b0399327021683c}{provider}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00127}00127                         \textcolor{keywordflow}{if} ((\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_abc6824f999ce8b17107d833c908c83e6}{acw}} + dw) > 0 \&\& pp2-\/>\mbox{\hyperlink{structg__provider_ae46b0f6e935dcb33a2a06556dbcbeb4c}{ace}} > 0)}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00128}00128                                 \textcolor{keywordflow}{return} (EPERM);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00129}00129                         \textcolor{keywordflow}{if} ((\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_ae46b0f6e935dcb33a2a06556dbcbeb4c}{ace}} + de) > 0 \&\& pp2-\/>\mbox{\hyperlink{structg__provider_abc6824f999ce8b17107d833c908c83e6}{acw}} > 0)}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00130}00130                                 \textcolor{keywordflow}{return} (EPERM);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00131}00131                 \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00132}00132         \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00133}00133         \textcolor{comment}{/* On first open, grab an extra "{}exclusive"{} bit */}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00134}00134         \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{geom__slice_8c_source_l00135}00135                 de++;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00136}00136         \textcolor{comment}{/* ... and let go of it on last close */}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00137}00137         \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{geom__slice_8c_source_l00138}00138                 de-\/-\/;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00139}00139         error = \mbox{\hyperlink{geom_8h_a27b7c72cc3bc5a4d07ce5976e1aa1b58}{g\_access}}(\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}, dr, dw, de);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00140}00140 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00141}00141         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00142}00142 \textcolor{comment}{         * Free the softc if all providers have been closed and this geom}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00143}00143 \textcolor{comment}{         * is being removed.}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00144}00144 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00145}00145         \textcolor{keywordflow}{if} (error == 0 \&\& (\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>\mbox{\hyperlink{structg__geom_afa218bd6b4ead71e6238ecd0577e1cc9}{flags}} \& \mbox{\hyperlink{geom_8h_ac5e457264b1579081f1d544c1eceb256}{G\_GEOM\_WITHER}}) != 0 \&\&}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00146}00146             (\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a40c3b377327dc07731eaf19340004033}{acr}} + \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a28f563df0299e7e1ab9a1121b6e483eb}{acw}} + \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_ace7a7f6859bd4cf00ff910bda08bb05a}{ace}}) == 0)}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00147}00147                 \mbox{\hyperlink{geom__slice_8c_a453256497748a028afe9f3c0a4c835e6}{g\_slice\_free}}(\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00148}00148 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00149}00149         \textcolor{keywordflow}{return} (error);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00150}00150 \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00151}00151 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00152}00152 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00153}00153 \textcolor{comment}{ * XXX: It should be possible to specify here if we should finish all of the}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00154}00154 \textcolor{comment}{ * XXX: bio, or only the non-\/hot bits.  This would get messy if there were}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00155}00155 \textcolor{comment}{ * XXX: two hot spots in the same bio, so for now we simply finish off the}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00156}00156 \textcolor{comment}{ * XXX: entire bio.  Modifying hot data on the way to disk is frowned on}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00157}00157 \textcolor{comment}{ * XXX: so making that considerably harder is not a bad idea anyway.}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00158}00158 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00159}00159 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00160}\mbox{\hyperlink{geom__slice_8c_a0b179c81cffaa3f0345cef10182793bb}{00160}} \mbox{\hyperlink{geom__slice_8c_a0b179c81cffaa3f0345cef10182793bb}{g\_slice\_finish\_hot}}(\textcolor{keyword}{struct} bio *\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}})}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00161}00161 \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00162}00162         \textcolor{keyword}{struct }bio *bp2;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00163}00163         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__geom}{g\_geom}} *\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00164}00164         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__consumer}{g\_consumer}} *\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00165}00165         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__slicer}{g\_slicer}} *gsp;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00166}00166         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__slice}{g\_slice}} *gsl;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00167}00167         \textcolor{keywordtype}{int} idx;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00168}00168 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00169}00169         KASSERT(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_to != NULL,}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00170}00170             (\textcolor{stringliteral}{"{}NULL bio\_to in g\_slice\_finish\_hot(\%p)"{}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}));}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00171}00171         KASSERT(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_from != NULL,}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00172}00172             (\textcolor{stringliteral}{"{}NULL bio\_from in g\_slice\_finish\_hot(\%p)"{}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}));}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00173}00173         \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}} = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_to-\/>geom;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00174}00174         gsp = \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>\mbox{\hyperlink{structg__geom_aa83c08c83459420f6cbcfe64c6099466}{softc}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00175}00175         \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}} = LIST\_FIRST(\&\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>consumer);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00176}00176         KASSERT(\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}} != NULL, (\textcolor{stringliteral}{"{}NULL consumer in g\_slice\_finish\_hot(\%p)"{}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}));}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00177}00177         idx = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_to-\/>index;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00178}00178         gsl = \&gsp-\/>\mbox{\hyperlink{structg__slicer_a687973b1d6e6cd411c354d378b8dd408}{slices}}[idx];}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00179}00179 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00180}00180         bp2 = \mbox{\hyperlink{geom_8h_a4ef26e4ec68e35e8f892692c524a3d4f}{g\_clone\_bio}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00181}00181         \textcolor{keywordflow}{if} (bp2 == NULL) \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00182}00182                 \mbox{\hyperlink{geom_8h_a0975be2dcd40a26a56a1a9bfc80433e1}{g\_io\_deliver}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, ENOMEM);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00183}00183                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00184}00184         \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00185}00185         \textcolor{keywordflow}{if} (bp2-\/>bio\_offset + bp2-\/>bio\_length > gsl-\/>\mbox{\hyperlink{structg__slice_a11d00404d2ece1307dd27c8c4f9fbdd2}{length}})}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00186}00186                 bp2-\/>bio\_length = gsl-\/>\mbox{\hyperlink{structg__slice_a11d00404d2ece1307dd27c8c4f9fbdd2}{length}} -\/ bp2-\/>bio\_offset;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00187}00187         bp2-\/>bio\_done = \mbox{\hyperlink{geom_8h_a3b40808daecd7db79de16471ac14397a}{g\_std\_done}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00188}00188         bp2-\/>bio\_offset += gsl-\/>\mbox{\hyperlink{structg__slice_a0cf8543c61a8591889017a01766a0ace}{offset}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00189}00189         \mbox{\hyperlink{geom_8h_aa433c0ba9e8cad7c7da1f9e17b46eb7a}{g\_io\_request}}(bp2, \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00190}00190         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00191}00191 \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00192}00192 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00193}00193 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00194}\mbox{\hyperlink{geom__slice_8c_a8da30ebab510c17a829f407a765737f0}{00194}} \mbox{\hyperlink{geom__slice_8c_a8da30ebab510c17a829f407a765737f0}{g\_slice\_done}}(\textcolor{keyword}{struct} bio *\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}})}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00195}00195 \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00196}00196 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00197}00197         KASSERT(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_cmd == BIO\_GETATTR \&\&}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00198}00198             strcmp(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_attribute, \textcolor{stringliteral}{"{}GEOM::ident"{}}) == 0,}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00199}00199             (\textcolor{stringliteral}{"{}bio\_cmd=0x\%x bio\_attribute=\%s"{}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_cmd, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_attribute));}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00200}00200 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00201}00201         \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_error == 0 \&\& \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_data[0] != \textcolor{charliteral}{'\(\backslash\)0'}) \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00202}00202                 \textcolor{keywordtype}{char} idx[8];}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00203}00203 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00204}00204                 \textcolor{comment}{/* Add index to the ident received. */}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00205}00205                 snprintf(idx, \textcolor{keyword}{sizeof}(idx), \textcolor{stringliteral}{"{}s\%d"{}},}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00206}00206                     \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_parent-\/>bio\_to-\/>index);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00207}00207                 \textcolor{keywordflow}{if} (strlcat(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_data, idx, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_length) >=}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00208}00208                     \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_length) \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00209}00209                         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_error = EFAULT;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00210}00210                 \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00211}00211         \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00212}00212         \mbox{\hyperlink{geom_8h_a3b40808daecd7db79de16471ac14397a}{g\_std\_done}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00213}00213 \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00214}00214 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00215}00215 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00216}\mbox{\hyperlink{geom__slice_8c_abdef9c92d54f7147d63f93575086326f}{00216}} \mbox{\hyperlink{geom__slice_8c_aa607c4f903486bdf1e97134fb017e074}{g\_slice\_start}}(\textcolor{keyword}{struct} bio *\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}})}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00217}00217 \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00218}00218         \textcolor{keyword}{struct }bio *bp2;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00219}00219         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__provider}{g\_provider}} *\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00220}00220         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__geom}{g\_geom}} *\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00221}00221         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__consumer}{g\_consumer}} *\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00222}00222         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__slicer}{g\_slicer}} *gsp;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00223}00223         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__slice}{g\_slice}} *gsl;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00224}00224         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__slice__hot}{g\_slice\_hot}} *ghp;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00225}00225         \textcolor{keywordtype}{int} idx, error;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00226}00226         u\_int m\_index;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00227}00227         off\_t t;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00228}00228 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00229}00229         \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}} = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_to;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00230}00230         \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}} = \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_afe5c92b8a2a9e4cdf1cab6daa96923c1}{geom}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00231}00231         gsp = \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>\mbox{\hyperlink{structg__geom_aa83c08c83459420f6cbcfe64c6099466}{softc}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00232}00232         \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}} = LIST\_FIRST(\&\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>consumer);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00233}00233         idx = \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_af66d4470c5f372fdc0f71d66a65542be}{index}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00234}00234         gsl = \&gsp-\/>\mbox{\hyperlink{structg__slicer_a687973b1d6e6cd411c354d378b8dd408}{slices}}[idx];}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00235}00235         \textcolor{keywordflow}{switch}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_cmd) \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00236}00236         \textcolor{keywordflow}{case} BIO\_READ:}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00237}00237         \textcolor{keywordflow}{case} BIO\_WRITE:}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00238}00238         \textcolor{keywordflow}{case} BIO\_DELETE:}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00239}00239                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_offset > gsl-\/>\mbox{\hyperlink{structg__slice_a11d00404d2ece1307dd27c8c4f9fbdd2}{length}}) \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00240}00240                         \mbox{\hyperlink{geom_8h_a0975be2dcd40a26a56a1a9bfc80433e1}{g\_io\_deliver}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, EINVAL); \textcolor{comment}{/* XXX: EWHAT ? */}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00241}00241                         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00242}00242                 \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00243}00243                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00244}00244 \textcolor{comment}{                 * Check if we collide with any hot spaces, and call the}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00245}00245 \textcolor{comment}{                 * method once if so.}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00246}00246 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00247}00247                 t = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_offset + gsl-\/>\mbox{\hyperlink{structg__slice_a0cf8543c61a8591889017a01766a0ace}{offset}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00248}00248                 \textcolor{keywordflow}{for} (m\_index = 0; m\_index < gsp-\/>\mbox{\hyperlink{structg__slicer_ae82adb81610bd5acb1e577886734c032}{nhotspot}}; m\_index++) \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00249}00249                         ghp = \&gsp-\/>\mbox{\hyperlink{structg__slicer_a35273c8e9ebdf22f462d18e79f7c0de1}{hotspot}}[m\_index];}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00250}00250                         \textcolor{keywordflow}{if} (t >= ghp-\/>\mbox{\hyperlink{structg__slice__hot_af4e9267e6cd1c75c9c60e1af83e47325}{offset}} + ghp-\/>\mbox{\hyperlink{structg__slice__hot_ae838243bc6c175545e400c353e7120e6}{length}})}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00251}00251                                 \textcolor{keywordflow}{continue};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00252}00252                         \textcolor{keywordflow}{if} (t + \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_length <= ghp-\/>\mbox{\hyperlink{structg__slice__hot_af4e9267e6cd1c75c9c60e1af83e47325}{offset}})}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00253}00253                                 \textcolor{keywordflow}{continue};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00254}00254                         \textcolor{keywordflow}{switch}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_cmd) \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00255}00255                         \textcolor{keywordflow}{case} BIO\_READ:          idx = ghp-\/>\mbox{\hyperlink{structg__slice__hot_add3c92524a13818377536ca84e23ed46}{ract}}; \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00256}00256                         \textcolor{keywordflow}{case} BIO\_WRITE:         idx = ghp-\/>\mbox{\hyperlink{structg__slice__hot_aa51acbf40dad52f8ce74525d0f62066d}{wact}}; \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00257}00257                         \textcolor{keywordflow}{case} BIO\_DELETE:        idx = ghp-\/>\mbox{\hyperlink{structg__slice__hot_a44c78543eb4db857a9062466beea228a}{dact}}; \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00258}00258                         \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00259}00259                         \textcolor{keywordflow}{switch}(idx) \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00260}00260                         \textcolor{keywordflow}{case} \mbox{\hyperlink{geom__slice_8h_a1be9f53599eb1b30a35edbf79107d272}{G\_SLICE\_HOT\_ALLOW}}:}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00261}00261                                 \textcolor{comment}{/* Fall out and continue normal processing */}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00262}00262                                 \textcolor{keywordflow}{continue};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00263}00263                         \textcolor{keywordflow}{case} \mbox{\hyperlink{geom__slice_8h_a888f29f8ae7cd43822ad476871fb8258}{G\_SLICE\_HOT\_DENY}}:}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00264}00264                                 \mbox{\hyperlink{geom_8h_a0975be2dcd40a26a56a1a9bfc80433e1}{g\_io\_deliver}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, EROFS);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00265}00265                                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00266}00266                         \textcolor{keywordflow}{case} \mbox{\hyperlink{geom__slice_8h_a7d9f3f74d0a328fb6cbb1e9113b80814}{G\_SLICE\_HOT\_START}}:}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00267}00267                                 error = gsp-\/>\mbox{\hyperlink{structg__slicer_aca53ade579dba467cd3654122f4df3bc}{start}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00268}00268                                 \textcolor{keywordflow}{if} (error \&\& error != EJUSTRETURN)}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00269}00269                                         \mbox{\hyperlink{geom_8h_a0975be2dcd40a26a56a1a9bfc80433e1}{g\_io\_deliver}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, error);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00270}00270                                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00271}00271                         \textcolor{keywordflow}{case} \mbox{\hyperlink{geom__slice_8h_ac19c812ae4ba0eae0d69966975bc737c}{G\_SLICE\_HOT\_CALL}}:}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00272}00272                                 error = \mbox{\hyperlink{geom_8h_a196998b2923eb556355a617daaef1879}{g\_post\_event}}(gsp-\/>\mbox{\hyperlink{structg__slicer_a66cdca06487e135907cc96bf57bdae50}{hot}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, M\_NOWAIT,}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00273}00273                                     \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}, NULL);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00274}00274                                 \textcolor{keywordflow}{if} (error)}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00275}00275                                         \mbox{\hyperlink{geom_8h_a0975be2dcd40a26a56a1a9bfc80433e1}{g\_io\_deliver}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, error);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00276}00276                                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00277}00277                         \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00278}00278                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00279}00279                 \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00280}00280                 bp2 = \mbox{\hyperlink{geom_8h_a4ef26e4ec68e35e8f892692c524a3d4f}{g\_clone\_bio}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00281}00281                 \textcolor{keywordflow}{if} (bp2 == NULL) \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00282}00282                         \mbox{\hyperlink{geom_8h_a0975be2dcd40a26a56a1a9bfc80433e1}{g\_io\_deliver}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, ENOMEM);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00283}00283                         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00284}00284                 \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00285}00285                 \textcolor{keywordflow}{if} (bp2-\/>bio\_offset + bp2-\/>bio\_length > gsl-\/>\mbox{\hyperlink{structg__slice_a11d00404d2ece1307dd27c8c4f9fbdd2}{length}})}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00286}00286                         bp2-\/>bio\_length = gsl-\/>\mbox{\hyperlink{structg__slice_a11d00404d2ece1307dd27c8c4f9fbdd2}{length}} -\/ bp2-\/>bio\_offset;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00287}00287                 bp2-\/>bio\_done = \mbox{\hyperlink{geom_8h_a3b40808daecd7db79de16471ac14397a}{g\_std\_done}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00288}00288                 bp2-\/>bio\_offset += gsl-\/>\mbox{\hyperlink{structg__slice_a0cf8543c61a8591889017a01766a0ace}{offset}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00289}00289                 \mbox{\hyperlink{geom_8h_aa433c0ba9e8cad7c7da1f9e17b46eb7a}{g\_io\_request}}(bp2, \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00290}00290                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00291}00291         \textcolor{keywordflow}{case} BIO\_GETATTR:}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00292}00292                 \textcolor{comment}{/* Give the real method a chance to override */}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00293}00293                 \textcolor{keywordflow}{if} (gsp-\/>\mbox{\hyperlink{structg__slicer_aca53ade579dba467cd3654122f4df3bc}{start}} != NULL \&\& gsp-\/>\mbox{\hyperlink{structg__slicer_aca53ade579dba467cd3654122f4df3bc}{start}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}))}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00294}00294                         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00295}00295                 \textcolor{keywordflow}{if} (!strcmp(\textcolor{stringliteral}{"{}GEOM::ident"{}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_attribute)) \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00296}00296                         bp2 = \mbox{\hyperlink{geom_8h_a4ef26e4ec68e35e8f892692c524a3d4f}{g\_clone\_bio}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00297}00297                         \textcolor{keywordflow}{if} (bp2 == NULL) \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00298}00298                                 \mbox{\hyperlink{geom_8h_a0975be2dcd40a26a56a1a9bfc80433e1}{g\_io\_deliver}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, ENOMEM);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00299}00299                                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00300}00300                         \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00301}00301                         bp2-\/>bio\_done = \mbox{\hyperlink{geom__slice_8c_a8da30ebab510c17a829f407a765737f0}{g\_slice\_done}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00302}00302                         \mbox{\hyperlink{geom_8h_aa433c0ba9e8cad7c7da1f9e17b46eb7a}{g\_io\_request}}(bp2, \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00303}00303                         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00304}00304                 \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00305}00305                 \textcolor{keywordflow}{if} (!strcmp(\textcolor{stringliteral}{"{}GEOM::kerneldump"{}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_attribute)) \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00306}00306                         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__kerneldump}{g\_kerneldump}} *gkd;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00307}00307 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00308}00308                         gkd = (\textcolor{keyword}{struct }\mbox{\hyperlink{structg__kerneldump}{g\_kerneldump}} *)\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_data;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00309}00309                         gkd-\/>\mbox{\hyperlink{structg__kerneldump_aa2f370e534c376b02e72f8c17d514482}{offset}} += gsp-\/>\mbox{\hyperlink{structg__slicer_a687973b1d6e6cd411c354d378b8dd408}{slices}}[idx].\mbox{\hyperlink{structg__slice_a0cf8543c61a8591889017a01766a0ace}{offset}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00310}00310                         if (gkd-\/>\mbox{\hyperlink{structg__kerneldump_a5dc5dec9fd5d176d53a0de31cfc6127b}{length}} > gsp-\/>\mbox{\hyperlink{structg__slicer_a687973b1d6e6cd411c354d378b8dd408}{slices}}[idx].\mbox{\hyperlink{structg__slice_a11d00404d2ece1307dd27c8c4f9fbdd2}{length}})}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00311}00311                                 gkd-\/>\mbox{\hyperlink{structg__kerneldump_a5dc5dec9fd5d176d53a0de31cfc6127b}{length}} = gsp-\/>\mbox{\hyperlink{structg__slicer_a687973b1d6e6cd411c354d378b8dd408}{slices}}[idx].\mbox{\hyperlink{structg__slice_a11d00404d2ece1307dd27c8c4f9fbdd2}{length}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00312}00312                         \textcolor{comment}{/* now, pass it on downwards... */}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00313}00313                 \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00314}00314                 \textcolor{comment}{/* FALLTHROUGH */}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00315}00315         \textcolor{keywordflow}{case} BIO\_SPEEDUP:}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00316}00316         \textcolor{keywordflow}{case} BIO\_FLUSH:}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00317}00317                 bp2 = \mbox{\hyperlink{geom_8h_a4ef26e4ec68e35e8f892692c524a3d4f}{g\_clone\_bio}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00318}00318                 \textcolor{keywordflow}{if} (bp2 == NULL) \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00319}00319                         \mbox{\hyperlink{geom_8h_a0975be2dcd40a26a56a1a9bfc80433e1}{g\_io\_deliver}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, ENOMEM);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00320}00320                         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00321}00321                 \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00322}00322                 bp2-\/>bio\_done = \mbox{\hyperlink{geom_8h_a3b40808daecd7db79de16471ac14397a}{g\_std\_done}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00323}00323                 \mbox{\hyperlink{geom_8h_aa433c0ba9e8cad7c7da1f9e17b46eb7a}{g\_io\_request}}(bp2, \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00324}00324                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00325}00325         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00326}00326                 \mbox{\hyperlink{geom_8h_a0975be2dcd40a26a56a1a9bfc80433e1}{g\_io\_deliver}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, EOPNOTSUPP);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00327}00327                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00328}00328         \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00329}00329 \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00330}00330 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00331}00331 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00332}\mbox{\hyperlink{geom__slice_8c_ad06abf9ff8d3c306b28f1515197c014a}{00332}} \mbox{\hyperlink{geom__slice_8c_ad06abf9ff8d3c306b28f1515197c014a}{g\_slice\_dumpconf}}(\textcolor{keyword}{struct} sbuf *\mbox{\hyperlink{g__part__if_8m_a4c23eb4bab5aa5d69bd84384b94d1f79}{sb}}, \textcolor{keyword}{const} \textcolor{keywordtype}{char} *\mbox{\hyperlink{g__part__if_8m_a9a0d9ba518bc8db9a623d0a6ab81f81c}{indent}}, \textcolor{keyword}{struct} \mbox{\hyperlink{structg__geom}{g\_geom}} *\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}, \textcolor{keyword}{struct} \mbox{\hyperlink{structg__consumer}{g\_consumer}} *\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}, \textcolor{keyword}{struct} \mbox{\hyperlink{structg__provider}{g\_provider}} *\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}})}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00333}00333 \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00334}00334         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__slicer}{g\_slicer}} *gsp;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00335}00335 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00336}00336         gsp = \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>\mbox{\hyperlink{structg__geom_aa83c08c83459420f6cbcfe64c6099466}{softc}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00337}00337         \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_a9a0d9ba518bc8db9a623d0a6ab81f81c}{indent}} == NULL) \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00338}00338                 sbuf\_printf(\mbox{\hyperlink{g__part__if_8m_a4c23eb4bab5aa5d69bd84384b94d1f79}{sb}}, \textcolor{stringliteral}{"{} i \%u"{}}, \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_af66d4470c5f372fdc0f71d66a65542be}{index}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00339}00339                 sbuf\_printf(\mbox{\hyperlink{g__part__if_8m_a4c23eb4bab5aa5d69bd84384b94d1f79}{sb}}, \textcolor{stringliteral}{"{} o \%ju"{}}, }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00340}00340                     (uintmax\_t)gsp-\/>\mbox{\hyperlink{structg__slicer_a687973b1d6e6cd411c354d378b8dd408}{slices}}[\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_af66d4470c5f372fdc0f71d66a65542be}{index}}].\mbox{\hyperlink{structg__slice_a0cf8543c61a8591889017a01766a0ace}{offset}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00341}00341                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00342}00342         \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00343}00343         \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}} != NULL) \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00344}00344                 sbuf\_printf(\mbox{\hyperlink{g__part__if_8m_a4c23eb4bab5aa5d69bd84384b94d1f79}{sb}}, \textcolor{stringliteral}{"{}\%s<index>\%u</index>\(\backslash\)n"{}}, \mbox{\hyperlink{g__part__if_8m_a9a0d9ba518bc8db9a623d0a6ab81f81c}{indent}}, \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_af66d4470c5f372fdc0f71d66a65542be}{index}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00345}00345                 sbuf\_printf(\mbox{\hyperlink{g__part__if_8m_a4c23eb4bab5aa5d69bd84384b94d1f79}{sb}}, \textcolor{stringliteral}{"{}\%s<length>\%ju</length>\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00346}00346                     \mbox{\hyperlink{g__part__if_8m_a9a0d9ba518bc8db9a623d0a6ab81f81c}{indent}}, (uintmax\_t)gsp-\/>\mbox{\hyperlink{structg__slicer_a687973b1d6e6cd411c354d378b8dd408}{slices}}[\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_af66d4470c5f372fdc0f71d66a65542be}{index}}].\mbox{\hyperlink{structg__slice_a11d00404d2ece1307dd27c8c4f9fbdd2}{length}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00347}00347                 sbuf\_printf(\mbox{\hyperlink{g__part__if_8m_a4c23eb4bab5aa5d69bd84384b94d1f79}{sb}}, \textcolor{stringliteral}{"{}\%s<seclength>\%ju</seclength>\(\backslash\)n"{}}, \mbox{\hyperlink{g__part__if_8m_a9a0d9ba518bc8db9a623d0a6ab81f81c}{indent}},}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00348}00348                     (uintmax\_t)gsp-\/>\mbox{\hyperlink{structg__slicer_a687973b1d6e6cd411c354d378b8dd408}{slices}}[\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_af66d4470c5f372fdc0f71d66a65542be}{index}}].\mbox{\hyperlink{structg__slice_a11d00404d2ece1307dd27c8c4f9fbdd2}{length}} / 512);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00349}00349                 sbuf\_printf(\mbox{\hyperlink{g__part__if_8m_a4c23eb4bab5aa5d69bd84384b94d1f79}{sb}}, \textcolor{stringliteral}{"{}\%s<offset>\%ju</offset>\(\backslash\)n"{}}, \mbox{\hyperlink{g__part__if_8m_a9a0d9ba518bc8db9a623d0a6ab81f81c}{indent}},}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00350}00350                     (uintmax\_t)gsp-\/>\mbox{\hyperlink{structg__slicer_a687973b1d6e6cd411c354d378b8dd408}{slices}}[\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_af66d4470c5f372fdc0f71d66a65542be}{index}}].\mbox{\hyperlink{structg__slice_a0cf8543c61a8591889017a01766a0ace}{offset}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00351}00351                 sbuf\_printf(\mbox{\hyperlink{g__part__if_8m_a4c23eb4bab5aa5d69bd84384b94d1f79}{sb}}, \textcolor{stringliteral}{"{}\%s<secoffset>\%ju</secoffset>\(\backslash\)n"{}}, \mbox{\hyperlink{g__part__if_8m_a9a0d9ba518bc8db9a623d0a6ab81f81c}{indent}},}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00352}00352                     (uintmax\_t)gsp-\/>\mbox{\hyperlink{structg__slicer_a687973b1d6e6cd411c354d378b8dd408}{slices}}[\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_af66d4470c5f372fdc0f71d66a65542be}{index}}].\mbox{\hyperlink{structg__slice_a0cf8543c61a8591889017a01766a0ace}{offset}} / 512);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00353}00353         \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00354}00354 \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00355}00355 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00356}00356 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00357}\mbox{\hyperlink{geom__slice_8c_aca4428bf16e4be4644b9aeab957f13bc}{00357}} \mbox{\hyperlink{geom__slice_8c_aca4428bf16e4be4644b9aeab957f13bc}{g\_slice\_config}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structg__geom}{g\_geom}} *\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}, u\_int idx, \textcolor{keywordtype}{int} how, off\_t \mbox{\hyperlink{g__raid__tr__if_8m_ad5f0842c40c7e46344fd8df70187fa0f}{offset}}, off\_t \mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}}, u\_int sectorsize, \textcolor{keyword}{const} \textcolor{keywordtype}{char} *fmt, ...)}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00358}00358 \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00359}00359         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__provider}{g\_provider}} *\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}, *pp2;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00360}00360         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__slicer}{g\_slicer}} *gsp;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00361}00361         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__slice}{g\_slice}} *gsl;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00362}00362         va\_list ap;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00363}00363         \textcolor{keyword}{struct }sbuf *\mbox{\hyperlink{g__part__if_8m_a4c23eb4bab5aa5d69bd84384b94d1f79}{sb}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00364}00364         \textcolor{keywordtype}{int} acc;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00365}00365 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00366}00366         \mbox{\hyperlink{geom_8h_a7588d7ea7fbf7180b345df84b8797166}{g\_trace}}(\mbox{\hyperlink{geom_8h_a7f1804ff1a11f763a1ab5bdbd3e1287c}{G\_T\_TOPOLOGY}}, \textcolor{stringliteral}{"{}g\_slice\_config(\%s, \%d, \%d)"{}},}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00367}00367              \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>\mbox{\hyperlink{structg__geom_af64450500f1fea18f639b191a5017107}{name}}, idx, how);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00368}00368         \mbox{\hyperlink{geom_8h_a1898dc8c812faa5de231ab840e8562bf}{g\_topology\_assert}}();}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00369}00369         gsp = \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>\mbox{\hyperlink{structg__geom_aa83c08c83459420f6cbcfe64c6099466}{softc}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00370}00370         \textcolor{keywordflow}{if} (idx >= gsp-\/>\mbox{\hyperlink{structg__slicer_acdefe997cd393fd282b2375493582334}{nslice}})}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00371}00371                 \textcolor{keywordflow}{return}(EINVAL);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00372}00372         gsl = \&gsp-\/>\mbox{\hyperlink{structg__slicer_a687973b1d6e6cd411c354d378b8dd408}{slices}}[idx];}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00373}00373         \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}} = gsl-\/>\mbox{\hyperlink{structg__slice_a18ba0122246266269b0399327021683c}{provider}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00374}00374         \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}} != NULL)}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00375}00375                 acc = \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a62d7db6055318331bae725b44d58c140}{acr}} + \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_abc6824f999ce8b17107d833c908c83e6}{acw}} + \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_ae46b0f6e935dcb33a2a06556dbcbeb4c}{ace}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00376}00376         \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00377}00377                 acc = 0;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00378}00378         \textcolor{keywordflow}{if} (acc != 0 \&\& how != \mbox{\hyperlink{geom__slice_8h_ab1b2c519df001a93387a5d1e9de00029}{G\_SLICE\_CONFIG\_FORCE}}) \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00379}00379                 \textcolor{keywordflow}{if} (length < gsl-\/>\mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}})}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00380}00380                         \textcolor{keywordflow}{return}(EBUSY);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00381}00381                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__raid__tr__if_8m_ad5f0842c40c7e46344fd8df70187fa0f}{offset}} != gsl-\/>\mbox{\hyperlink{structg__slice_a0cf8543c61a8591889017a01766a0ace}{offset}})}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00382}00382                         \textcolor{keywordflow}{return}(EBUSY);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00383}00383         \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00384}00384         \textcolor{comment}{/* XXX: check offset + length <= MEDIASIZE */}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00385}00385         \textcolor{keywordflow}{if} (how == \mbox{\hyperlink{geom__slice_8h_ad73f8aacc440e6155cb0ae6577da1607}{G\_SLICE\_CONFIG\_CHECK}})}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00386}00386                 \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00387}00387         gsl-\/>\mbox{\hyperlink{structg__slice_a11d00404d2ece1307dd27c8c4f9fbdd2}{length}} = \mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00388}00388         gsl-\/>\mbox{\hyperlink{structg__slice_a0cf8543c61a8591889017a01766a0ace}{offset}} = \mbox{\hyperlink{g__raid__tr__if_8m_ad5f0842c40c7e46344fd8df70187fa0f}{offset}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00389}00389         gsl-\/>\mbox{\hyperlink{structg__slice_a404a5b75c6dd36d333ccdf2dfb1a8119}{sectorsize}} = sectorsize;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00390}00390         \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}} == 0) \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00391}00391                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}} == NULL)}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00392}00392                         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00393}00393                 \textcolor{keywordflow}{if} (bootverbose)}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00394}00394                         printf(\textcolor{stringliteral}{"{}GEOM: Deconfigure \%s\(\backslash\)n"{}}, \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a2bffb416ee58cf4df7839c6fd5ec004a}{name}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00395}00395                 \mbox{\hyperlink{geom_8h_a164882713025c4e0cc58b1ac8501bcf0}{g\_wither\_provider}}(\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}, ENXIO);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00396}00396                 gsl-\/>\mbox{\hyperlink{structg__slice_a18ba0122246266269b0399327021683c}{provider}} = NULL;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00397}00397                 gsp-\/>\mbox{\hyperlink{structg__slicer_acb073222ee33b2e3eeb69ab429dd8dcf}{nprovider}}-\/-\/;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00398}00398                 \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00399}00399         \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00400}00400         \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}} != NULL) \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00401}00401                 \textcolor{keywordflow}{if} (bootverbose)}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00402}00402                         printf(\textcolor{stringliteral}{"{}GEOM: Reconfigure \%s, start \%jd length \%jd end \%jd\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00403}00403                             \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a2bffb416ee58cf4df7839c6fd5ec004a}{name}}, (intmax\_t)\mbox{\hyperlink{g__raid__tr__if_8m_ad5f0842c40c7e46344fd8df70187fa0f}{offset}}, (intmax\_t)\mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}},}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00404}00404                             (intmax\_t)(\mbox{\hyperlink{g__raid__tr__if_8m_ad5f0842c40c7e46344fd8df70187fa0f}{offset}} + \mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}} -\/ 1));}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00405}00405                 \mbox{\hyperlink{geom_8h_a72d479d3ccd8dec427b97c90557f3a4f}{g\_resize\_provider}}(\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}, gsl-\/>\mbox{\hyperlink{structg__slice_a11d00404d2ece1307dd27c8c4f9fbdd2}{length}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00406}00406                 \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00407}00407         \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00408}00408         \mbox{\hyperlink{g__part__if_8m_a4c23eb4bab5aa5d69bd84384b94d1f79}{sb}} = sbuf\_new\_auto();}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00409}00409         va\_start(ap, fmt);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00410}00410         sbuf\_vprintf(\mbox{\hyperlink{g__part__if_8m_a4c23eb4bab5aa5d69bd84384b94d1f79}{sb}}, fmt, ap);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00411}00411         va\_end(ap);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00412}00412         sbuf\_finish(\mbox{\hyperlink{g__part__if_8m_a4c23eb4bab5aa5d69bd84384b94d1f79}{sb}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00413}00413         \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"{}}, sbuf\_data(\mbox{\hyperlink{g__part__if_8m_a4c23eb4bab5aa5d69bd84384b94d1f79}{sb}}));}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00414}00414         pp2 = LIST\_FIRST(\&\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>consumer)-\/>provider;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00415}00415         \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a0ae62d15d2436a80825accbdb3cd6149}{stripesize}} = pp2-\/>\mbox{\hyperlink{structg__provider_a0ae62d15d2436a80825accbdb3cd6149}{stripesize}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00416}00416         \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_ac6baefca9562013cb451aee0a665e378}{stripeoffset}} = pp2-\/>\mbox{\hyperlink{structg__provider_ac6baefca9562013cb451aee0a665e378}{stripeoffset}} + \mbox{\hyperlink{g__raid__tr__if_8m_ad5f0842c40c7e46344fd8df70187fa0f}{offset}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00417}00417         \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a0ae62d15d2436a80825accbdb3cd6149}{stripesize}} > 0)}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00418}00418                 \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_ac6baefca9562013cb451aee0a665e378}{stripeoffset}} \%= \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a0ae62d15d2436a80825accbdb3cd6149}{stripesize}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00419}00419         \textcolor{keywordflow}{if} (gsp-\/>\mbox{\hyperlink{structg__slicer_ae82adb81610bd5acb1e577886734c032}{nhotspot}} == 0) \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00420}00420                 \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a2d2060ee918007b601780f93a39c30de}{flags}} |= pp2-\/>\mbox{\hyperlink{structg__provider_a2d2060ee918007b601780f93a39c30de}{flags}} \& \mbox{\hyperlink{geom_8h_a82547ff81813e6e37dd57c36e530c7e2}{G\_PF\_ACCEPT\_UNMAPPED}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00421}00421                 \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a2d2060ee918007b601780f93a39c30de}{flags}} |= \mbox{\hyperlink{geom_8h_a486656f757680c7ff0c7ca06b643eb2d}{G\_PF\_DIRECT\_SEND}} | \mbox{\hyperlink{geom_8h_a36e660dabad70e0fd2439be3ddca8d47}{G\_PF\_DIRECT\_RECEIVE}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00422}00422         \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00423}00423         \textcolor{keywordflow}{if} (0 \&\& bootverbose)}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00424}00424                 printf(\textcolor{stringliteral}{"{}GEOM: Configure \%s, start \%jd length \%jd end \%jd\(\backslash\)n"{}},}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00425}00425                     \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a2bffb416ee58cf4df7839c6fd5ec004a}{name}}, (intmax\_t)\mbox{\hyperlink{g__raid__tr__if_8m_ad5f0842c40c7e46344fd8df70187fa0f}{offset}}, (intmax\_t)\mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}},}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00426}00426                     (intmax\_t)(\mbox{\hyperlink{g__raid__tr__if_8m_ad5f0842c40c7e46344fd8df70187fa0f}{offset}} + \mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}} -\/ 1));}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00427}00427         \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_af66d4470c5f372fdc0f71d66a65542be}{index}} = idx;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00428}00428         \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a8f47c464c78aa91fa4ca5143ed3cd15e}{mediasize}} = gsl-\/>\mbox{\hyperlink{structg__slice_a11d00404d2ece1307dd27c8c4f9fbdd2}{length}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00429}00429         \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_aea3cd43d41461790b8d0afcd8c49a355}{sectorsize}} = gsl-\/>\mbox{\hyperlink{structg__slice_a404a5b75c6dd36d333ccdf2dfb1a8119}{sectorsize}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00430}00430         gsl-\/>\mbox{\hyperlink{structg__slice_a18ba0122246266269b0399327021683c}{provider}} = \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00431}00431         gsp-\/>\mbox{\hyperlink{structg__slicer_acb073222ee33b2e3eeb69ab429dd8dcf}{nprovider}}++;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00432}00432         \mbox{\hyperlink{geom_8h_a7a46b49361266e9bb4b1441aade2c48f}{g\_error\_provider}}(\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}, 0);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00433}00433         sbuf\_delete(\mbox{\hyperlink{g__part__if_8m_a4c23eb4bab5aa5d69bd84384b94d1f79}{sb}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00434}00434         \textcolor{keywordflow}{return}(0);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00435}00435 \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00436}00436 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00437}00437 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00438}00438 \textcolor{comment}{ * Configure "{}hotspots"{}.  A hotspot is a piece of the parent device which}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00439}00439 \textcolor{comment}{ * this particular slicer cares about for some reason.  Typically because}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00440}00440 \textcolor{comment}{ * it contains meta-\/data used to configure the slicer.}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00441}00441 \textcolor{comment}{ * A hotspot is identified by its index number. The offset and length are}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00442}00442 \textcolor{comment}{ * relative to the parent device, and the three "{}?act"{} fields specify}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00443}00443 \textcolor{comment}{ * what action to take on BIO\_READ, BIO\_DELETE and BIO\_WRITE.}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00444}00444 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00445}00445 \textcolor{comment}{ * XXX: There may be a race relative to g\_slice\_start() here, if an existing}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00446}00446 \textcolor{comment}{ * XXX: hotspot is changed wile I/O is happening.  Should this become a problem}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00447}00447 \textcolor{comment}{ * XXX: we can protect the hotspot stuff with a mutex.}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00448}00448 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00449}00449 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00450}00450 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00451}\mbox{\hyperlink{geom__slice_8c_afc7eaa13bb561cef070772c40b8fbd62}{00451}} \mbox{\hyperlink{geom__slice_8c_afc7eaa13bb561cef070772c40b8fbd62}{g\_slice\_conf\_hot}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structg__geom}{g\_geom}} *\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}, u\_int idx, off\_t \mbox{\hyperlink{g__raid__tr__if_8m_ad5f0842c40c7e46344fd8df70187fa0f}{offset}}, off\_t \mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}}, \textcolor{keywordtype}{int} ract, \textcolor{keywordtype}{int} dact, \textcolor{keywordtype}{int} wact)}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00452}00452 \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00453}00453         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__slicer}{g\_slicer}} *gsp;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00454}00454         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__slice__hot}{g\_slice\_hot}} *gsl, *gsl2;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00455}00455         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__consumer}{g\_consumer}} *\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00456}00456         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__provider}{g\_provider}} *\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00457}00457 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00458}00458         \mbox{\hyperlink{geom_8h_a7588d7ea7fbf7180b345df84b8797166}{g\_trace}}(\mbox{\hyperlink{geom_8h_a7f1804ff1a11f763a1ab5bdbd3e1287c}{G\_T\_TOPOLOGY}}, \textcolor{stringliteral}{"{}g\_slice\_conf\_hot(\%s, idx: \%d, off: \%jd, len: \%jd)"{}},}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00459}00459             \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>\mbox{\hyperlink{structg__geom_af64450500f1fea18f639b191a5017107}{name}}, idx, (intmax\_t)\mbox{\hyperlink{g__raid__tr__if_8m_ad5f0842c40c7e46344fd8df70187fa0f}{offset}}, (intmax\_t)\mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00460}00460         \mbox{\hyperlink{geom_8h_a1898dc8c812faa5de231ab840e8562bf}{g\_topology\_assert}}();}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00461}00461         gsp = \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>\mbox{\hyperlink{structg__geom_aa83c08c83459420f6cbcfe64c6099466}{softc}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00462}00462         \textcolor{comment}{/* Deny unmapped I/O and direct dispatch if hotspots are used. */}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00463}00463         \textcolor{keywordflow}{if} (gsp-\/>\mbox{\hyperlink{structg__slicer_ae82adb81610bd5acb1e577886734c032}{nhotspot}} == 0) \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00464}00464                 LIST\_FOREACH(\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}, \&\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>provider, provider)}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00465}00465                         \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a2d2060ee918007b601780f93a39c30de}{flags}} \&= \string~(\mbox{\hyperlink{geom_8h_a82547ff81813e6e37dd57c36e530c7e2}{G\_PF\_ACCEPT\_UNMAPPED}} |}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00466}00466                             \mbox{\hyperlink{geom_8h_a486656f757680c7ff0c7ca06b643eb2d}{G\_PF\_DIRECT\_SEND}} | \mbox{\hyperlink{geom_8h_a36e660dabad70e0fd2439be3ddca8d47}{G\_PF\_DIRECT\_RECEIVE}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00467}00467                 LIST\_FOREACH(\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}, \&\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>consumer, consumer)}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00468}00468                         \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_acf792357913c0445233b71f8259764d9}{flags}} \&= \string~(\mbox{\hyperlink{geom_8h_a712586d00e1fe2a8069adfc048fee210}{G\_CF\_DIRECT\_SEND}} | \mbox{\hyperlink{geom_8h_a2184f2512ddb7a67ddbb71409cdd953f}{G\_CF\_DIRECT\_RECEIVE}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00469}00469         \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00470}00470         gsl = gsp-\/>\mbox{\hyperlink{structg__slicer_a35273c8e9ebdf22f462d18e79f7c0de1}{hotspot}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00471}00471         \textcolor{keywordflow}{if}(idx >= gsp-\/>\mbox{\hyperlink{structg__slicer_ae82adb81610bd5acb1e577886734c032}{nhotspot}}) \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00472}00472                 gsl2 = \mbox{\hyperlink{geom_8h_a0f190247baa73dc863a79fea9d5f6b4f}{g\_malloc}}((idx + 1) * \textcolor{keyword}{sizeof} *gsl2, M\_WAITOK | M\_ZERO);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00473}00473                 \textcolor{keywordflow}{if} (gsp-\/>\mbox{\hyperlink{structg__slicer_a35273c8e9ebdf22f462d18e79f7c0de1}{hotspot}} != NULL)}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00474}00474                         bcopy(gsp-\/>\mbox{\hyperlink{structg__slicer_a35273c8e9ebdf22f462d18e79f7c0de1}{hotspot}}, gsl2, gsp-\/>\mbox{\hyperlink{structg__slicer_ae82adb81610bd5acb1e577886734c032}{nhotspot}} * \textcolor{keyword}{sizeof} *gsl2);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00475}00475                 gsp-\/>\mbox{\hyperlink{structg__slicer_a35273c8e9ebdf22f462d18e79f7c0de1}{hotspot}} = gsl2;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00476}00476                 \textcolor{keywordflow}{if} (gsp-\/>\mbox{\hyperlink{structg__slicer_a35273c8e9ebdf22f462d18e79f7c0de1}{hotspot}} != NULL)}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00477}00477                         \mbox{\hyperlink{geom_8h_ad9924deb20de7b40cb6cf06e5ae28855}{g\_free}}(gsl);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00478}00478                 gsl = gsl2;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00479}00479                 gsp-\/>\mbox{\hyperlink{structg__slicer_ae82adb81610bd5acb1e577886734c032}{nhotspot}} = idx + 1;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00480}00480         \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00481}00481         gsl[idx].\mbox{\hyperlink{structg__slice__hot_af4e9267e6cd1c75c9c60e1af83e47325}{offset}} = \mbox{\hyperlink{g__raid__tr__if_8m_ad5f0842c40c7e46344fd8df70187fa0f}{offset}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00482}00482         gsl[idx].\mbox{\hyperlink{structg__slice__hot_ae838243bc6c175545e400c353e7120e6}{length}} = \mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00483}00483         KASSERT(!((ract | dact | wact) \& \mbox{\hyperlink{geom__slice_8h_a7d9f3f74d0a328fb6cbb1e9113b80814}{G\_SLICE\_HOT\_START}})}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00484}00484             || gsp-\/>\mbox{\hyperlink{structg__slicer_aca53ade579dba467cd3654122f4df3bc}{start}} != NULL, (\textcolor{stringliteral}{"{}G\_SLICE\_HOT\_START but no slice-\/>start"{}}));}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00485}00485         \textcolor{comment}{/* XXX: check that we \_have\_ a start function if HOT\_START specified */}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00486}00486         gsl[idx].\mbox{\hyperlink{structg__slice__hot_add3c92524a13818377536ca84e23ed46}{ract}} = ract;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00487}00487         gsl[idx].\mbox{\hyperlink{structg__slice__hot_a44c78543eb4db857a9062466beea228a}{dact}} = dact;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00488}00488         gsl[idx].\mbox{\hyperlink{structg__slice__hot_aa51acbf40dad52f8ce74525d0f62066d}{wact}} = wact;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00489}00489         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00490}00490 \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00491}00491 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00492}00492 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00493}\mbox{\hyperlink{geom__slice_8c_a4027c1bceba6cea24ab56fb0564276f2}{00493}} \mbox{\hyperlink{geom__slice_8c_a4027c1bceba6cea24ab56fb0564276f2}{g\_slice\_orphan}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structg__consumer}{g\_consumer}} *\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}})}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00494}00494 \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00495}00495         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__geom}{g\_geom}} *\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00496}00496 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00497}00497         \mbox{\hyperlink{geom_8h_a1898dc8c812faa5de231ab840e8562bf}{g\_topology\_assert}}();}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00498}00498         \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}} = \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a75734fc8cd22ffc4209c36cc0a459cba}{geom}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00499}00499         \mbox{\hyperlink{geom_8h_a7588d7ea7fbf7180b345df84b8797166}{g\_trace}}(\mbox{\hyperlink{geom_8h_a7f1804ff1a11f763a1ab5bdbd3e1287c}{G\_T\_TOPOLOGY}}, \textcolor{stringliteral}{"{}\%s(\%p/\%s)"{}}, \_\_func\_\_, \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}, \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>\mbox{\hyperlink{structg__geom_af64450500f1fea18f639b191a5017107}{name}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00500}00500         \mbox{\hyperlink{geom_8h_a87a0eb5de79ed5e49fcfec012f213c9b}{g\_wither\_geom}}(\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}, ENXIO);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00501}00501 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00502}00502         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00503}00503 \textcolor{comment}{         * We can safely free the softc now if there are no accesses,}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00504}00504 \textcolor{comment}{         * otherwise g\_slice\_access() will do that after the last close.}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00505}00505 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00506}00506         \textcolor{keywordflow}{if} ((\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a40c3b377327dc07731eaf19340004033}{acr}} + \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a28f563df0299e7e1ab9a1121b6e483eb}{acw}} + \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_ace7a7f6859bd4cf00ff910bda08bb05a}{ace}}) == 0)}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00507}00507                 \mbox{\hyperlink{geom__slice_8c_a453256497748a028afe9f3c0a4c835e6}{g\_slice\_free}}(\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00508}00508 \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00509}00509 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00510}00510 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00511}\mbox{\hyperlink{geom__slice_8c_a59485c0befa87323ae0134fdfade9359}{00511}} \mbox{\hyperlink{geom__slice_8c_a59485c0befa87323ae0134fdfade9359}{g\_slice\_spoiled}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structg__consumer}{g\_consumer}} *\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}})}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00512}00512 \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00513}00513 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00514}00514         \mbox{\hyperlink{geom_8h_a7588d7ea7fbf7180b345df84b8797166}{g\_trace}}(\mbox{\hyperlink{geom_8h_a7f1804ff1a11f763a1ab5bdbd3e1287c}{G\_T\_TOPOLOGY}}, \textcolor{stringliteral}{"{}\%s(\%p/\%s)"{}}, \_\_func\_\_, \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}, \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a75734fc8cd22ffc4209c36cc0a459cba}{geom}}-\/>\mbox{\hyperlink{structg__geom_af64450500f1fea18f639b191a5017107}{name}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00515}00515         \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_acf792357913c0445233b71f8259764d9}{flags}} |= \mbox{\hyperlink{geom_8h_aa8d4509af5fac49cbddf72c37146bb77}{G\_CF\_ORPHAN}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00516}00516         \mbox{\hyperlink{geom__slice_8c_a4027c1bceba6cea24ab56fb0564276f2}{g\_slice\_orphan}}(\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00517}00517 \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00518}00518 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00519}00519 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00520}\mbox{\hyperlink{geom__slice_8c_a90e1da1e190c0b307ac0ec710c7e595e}{00520}} \mbox{\hyperlink{geom__slice_8c_a90e1da1e190c0b307ac0ec710c7e595e}{g\_slice\_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{geom__slice_8c_source_l00521}00521 \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00522}00522 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00523}00523         \mbox{\hyperlink{geom__slice_8c_a59485c0befa87323ae0134fdfade9359}{g\_slice\_spoiled}}(LIST\_FIRST(\&\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>consumer));}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00524}00524         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00525}00525 \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00526}00526 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00527}00527 \textcolor{keyword}{struct }\mbox{\hyperlink{structg__geom}{g\_geom}} *}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00528}\mbox{\hyperlink{geom__slice_8c_aaf1282e05964a6882971c6eca3e1604b}{00528}} \mbox{\hyperlink{geom__slice_8c_aaf1282e05964a6882971c6eca3e1604b}{g\_slice\_new}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structg__class}{g\_class}} *\mbox{\hyperlink{g__raid__md__if_8m_a4f7502795edfd2493d3d223d0df33e1d}{mp}}, u\_int slices, \textcolor{keyword}{struct} \mbox{\hyperlink{structg__provider}{g\_provider}} *\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}, \textcolor{keyword}{struct} \mbox{\hyperlink{structg__consumer}{g\_consumer}} **cpp, \textcolor{keywordtype}{void} *extrap, \textcolor{keywordtype}{int} extra, \mbox{\hyperlink{geom__slice_8h_a3f2db6ee94577b1e359162d50ea7570a}{g\_slice\_start\_t}} *\mbox{\hyperlink{g__raid__tr__if_8m_a17b9425cc13d593841ed2c2054a14e26}{start}})}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00529}00529 \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00530}00530         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__geom}{g\_geom}} *\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00531}00531         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__slicer}{g\_slicer}} *gsp;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00532}00532         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__consumer}{g\_consumer}} *\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00533}00533         \textcolor{keywordtype}{void} **vp;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00534}00534         \textcolor{keywordtype}{int} error;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00535}00535 }
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00536}00536         \mbox{\hyperlink{geom_8h_a1898dc8c812faa5de231ab840e8562bf}{g\_topology\_assert}}();}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00537}00537         vp = (\textcolor{keywordtype}{void} **)extrap;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00538}00538         \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"{}}, \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a2bffb416ee58cf4df7839c6fd5ec004a}{name}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00539}00539         gsp = \mbox{\hyperlink{geom__slice_8c_adbc088077b7a25ea7e1234b5d7c90f3c}{g\_slice\_alloc}}(slices, extra);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00540}00540         gsp-\/>\mbox{\hyperlink{structg__slicer_aca53ade579dba467cd3654122f4df3bc}{start}} = \mbox{\hyperlink{g__raid__tr__if_8m_a17b9425cc13d593841ed2c2054a14e26}{start}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00541}00541         \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>\mbox{\hyperlink{structg__geom_aa83c08c83459420f6cbcfe64c6099466}{softc}} = gsp;}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00542}00542         \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>\mbox{\hyperlink{structg__geom_a160a0c74f128936d97064e56052dc2ef}{start}} = \mbox{\hyperlink{geom__slice_8c_aa607c4f903486bdf1e97134fb017e074}{g\_slice\_start}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00543}00543         \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>\mbox{\hyperlink{structg__geom_aea05083928dcabdb4d343c6b9ee71cbd}{access}} = \mbox{\hyperlink{geom__slice_8c_a61b65ab37f5c6af52dedc62aada790a8}{g\_slice\_access}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00544}00544         \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>\mbox{\hyperlink{structg__geom_a67386b3b9a49233eca9f73d28bc70325}{orphan}} = \mbox{\hyperlink{geom__slice_8c_a4027c1bceba6cea24ab56fb0564276f2}{g\_slice\_orphan}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00545}00545         \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>\mbox{\hyperlink{structg__geom_a0a74cfab0860e32fcfd20a3846b401a7}{spoiled}} = \mbox{\hyperlink{geom__slice_8c_a59485c0befa87323ae0134fdfade9359}{g\_slice\_spoiled}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00546}00546         \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>\mbox{\hyperlink{structg__geom_a5944d44b6aba36f1a37c67f020b5588b}{dumpconf}} == NULL)}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00547}00547                 \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>\mbox{\hyperlink{structg__geom_a5944d44b6aba36f1a37c67f020b5588b}{dumpconf}} = \mbox{\hyperlink{geom__slice_8c_ad06abf9ff8d3c306b28f1515197c014a}{g\_slice\_dumpconf}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00548}00548         \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>\mbox{\hyperlink{structg__geom_a502c2ffb3c41ad9d30d9875c678f5404}{class}}-\/>\mbox{\hyperlink{structg__class_a41bf509b46d8940d24fa10e553b321b0}{destroy\_geom}} == NULL)}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00549}00549                 \mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}-\/>\mbox{\hyperlink{structg__geom_a502c2ffb3c41ad9d30d9875c678f5404}{class}}-\/>\mbox{\hyperlink{structg__class_a41bf509b46d8940d24fa10e553b321b0}{destroy\_geom}} = \mbox{\hyperlink{geom__slice_8c_a90e1da1e190c0b307ac0ec710c7e595e}{g\_slice\_destroy\_geom}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00550}00550         \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{geom__slice_8c_source_l00551}00551         \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_acf792357913c0445233b71f8259764d9}{flags}} |= \mbox{\hyperlink{geom_8h_a712586d00e1fe2a8069adfc048fee210}{G\_CF\_DIRECT\_SEND}} | \mbox{\hyperlink{geom_8h_a2184f2512ddb7a67ddbb71409cdd953f}{G\_CF\_DIRECT\_RECEIVE}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00552}00552         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{geom__slice_8c_source_l00553}00553         \textcolor{keywordflow}{if} (error == 0)}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00554}00554                 error = \mbox{\hyperlink{geom_8h_a27b7c72cc3bc5a4d07ce5976e1aa1b58}{g\_access}}(\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}, 1, 0, 0);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00555}00555         \textcolor{keywordflow}{if} (error) \{}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00556}00556                 \mbox{\hyperlink{geom_8h_a87a0eb5de79ed5e49fcfec012f213c9b}{g\_wither\_geom}}(\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}}, ENXIO);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00557}00557                 \textcolor{keywordflow}{return} (NULL);}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00558}00558         \}}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00559}00559         \textcolor{keywordflow}{if} (extrap != NULL)}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00560}00560                 *vp = gsp-\/>\mbox{\hyperlink{structg__slicer_aa87a1eddcf05b70ee032fed3e1309e36}{softc}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00561}00561         *cpp = \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}};}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00562}00562         \textcolor{keywordflow}{return} (\mbox{\hyperlink{g__part__if_8m_abdc908a08b24cd2e589de2f44e40eeb9}{gp}});}
\DoxyCodeLine{\Hypertarget{geom__slice_8c_source_l00563}00563 \}}

\end{DoxyCode}
