\hypertarget{geom__io_8c_source}{}\doxysection{geom\+\_\+io.\+c}
\label{geom__io_8c_source}\index{geom/geom\_io.c@{geom/geom\_io.c}}
\mbox{\hyperlink{geom__io_8c}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00001}00001 \textcolor{comment}{/*-\/}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00002}00002 \textcolor{comment}{ * SPDX-\/License-\/Identifier: BSD-\/3-\/Clause}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00003}00003 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00004}00004 \textcolor{comment}{ * Copyright (c) 2002 Poul-\/Henning Kamp}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00005}00005 \textcolor{comment}{ * Copyright (c) 2002 Networks Associates Technology, Inc.}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00006}00006 \textcolor{comment}{ * Copyright (c) 2013 The FreeBSD Foundation}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00007}00007 \textcolor{comment}{ * All rights reserved.}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00008}00008 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00009}00009 \textcolor{comment}{ * This software was developed for the FreeBSD Project by Poul-\/Henning Kamp}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00010}00010 \textcolor{comment}{ * and NAI Labs, the Security Research Division of Network Associates, Inc.}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00011}00011 \textcolor{comment}{ * under DARPA/SPAWAR contract N66001-\/01-\/C-\/8035 ("{}CBOSS"{}), as part of the}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00012}00012 \textcolor{comment}{ * DARPA CHATS research program.}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00013}00013 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00014}00014 \textcolor{comment}{ * Portions of this software were developed by Konstantin Belousov}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00015}00015 \textcolor{comment}{ * under sponsorship from the FreeBSD Foundation.}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00016}00016 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00017}00017 \textcolor{comment}{ * Redistribution and use in source and binary forms, with or without}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00018}00018 \textcolor{comment}{ * modification, are permitted provided that the following conditions}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00019}00019 \textcolor{comment}{ * are met:}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00020}00020 \textcolor{comment}{ * 1. Redistributions of source code must retain the above copyright}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00021}00021 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer.}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00022}00022 \textcolor{comment}{ * 2. Redistributions in binary form must reproduce the above copyright}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00023}00023 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer in the}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00024}00024 \textcolor{comment}{ *    documentation and/or other materials provided with the distribution.}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00025}00025 \textcolor{comment}{ * 3. The names of the authors may not be used to endorse or promote}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00026}00026 \textcolor{comment}{ *    products derived from this software without specific prior written}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00027}00027 \textcolor{comment}{ *    permission.}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00028}00028 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00029}00029 \textcolor{comment}{ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00030}00030 \textcolor{comment}{ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00031}00031 \textcolor{comment}{ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00032}00032 \textcolor{comment}{ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00033}00033 \textcolor{comment}{ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00034}00034 \textcolor{comment}{ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00035}00035 \textcolor{comment}{ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00036}00036 \textcolor{comment}{ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00037}00037 \textcolor{comment}{ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00038}00038 \textcolor{comment}{ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00039}00039 \textcolor{comment}{ * SUCH DAMAGE.}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00040}00040 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00041}00041 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00042}00042 \textcolor{preprocessor}{\#include <sys/cdefs.h>}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00043}\mbox{\hyperlink{geom__io_8c_a8c3ef283470a68cd30afe9b8a72cb60f}{00043}} \mbox{\hyperlink{geom__io_8c_a8c3ef283470a68cd30afe9b8a72cb60f}{\_\_FBSDID}}(\textcolor{stringliteral}{"{}\$FreeBSD\$"{}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00044}00044 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00045}00045 \textcolor{preprocessor}{\#include <sys/param.h>}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00046}00046 \textcolor{preprocessor}{\#include <sys/systm.h>}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00047}00047 \textcolor{preprocessor}{\#include <sys/kernel.h>}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00048}00048 \textcolor{preprocessor}{\#include <sys/malloc.h>}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00049}00049 \textcolor{preprocessor}{\#include <sys/bio.h>}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00050}00050 \textcolor{preprocessor}{\#include <sys/ktr.h>}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00051}00051 \textcolor{preprocessor}{\#include <sys/proc.h>}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00052}00052 \textcolor{preprocessor}{\#include <sys/sbuf.h>}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00053}00053 \textcolor{preprocessor}{\#include <sys/stack.h>}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00054}00054 \textcolor{preprocessor}{\#include <sys/sysctl.h>}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00055}00055 \textcolor{preprocessor}{\#include <sys/vmem.h>}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00056}00056 \textcolor{preprocessor}{\#include <machine/stdarg.h>}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00057}00057 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00058}00058 \textcolor{preprocessor}{\#include <sys/errno.h>}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00059}00059 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{geom_8h}{geom/geom.h}}>}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00060}00060 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{geom__int_8h}{geom/geom\_int.h}}>}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00061}00061 \textcolor{preprocessor}{\#include <sys/devicestat.h>}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00062}00062 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00063}00063 \textcolor{preprocessor}{\#include <vm/uma.h>}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00064}00064 \textcolor{preprocessor}{\#include <vm/vm.h>}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00065}00065 \textcolor{preprocessor}{\#include <vm/vm\_param.h>}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00066}00066 \textcolor{preprocessor}{\#include <vm/vm\_kern.h>}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00067}00067 \textcolor{preprocessor}{\#include <vm/vm\_page.h>}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00068}00068 \textcolor{preprocessor}{\#include <vm/vm\_object.h>}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00069}00069 \textcolor{preprocessor}{\#include <vm/vm\_extern.h>}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00070}00070 \textcolor{preprocessor}{\#include <vm/vm\_map.h>}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00071}00071 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00072}00072 \textcolor{keyword}{static} \textcolor{keywordtype}{int}      \mbox{\hyperlink{geom__io_8c_a883044988cf2e6bdd47d683b5fef65ef}{g\_io\_transient\_map\_bio}}(\textcolor{keyword}{struct} bio *\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00073}00073 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00074}\mbox{\hyperlink{geom__io_8c_a5f0aece450ad78a04055236cca8473b3}{00074}} \textcolor{keyword}{static} \textcolor{keyword}{struct }\mbox{\hyperlink{structg__bioq}{g\_bioq}} \mbox{\hyperlink{geom__io_8c_a5f0aece450ad78a04055236cca8473b3}{g\_bio\_run\_down}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00075}\mbox{\hyperlink{geom__io_8c_abf1d08d4b2582f65bba25a6922e8cfb6}{00075}} \textcolor{keyword}{static} \textcolor{keyword}{struct }\mbox{\hyperlink{structg__bioq}{g\_bioq}} \mbox{\hyperlink{geom__io_8c_abf1d08d4b2582f65bba25a6922e8cfb6}{g\_bio\_run\_up}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00076}00076 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00077}00077 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00078}00078 \textcolor{comment}{ * Pace is a hint that we've had some trouble recently allocating}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00079}00079 \textcolor{comment}{ * bios, so we should back off trying to send I/O down the stack}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00080}00080 \textcolor{comment}{ * a bit to let the problem resolve. When pacing, we also turn}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00081}00081 \textcolor{comment}{ * off direct dispatch to also reduce memory pressure from I/Os}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00082}00082 \textcolor{comment}{ * there, at the expxense of some added latency while the memory}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00083}00083 \textcolor{comment}{ * pressures exist. See g\_io\_schedule\_down() for more details}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00084}00084 \textcolor{comment}{ * and limitations.}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00085}00085 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00086}\mbox{\hyperlink{geom__io_8c_a239f0eaeeec56c2a938bad9d2ec53447}{00086}} \textcolor{keyword}{static} \textcolor{keyword}{volatile} u\_int \_\_read\_mostly \mbox{\hyperlink{geom__io_8c_a239f0eaeeec56c2a938bad9d2ec53447}{pace}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00087}00087 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00088}\mbox{\hyperlink{geom__io_8c_a30692f93d3a3f23c40264d6ebe17b86f}{00088}} \textcolor{keyword}{static} uma\_zone\_t \_\_read\_mostly \mbox{\hyperlink{geom__io_8c_a30692f93d3a3f23c40264d6ebe17b86f}{biozone}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00089}00089 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00090}00090 \textcolor{preprocessor}{\#include <machine/atomic.h>}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00091}00091 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00092}00092 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00093}\mbox{\hyperlink{geom__io_8c_a810db6352bed00c14d772ba462417bc4}{00093}} \mbox{\hyperlink{geom__io_8c_a810db6352bed00c14d772ba462417bc4}{g\_bioq\_lock}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structg__bioq}{g\_bioq}} *bq)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00094}00094 \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00095}00095 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00096}00096         mtx\_lock(\&bq-\/>\mbox{\hyperlink{structg__bioq_adcb62ab1dec42229108fd25588e4b493}{bio\_queue\_lock}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00097}00097 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00098}00098 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00099}00099 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00100}\mbox{\hyperlink{geom__io_8c_a2169c27c2e61535dc15476af9a0f156f}{00100}} \mbox{\hyperlink{geom__io_8c_a2169c27c2e61535dc15476af9a0f156f}{g\_bioq\_unlock}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structg__bioq}{g\_bioq}} *bq)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00101}00101 \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00102}00102 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00103}00103         mtx\_unlock(\&bq-\/>\mbox{\hyperlink{structg__bioq_adcb62ab1dec42229108fd25588e4b493}{bio\_queue\_lock}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00104}00104 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00105}00105 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00106}00106 \textcolor{preprocessor}{\#if 0}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00107}00107 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00108}00108 g\_bioq\_destroy(\textcolor{keyword}{struct} \mbox{\hyperlink{structg__bioq}{g\_bioq}} *bq)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00109}00109 \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00110}00110 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00111}00111         mtx\_destroy(\&bq-\/>\mbox{\hyperlink{structg__bioq_adcb62ab1dec42229108fd25588e4b493}{bio\_queue\_lock}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00112}00112 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00113}00113 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00114}00114 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00115}00115 \textcolor{keyword}{static} \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00116}\mbox{\hyperlink{geom__io_8c_a02b2b07afbe7a2977301cd34a3181786}{00116}} \mbox{\hyperlink{geom__io_8c_a02b2b07afbe7a2977301cd34a3181786}{g\_bioq\_init}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structg__bioq}{g\_bioq}} *bq)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00117}00117 \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00118}00118 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00119}00119         TAILQ\_INIT(\&bq-\/>bio\_queue);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00120}00120         mtx\_init(\&bq-\/>\mbox{\hyperlink{structg__bioq_adcb62ab1dec42229108fd25588e4b493}{bio\_queue\_lock}}, \textcolor{stringliteral}{"{}bio queue"{}}, NULL, MTX\_DEF);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00121}00121 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00122}00122 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00123}00123 \textcolor{keyword}{static} \textcolor{keyword}{struct }bio *}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00124}\mbox{\hyperlink{geom__io_8c_ad5cafe06e23235afce5ae5ef04c4a64e}{00124}} \mbox{\hyperlink{geom__io_8c_ad5cafe06e23235afce5ae5ef04c4a64e}{g\_bioq\_first}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structg__bioq}{g\_bioq}} *bq)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00125}00125 \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00126}00126         \textcolor{keyword}{struct }bio *\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00127}00127 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00128}00128         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}} = TAILQ\_FIRST(\&bq-\/>bio\_queue);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00129}00129         \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}} != NULL) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00130}00130                 KASSERT((\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_flags \& BIO\_ONQUEUE),}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00131}00131                     (\textcolor{stringliteral}{"{}Bio not on queue bp=\%p target \%p"{}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, bq));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00132}00132                 \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_flags \&= \string~BIO\_ONQUEUE;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00133}00133                 TAILQ\_REMOVE(\&bq-\/>bio\_queue, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, bio\_queue);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00134}00134                 bq-\/>\mbox{\hyperlink{structg__bioq_ad3cc2bf5b7743d0daa3720a55c876c6f}{bio\_queue\_length}}-\/-\/;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00135}00135         \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00136}00136         \textcolor{keywordflow}{return} (\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00137}00137 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00138}00138 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00139}00139 \textcolor{keyword}{struct }bio *}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00140}\mbox{\hyperlink{geom_8h_ad1c00a46dacd4e51a19243a557ff24f3}{00140}} \mbox{\hyperlink{geom__io_8c_ad1c00a46dacd4e51a19243a557ff24f3}{g\_new\_bio}}(\textcolor{keywordtype}{void})}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00141}00141 \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00142}00142         \textcolor{keyword}{struct }bio *\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00143}00143 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00144}00144         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}} = uma\_zalloc(\mbox{\hyperlink{geom__io_8c_a30692f93d3a3f23c40264d6ebe17b86f}{biozone}}, M\_NOWAIT | M\_ZERO);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00145}00145 \textcolor{preprocessor}{\#ifdef KTR}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00146}00146         \textcolor{keywordflow}{if} ((KTR\_COMPILE \& KTR\_GEOM) \&\& (ktr\_mask \& KTR\_GEOM)) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00147}00147                 \textcolor{keyword}{struct }stack st;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00148}00148 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00149}00149                 CTR1(KTR\_GEOM, \textcolor{stringliteral}{"{}g\_new\_bio(): \%p"{}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00150}00150                 stack\_save(\&st);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00151}00151                 CTRSTACK(KTR\_GEOM, \&st, 3);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00152}00152         \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00153}00153 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00154}00154         \textcolor{keywordflow}{return} (\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00155}00155 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00156}00156 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00157}00157 \textcolor{keyword}{struct }bio *}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00158}\mbox{\hyperlink{geom_8h_ae13a6895af777c09cf19545f48517fe4}{00158}} \mbox{\hyperlink{geom__io_8c_ae13a6895af777c09cf19545f48517fe4}{g\_alloc\_bio}}(\textcolor{keywordtype}{void})}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00159}00159 \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00160}00160         \textcolor{keyword}{struct }bio *\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00161}00161 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00162}00162         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}} = uma\_zalloc(\mbox{\hyperlink{geom__io_8c_a30692f93d3a3f23c40264d6ebe17b86f}{biozone}}, M\_WAITOK | M\_ZERO);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00163}00163 \textcolor{preprocessor}{\#ifdef KTR}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00164}00164         \textcolor{keywordflow}{if} ((KTR\_COMPILE \& KTR\_GEOM) \&\& (ktr\_mask \& KTR\_GEOM)) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00165}00165                 \textcolor{keyword}{struct }stack st;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00166}00166 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00167}00167                 CTR1(KTR\_GEOM, \textcolor{stringliteral}{"{}g\_alloc\_bio(): \%p"{}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00168}00168                 stack\_save(\&st);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00169}00169                 CTRSTACK(KTR\_GEOM, \&st, 3);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00170}00170         \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00171}00171 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00172}00172         \textcolor{keywordflow}{return} (\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00173}00173 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00174}00174 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00175}00175 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00176}\mbox{\hyperlink{geom_8h_ae3cbea7d4bf48f25bb609df3d3f0bb28}{00176}} \mbox{\hyperlink{geom__io_8c_a83e02e0d1f0a82e083884fc1d49df564}{g\_destroy\_bio}}(\textcolor{keyword}{struct} bio *\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}})}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00177}00177 \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00178}00178 \textcolor{preprocessor}{\#ifdef KTR}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00179}00179         \textcolor{keywordflow}{if} ((KTR\_COMPILE \& KTR\_GEOM) \&\& (ktr\_mask \& KTR\_GEOM)) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00180}00180                 \textcolor{keyword}{struct }stack st;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00181}00181 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00182}00182                 CTR1(KTR\_GEOM, \textcolor{stringliteral}{"{}g\_destroy\_bio(): \%p"{}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00183}00183                 stack\_save(\&st);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00184}00184                 CTRSTACK(KTR\_GEOM, \&st, 3);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00185}00185         \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00186}00186 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00187}00187         uma\_zfree(\mbox{\hyperlink{geom__io_8c_a30692f93d3a3f23c40264d6ebe17b86f}{biozone}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00188}00188 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00189}00189 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00190}00190 \textcolor{keyword}{struct }bio *}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00191}\mbox{\hyperlink{geom_8h_a4ef26e4ec68e35e8f892692c524a3d4f}{00191}} \mbox{\hyperlink{geom__io_8c_a10da0d6a4bae7ba568579609c804e5e4}{g\_clone\_bio}}(\textcolor{keyword}{struct} bio *\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}})}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00192}00192 \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00193}00193         \textcolor{keyword}{struct }bio *bp2;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00194}00194 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00195}00195         bp2 = uma\_zalloc(\mbox{\hyperlink{geom__io_8c_a30692f93d3a3f23c40264d6ebe17b86f}{biozone}}, M\_NOWAIT | M\_ZERO);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00196}00196         \textcolor{keywordflow}{if} (bp2 != NULL) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00197}00197                 bp2-\/>bio\_parent = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00198}00198                 bp2-\/>bio\_cmd = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_cmd;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00199}00199                 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00200}00200 \textcolor{comment}{                 *  BIO\_ORDERED flag may be used by disk drivers to enforce}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00201}00201 \textcolor{comment}{                 *  ordering restrictions, so this flag needs to be cloned.}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00202}00202 \textcolor{comment}{                 *  BIO\_UNMAPPED, BIO\_VLIST, and BIO\_SWAP should be inherited,}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00203}00203 \textcolor{comment}{                 *  to properly indicate which way the buffer is passed.}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00204}00204 \textcolor{comment}{                 *  Other bio flags are not suitable for cloning.}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00205}00205 \textcolor{comment}{                 */}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00206}00206                 bp2-\/>bio\_flags = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_flags \&}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00207}00207                     (BIO\_ORDERED | BIO\_UNMAPPED | BIO\_VLIST | BIO\_SWAP);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00208}00208                 bp2-\/>bio\_length = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_length;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00209}00209                 bp2-\/>bio\_offset = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_offset;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00210}00210                 bp2-\/>bio\_data = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_data;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00211}00211                 bp2-\/>bio\_ma = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_ma;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00212}00212                 bp2-\/>bio\_ma\_n = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_ma\_n;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00213}00213                 bp2-\/>bio\_ma\_offset = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_ma\_offset;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00214}00214                 bp2-\/>bio\_attribute = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_attribute;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00215}00215                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_cmd == BIO\_ZONE)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00216}00216                         bcopy(\&\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_zone, \&bp2-\/>bio\_zone,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00217}00217                             \textcolor{keyword}{sizeof}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_zone));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00218}00218 \textcolor{preprocessor}{\#if defined(BUF\_TRACKING) || defined(FULL\_BUF\_TRACKING)}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00219}00219                 bp2-\/>bio\_track\_bp = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_track\_bp;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00220}00220 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00221}00221                 \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_children++;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00222}00222         \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00223}00223 \textcolor{preprocessor}{\#ifdef KTR}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00224}00224         \textcolor{keywordflow}{if} ((KTR\_COMPILE \& KTR\_GEOM) \&\& (ktr\_mask \& KTR\_GEOM)) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00225}00225                 \textcolor{keyword}{struct }stack st;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00226}00226 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00227}00227                 CTR2(KTR\_GEOM, \textcolor{stringliteral}{"{}g\_clone\_bio(\%p): \%p"{}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, bp2);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00228}00228                 stack\_save(\&st);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00229}00229                 CTRSTACK(KTR\_GEOM, \&st, 3);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00230}00230         \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00231}00231 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00232}00232         \textcolor{keywordflow}{return}(bp2);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00233}00233 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00234}00234 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00235}00235 \textcolor{keyword}{struct }bio *}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00236}\mbox{\hyperlink{geom_8h_ac367190962a01b4111cdf2fd2718a432}{00236}} \mbox{\hyperlink{geom__io_8c_aed9ced6e79973877dc95d3e78aabc302}{g\_duplicate\_bio}}(\textcolor{keyword}{struct} bio *\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}})}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00237}00237 \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00238}00238         \textcolor{keyword}{struct }bio *bp2;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00239}00239 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00240}00240         bp2 = uma\_zalloc(\mbox{\hyperlink{geom__io_8c_a30692f93d3a3f23c40264d6ebe17b86f}{biozone}}, M\_WAITOK | M\_ZERO);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00241}00241         bp2-\/>bio\_flags = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_flags \& (BIO\_UNMAPPED | BIO\_VLIST | BIO\_SWAP);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00242}00242         bp2-\/>bio\_parent = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00243}00243         bp2-\/>bio\_cmd = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_cmd;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00244}00244         bp2-\/>bio\_length = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_length;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00245}00245         bp2-\/>bio\_offset = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_offset;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00246}00246         bp2-\/>bio\_data = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_data;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00247}00247         bp2-\/>bio\_ma = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_ma;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00248}00248         bp2-\/>bio\_ma\_n = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_ma\_n;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00249}00249         bp2-\/>bio\_ma\_offset = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_ma\_offset;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00250}00250         bp2-\/>bio\_attribute = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_attribute;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00251}00251         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_children++;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00252}00252 \textcolor{preprocessor}{\#ifdef KTR}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00253}00253         \textcolor{keywordflow}{if} ((KTR\_COMPILE \& KTR\_GEOM) \&\& (ktr\_mask \& KTR\_GEOM)) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00254}00254                 \textcolor{keyword}{struct }stack st;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00255}00255 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00256}00256                 CTR2(KTR\_GEOM, \textcolor{stringliteral}{"{}g\_duplicate\_bio(\%p): \%p"{}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, bp2);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00257}00257                 stack\_save(\&st);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00258}00258                 CTRSTACK(KTR\_GEOM, \&st, 3);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00259}00259         \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00260}00260 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00261}00261         \textcolor{keywordflow}{return}(bp2);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00262}00262 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00263}00263 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00264}00264 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00265}\mbox{\hyperlink{geom_8h_ac7e5011386a1b89e762abf3a1e4fa76b}{00265}} \mbox{\hyperlink{geom__io_8c_aff76c0ea39673e09dd69172c578f9f72}{g\_reset\_bio}}(\textcolor{keyword}{struct} bio *\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}})}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00266}00266 \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00267}00267 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00268}00268         bzero(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \textcolor{keyword}{sizeof}(*\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00269}00269 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00270}00270 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00271}00271 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00272}\mbox{\hyperlink{geom__int_8h_af64c28e42f9d778c2ef03323ab214907}{00272}} \mbox{\hyperlink{geom__io_8c_a12408333775b92722c85451930bc62a6}{g\_io\_init}}()}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00273}00273 \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00274}00274 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00275}00275         \mbox{\hyperlink{geom__io_8c_a02b2b07afbe7a2977301cd34a3181786}{g\_bioq\_init}}(\&\mbox{\hyperlink{geom__io_8c_a5f0aece450ad78a04055236cca8473b3}{g\_bio\_run\_down}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00276}00276         \mbox{\hyperlink{geom__io_8c_a02b2b07afbe7a2977301cd34a3181786}{g\_bioq\_init}}(\&\mbox{\hyperlink{geom__io_8c_abf1d08d4b2582f65bba25a6922e8cfb6}{g\_bio\_run\_up}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00277}00277         \mbox{\hyperlink{geom__io_8c_a30692f93d3a3f23c40264d6ebe17b86f}{biozone}} = uma\_zcreate(\textcolor{stringliteral}{"{}g\_bio"{}}, \textcolor{keyword}{sizeof} (\textcolor{keyword}{struct} bio),}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00278}00278             NULL, NULL,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00279}00279             NULL, NULL,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00280}00280             0, 0);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00281}00281 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00282}00282 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00283}00283 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00284}\mbox{\hyperlink{geom_8h_a63ec0c10c4635c215416171e7e804d17}{00284}} \mbox{\hyperlink{geom__io_8c_a63ec0c10c4635c215416171e7e804d17}{g\_io\_getattr}}(\textcolor{keyword}{const} \textcolor{keywordtype}{char} *attr, \textcolor{keyword}{struct} \mbox{\hyperlink{structg__consumer}{g\_consumer}} *\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}, \textcolor{keywordtype}{int} *len, \textcolor{keywordtype}{void} *ptr)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00285}00285 \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00286}00286         \textcolor{keyword}{struct }bio *\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00287}00287         \textcolor{keywordtype}{int} error;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00288}00288 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00289}00289         \mbox{\hyperlink{geom_8h_a7588d7ea7fbf7180b345df84b8797166}{g\_trace}}(\mbox{\hyperlink{geom_8h_a38d9a04b6d890b00e0ecf00497314c0c}{G\_T\_BIO}}, \textcolor{stringliteral}{"{}bio\_getattr(\%s)"{}}, attr);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00290}00290         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}} = \mbox{\hyperlink{geom__io_8c_ae13a6895af777c09cf19545f48517fe4}{g\_alloc\_bio}}();}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00291}00291         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_cmd = BIO\_GETATTR;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00292}00292         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_done = NULL;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00293}00293         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_attribute = attr;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00294}00294         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_length = *len;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00295}00295         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_data = ptr;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00296}00296         \mbox{\hyperlink{geom__io_8c_aa433c0ba9e8cad7c7da1f9e17b46eb7a}{g\_io\_request}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00297}00297         error = biowait(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \textcolor{stringliteral}{"{}ggetattr"{}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00298}00298         *len = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_completed;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00299}00299         \mbox{\hyperlink{geom__io_8c_a83e02e0d1f0a82e083884fc1d49df564}{g\_destroy\_bio}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00300}00300         \textcolor{keywordflow}{return} (error);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00301}00301 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00302}00302 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00303}00303 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00304}\mbox{\hyperlink{geom_8h_a74419966b44a2e14b2ab0cf100f85a04}{00304}} \mbox{\hyperlink{geom__io_8c_a74419966b44a2e14b2ab0cf100f85a04}{g\_io\_zonecmd}}(\textcolor{keyword}{struct} disk\_zone\_args *zone\_args, \textcolor{keyword}{struct} \mbox{\hyperlink{structg__consumer}{g\_consumer}} *\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}})}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00305}00305 \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00306}00306         \textcolor{keyword}{struct }bio *\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00307}00307         \textcolor{keywordtype}{int} error;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00308}00308 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00309}00309         \mbox{\hyperlink{geom_8h_a7588d7ea7fbf7180b345df84b8797166}{g\_trace}}(\mbox{\hyperlink{geom_8h_a38d9a04b6d890b00e0ecf00497314c0c}{G\_T\_BIO}}, \textcolor{stringliteral}{"{}bio\_zone(\%d)"{}}, zone\_args-\/>zone\_cmd);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00310}00310         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}} = \mbox{\hyperlink{geom__io_8c_ae13a6895af777c09cf19545f48517fe4}{g\_alloc\_bio}}();}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00311}00311         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_cmd = BIO\_ZONE;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00312}00312         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_done = NULL;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00313}00313         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00314}00314 \textcolor{comment}{         * XXX KDM need to handle report zone data.}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00315}00315 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00316}00316         bcopy(zone\_args, \&\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_zone, \textcolor{keyword}{sizeof}(*zone\_args));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00317}00317         \textcolor{keywordflow}{if} (zone\_args-\/>zone\_cmd == DISK\_ZONE\_REPORT\_ZONES)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00318}00318                 \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_length =}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00319}00319                     zone\_args-\/>zone\_params.report.entries\_allocated *}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00320}00320                     \textcolor{keyword}{sizeof}(\textcolor{keyword}{struct }disk\_zone\_rep\_entry);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00321}00321         \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00322}00322                 \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_length = 0;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00323}00323 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00324}00324         \mbox{\hyperlink{geom__io_8c_aa433c0ba9e8cad7c7da1f9e17b46eb7a}{g\_io\_request}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00325}00325         error = biowait(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \textcolor{stringliteral}{"{}gzone"{}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00326}00326         bcopy(\&\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_zone, zone\_args, \textcolor{keyword}{sizeof}(*zone\_args));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00327}00327         \mbox{\hyperlink{geom__io_8c_a83e02e0d1f0a82e083884fc1d49df564}{g\_destroy\_bio}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00328}00328         \textcolor{keywordflow}{return} (error);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00329}00329 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00330}00330 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00331}00331 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00332}00332 \textcolor{comment}{ * Send a BIO\_SPEEDUP down the stack. This is used to tell the lower layers that}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00333}00333 \textcolor{comment}{ * the upper layers have detected a resource shortage. The lower layers are}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00334}00334 \textcolor{comment}{ * advised to stop delaying I/O that they might be holding for performance}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00335}00335 \textcolor{comment}{ * reasons and to schedule it (non-\/trims) or complete it successfully (trims) as}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00336}00336 \textcolor{comment}{ * quickly as it can. bio\_length is the amount of the shortage.  This call}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00337}00337 \textcolor{comment}{ * should be non-\/blocking. bio\_resid is used to communicate back if the lower}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00338}00338 \textcolor{comment}{ * layers couldn't find bio\_length worth of I/O to schedule or discard. A length}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00339}00339 \textcolor{comment}{ * of 0 means to do as much as you can (schedule the h/w queues full, discard}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00340}00340 \textcolor{comment}{ * all trims). flags are a hint from the upper layers to the lower layers what}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00341}00341 \textcolor{comment}{ * operation should be done.}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00342}00342 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00343}00343 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00344}\mbox{\hyperlink{geom_8h_ad39e656cc178034686899fe25350ac58}{00344}} \mbox{\hyperlink{geom__io_8c_ad39e656cc178034686899fe25350ac58}{g\_io\_speedup}}(off\_t shortage, u\_int flags, \textcolor{keywordtype}{size\_t} *resid, \textcolor{keyword}{struct} \mbox{\hyperlink{structg__consumer}{g\_consumer}} *\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}})}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00345}00345 \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00346}00346         \textcolor{keyword}{struct }bio *\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00347}00347         \textcolor{keywordtype}{int} error;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00348}00348 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00349}00349         KASSERT((flags \& (BIO\_SPEEDUP\_TRIM | BIO\_SPEEDUP\_WRITE)) != 0,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00350}00350             (\textcolor{stringliteral}{"{}Invalid flags passed to g\_io\_speedup: \%\#x"{}}, flags));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00351}00351         \mbox{\hyperlink{geom_8h_a7588d7ea7fbf7180b345df84b8797166}{g\_trace}}(\mbox{\hyperlink{geom_8h_a38d9a04b6d890b00e0ecf00497314c0c}{G\_T\_BIO}}, \textcolor{stringliteral}{"{}bio\_speedup(\%s, \%jd, \%\#x)"{}}, \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a6435d5aec0376e995dce3131fd3beb52}{provider}}-\/>\mbox{\hyperlink{structg__provider_a2bffb416ee58cf4df7839c6fd5ec004a}{name}},}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00352}00352             (intmax\_t)shortage, flags);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00353}00353         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}} = \mbox{\hyperlink{geom__io_8c_ad1c00a46dacd4e51a19243a557ff24f3}{g\_new\_bio}}();}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00354}00354         \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}} == NULL)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00355}00355                 \textcolor{keywordflow}{return} (ENOMEM);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00356}00356         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_cmd = BIO\_SPEEDUP;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00357}00357         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_length = shortage;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00358}00358         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_done = NULL;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00359}00359         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_flags |= flags;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00360}00360         \mbox{\hyperlink{geom__io_8c_aa433c0ba9e8cad7c7da1f9e17b46eb7a}{g\_io\_request}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00361}00361         error = biowait(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \textcolor{stringliteral}{"{}gflush"{}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00362}00362         *resid = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_resid;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00363}00363         \mbox{\hyperlink{geom__io_8c_a83e02e0d1f0a82e083884fc1d49df564}{g\_destroy\_bio}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00364}00364         \textcolor{keywordflow}{return} (error);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00365}00365 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00366}00366 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00367}00367 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00368}\mbox{\hyperlink{geom_8h_ac6fb73d666033fb395f7beaf2d6caa46}{00368}} \mbox{\hyperlink{geom__io_8c_ac6fb73d666033fb395f7beaf2d6caa46}{g\_io\_flush}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structg__consumer}{g\_consumer}} *\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}})}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00369}00369 \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00370}00370         \textcolor{keyword}{struct }bio *\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00371}00371         \textcolor{keywordtype}{int} error;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00372}00372 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00373}00373         \mbox{\hyperlink{geom_8h_a7588d7ea7fbf7180b345df84b8797166}{g\_trace}}(\mbox{\hyperlink{geom_8h_a38d9a04b6d890b00e0ecf00497314c0c}{G\_T\_BIO}}, \textcolor{stringliteral}{"{}bio\_flush(\%s)"{}}, \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a6435d5aec0376e995dce3131fd3beb52}{provider}}-\/>\mbox{\hyperlink{structg__provider_a2bffb416ee58cf4df7839c6fd5ec004a}{name}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00374}00374         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}} = \mbox{\hyperlink{geom__io_8c_ae13a6895af777c09cf19545f48517fe4}{g\_alloc\_bio}}();}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00375}00375         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_cmd = BIO\_FLUSH;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00376}00376         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_flags |= BIO\_ORDERED;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00377}00377         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_done = NULL;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00378}00378         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_attribute = NULL;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00379}00379         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_offset = \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a6435d5aec0376e995dce3131fd3beb52}{provider}}-\/>\mbox{\hyperlink{structg__provider_a8f47c464c78aa91fa4ca5143ed3cd15e}{mediasize}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00380}00380         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_length = 0;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00381}00381         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_data = NULL;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00382}00382         \mbox{\hyperlink{geom__io_8c_aa433c0ba9e8cad7c7da1f9e17b46eb7a}{g\_io\_request}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00383}00383         error = biowait(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \textcolor{stringliteral}{"{}gflush"{}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00384}00384         \mbox{\hyperlink{geom__io_8c_a83e02e0d1f0a82e083884fc1d49df564}{g\_destroy\_bio}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00385}00385         \textcolor{keywordflow}{return} (error);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00386}00386 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00387}00387 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00388}00388 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00389}\mbox{\hyperlink{geom__io_8c_a08459c54223c9fa79235b909f270511c}{00389}} \mbox{\hyperlink{geom__io_8c_a08459c54223c9fa79235b909f270511c}{g\_io\_check}}(\textcolor{keyword}{struct} bio *\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}})}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00390}00390 \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00391}00391         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__consumer}{g\_consumer}} *\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00392}00392         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__provider}{g\_provider}} *\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00393}00393         off\_t excess;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00394}00394         \textcolor{keywordtype}{int} \mbox{\hyperlink{structg__provider_acacf1ee18cb6edbcfedc185846696e7f}{error}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00395}00395 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00396}00396         biotrack(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \_\_func\_\_);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00397}00397 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00398}00398         \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}} = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_from;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00399}00399         \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}} = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_to;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00400}00400 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00401}00401         \textcolor{comment}{/* Fail if access counters dont allow the operation */}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00402}00402         \textcolor{keywordflow}{switch}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_cmd) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00403}00403         \textcolor{keywordflow}{case} BIO\_READ:}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00404}00404         \textcolor{keywordflow}{case} BIO\_GETATTR:}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00405}00405                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a40c3b377327dc07731eaf19340004033}{acr}} == 0)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00406}00406                         \textcolor{keywordflow}{return} (EPERM);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00407}00407                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00408}00408         \textcolor{keywordflow}{case} BIO\_WRITE:}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00409}00409         \textcolor{keywordflow}{case} BIO\_DELETE:}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00410}00410         \textcolor{keywordflow}{case} BIO\_SPEEDUP:}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00411}00411         \textcolor{keywordflow}{case} BIO\_FLUSH:}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00412}00412                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a28f563df0299e7e1ab9a1121b6e483eb}{acw}} == 0)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00413}00413                         \textcolor{keywordflow}{return} (EPERM);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00414}00414                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00415}00415         \textcolor{keywordflow}{case} BIO\_ZONE:}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00416}00416                 \textcolor{keywordflow}{if} ((\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_zone.zone\_cmd == DISK\_ZONE\_REPORT\_ZONES) ||}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00417}00417                     (\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_zone.zone\_cmd == DISK\_ZONE\_GET\_PARAMS)) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00418}00418                         \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a40c3b377327dc07731eaf19340004033}{acr}} == 0)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00419}00419                                 \textcolor{keywordflow}{return} (EPERM);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00420}00420                 \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a28f563df0299e7e1ab9a1121b6e483eb}{acw}} == 0)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00421}00421                         \textcolor{keywordflow}{return} (EPERM);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00422}00422                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00423}00423         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00424}00424                 \textcolor{keywordflow}{return} (EPERM);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00425}00425         \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00426}00426         \textcolor{comment}{/* if provider is marked for error, don't disturb. */}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00427}00427         \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_acacf1ee18cb6edbcfedc185846696e7f}{error}})}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00428}00428                 \textcolor{keywordflow}{return} (\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_acacf1ee18cb6edbcfedc185846696e7f}{error}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00429}00429         \textcolor{keywordflow}{if} (\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__io_8c_source_l00430}00430                 \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00431}00431 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00432}00432         \textcolor{keywordflow}{switch}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_cmd) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00433}00433         \textcolor{keywordflow}{case} BIO\_READ:}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00434}00434         \textcolor{keywordflow}{case} BIO\_WRITE:}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00435}00435         \textcolor{keywordflow}{case} BIO\_DELETE:}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00436}00436                 \textcolor{comment}{/* Zero sectorsize or mediasize is probably a lack of media. */}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00437}00437                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_aea3cd43d41461790b8d0afcd8c49a355}{sectorsize}} == 0 || \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a8f47c464c78aa91fa4ca5143ed3cd15e}{mediasize}} == 0)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00438}00438                         \textcolor{keywordflow}{return} (ENXIO);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00439}00439                 \textcolor{comment}{/* Reject I/O not on sector boundary */}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00440}00440                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_offset \% \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_aea3cd43d41461790b8d0afcd8c49a355}{sectorsize}})}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00441}00441                         \textcolor{keywordflow}{return} (EINVAL);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00442}00442                 \textcolor{comment}{/* Reject I/O not integral sector long */}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00443}00443                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_length \% \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_aea3cd43d41461790b8d0afcd8c49a355}{sectorsize}})}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00444}00444                         \textcolor{keywordflow}{return} (EINVAL);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00445}00445                 \textcolor{comment}{/* Reject requests before or past the end of media. */}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00446}00446                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_offset < 0)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00447}00447                         \textcolor{keywordflow}{return} (EIO);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00448}00448                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_offset > \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a8f47c464c78aa91fa4ca5143ed3cd15e}{mediasize}})}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00449}00449                         \textcolor{keywordflow}{return} (EIO);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00450}00450 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00451}00451                 \textcolor{comment}{/* Truncate requests to the end of providers media. */}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00452}00452                 excess = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_offset + \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_length;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00453}00453                 \textcolor{keywordflow}{if} (excess > \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_to-\/>mediasize) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00454}00454                         KASSERT((\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_flags \& BIO\_UNMAPPED) == 0 ||}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00455}00455                             round\_page(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_ma\_offset +}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00456}00456                             \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_length) / PAGE\_SIZE == \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_ma\_n,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00457}00457                             (\textcolor{stringliteral}{"{}excess bio \%p too short"{}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00458}00458                         excess -\/= \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_to-\/>mediasize;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00459}00459                         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_length -\/= excess;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00460}00460                         \textcolor{keywordflow}{if} ((\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_flags \& BIO\_UNMAPPED) != 0) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00461}00461                                 \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_ma\_n = round\_page(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_ma\_offset +}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00462}00462                                     \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_length) / PAGE\_SIZE;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00463}00463                         \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00464}00464                         \textcolor{keywordflow}{if} (excess > 0)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00465}00465                                 CTR3(KTR\_GEOM, \textcolor{stringliteral}{"{}g\_down truncated bio "{}}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00466}00466                                     \textcolor{stringliteral}{"{}\%p provider \%s by \%d"{}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}},}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00467}00467                                     \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_to-\/>name, excess);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00468}00468                 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00469}00469 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00470}00470                 \textcolor{comment}{/* Deliver zero length transfers right here. */}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00471}00471                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_length == 0) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00472}00472                         CTR2(KTR\_GEOM, \textcolor{stringliteral}{"{}g\_down terminated 0-\/length "{}}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00473}00473                             \textcolor{stringliteral}{"{}bp \%p provider \%s"{}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_to-\/>name);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00474}00474                         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00475}00475                 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00476}00476 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00477}00477                 \textcolor{keywordflow}{if} ((\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_flags \& BIO\_UNMAPPED) != 0 \&\&}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00478}00478                     (\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_to-\/>flags \& \mbox{\hyperlink{geom_8h_a82547ff81813e6e37dd57c36e530c7e2}{G\_PF\_ACCEPT\_UNMAPPED}}) == 0 \&\&}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00479}00479                     (\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_cmd == BIO\_READ || \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_cmd == BIO\_WRITE)) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00480}00480                         \textcolor{keywordflow}{if} ((\mbox{\hyperlink{structg__provider_acacf1ee18cb6edbcfedc185846696e7f}{error}} = \mbox{\hyperlink{geom__io_8c_a883044988cf2e6bdd47d683b5fef65ef}{g\_io\_transient\_map\_bio}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}})) >= 0)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00481}00481                                 \textcolor{keywordflow}{return} (\mbox{\hyperlink{structg__provider_acacf1ee18cb6edbcfedc185846696e7f}{error}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00482}00482                 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00483}00483                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00484}00484         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00485}00485                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00486}00486         \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00487}00487         \textcolor{keywordflow}{return} (EJUSTRETURN);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00488}00488 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00489}00489 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00490}00490 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00491}\mbox{\hyperlink{geom_8h_aa433c0ba9e8cad7c7da1f9e17b46eb7a}{00491}} \mbox{\hyperlink{geom__io_8c_aa433c0ba9e8cad7c7da1f9e17b46eb7a}{g\_io\_request}}(\textcolor{keyword}{struct} bio *\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \textcolor{keyword}{struct} \mbox{\hyperlink{structg__consumer}{g\_consumer}} *\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}})}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00492}00492 \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00493}00493         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__provider}{g\_provider}} *\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00494}00494         \textcolor{keywordtype}{int} direct, \mbox{\hyperlink{structg__provider_acacf1ee18cb6edbcfedc185846696e7f}{error}}, first;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00495}00495         \mbox{\hyperlink{binstream_8h_ab077fa1127453be2bd9d4c3c8a768fa7}{uint8\_t}} \mbox{\hyperlink{g__part__if_8m_ab932f62e09484cd3ce109f3db9d8f3ce}{cmd}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00496}00496 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00497}00497         biotrack(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \_\_func\_\_);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00498}00498 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00499}00499         KASSERT(\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}} != NULL, (\textcolor{stringliteral}{"{}NULL cp in g\_io\_request"{}}));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00500}00500         KASSERT(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}} != NULL, (\textcolor{stringliteral}{"{}NULL bp in g\_io\_request"{}}));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00501}00501         \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}} = \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a6435d5aec0376e995dce3131fd3beb52}{provider}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00502}00502         KASSERT(\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}} != NULL, (\textcolor{stringliteral}{"{}consumer not attached in g\_io\_request"{}}));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00503}00503 \textcolor{preprocessor}{\#ifdef DIAGNOSTIC}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00504}00504         KASSERT(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_driver1 == NULL,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00505}00505             (\textcolor{stringliteral}{"{}bio\_driver1 used by the consumer (geom \%s)"{}}, \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a75734fc8cd22ffc4209c36cc0a459cba}{geom}}-\/>\mbox{\hyperlink{structg__geom_af64450500f1fea18f639b191a5017107}{name}}));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00506}00506         KASSERT(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_driver2 == NULL,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00507}00507             (\textcolor{stringliteral}{"{}bio\_driver2 used by the consumer (geom \%s)"{}}, \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a75734fc8cd22ffc4209c36cc0a459cba}{geom}}-\/>\mbox{\hyperlink{structg__geom_af64450500f1fea18f639b191a5017107}{name}}));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00508}00508         KASSERT(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_pflags == 0,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00509}00509             (\textcolor{stringliteral}{"{}bio\_pflags used by the consumer (geom \%s)"{}}, \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a75734fc8cd22ffc4209c36cc0a459cba}{geom}}-\/>\mbox{\hyperlink{structg__geom_af64450500f1fea18f639b191a5017107}{name}}));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00510}00510         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00511}00511 \textcolor{comment}{         * Remember consumer's private fields, so we can detect if they were}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00512}00512 \textcolor{comment}{         * modified by the provider.}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00513}00513 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00514}00514         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>\_bio\_caller1 = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_caller1;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00515}00515         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>\_bio\_caller2 = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_caller2;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00516}00516         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>\_bio\_cflags = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_cflags;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00517}00517 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00518}00518 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00519}00519         \mbox{\hyperlink{g__part__if_8m_ab932f62e09484cd3ce109f3db9d8f3ce}{cmd}} = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_cmd;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00520}00520         \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_ab932f62e09484cd3ce109f3db9d8f3ce}{cmd}} == BIO\_READ || \mbox{\hyperlink{g__part__if_8m_ab932f62e09484cd3ce109f3db9d8f3ce}{cmd}} == BIO\_WRITE || \mbox{\hyperlink{g__part__if_8m_ab932f62e09484cd3ce109f3db9d8f3ce}{cmd}} == BIO\_GETATTR) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00521}00521                 KASSERT(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_data != NULL,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00522}00522                     (\textcolor{stringliteral}{"{}NULL bp-\/>data in g\_io\_request(cmd=\%hu)"{}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_cmd));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00523}00523         \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00524}00524         \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_ab932f62e09484cd3ce109f3db9d8f3ce}{cmd}} == BIO\_DELETE || \mbox{\hyperlink{g__part__if_8m_ab932f62e09484cd3ce109f3db9d8f3ce}{cmd}} == BIO\_FLUSH || \mbox{\hyperlink{g__part__if_8m_ab932f62e09484cd3ce109f3db9d8f3ce}{cmd}} == BIO\_SPEEDUP) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00525}00525                 KASSERT(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_data == NULL,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00526}00526                     (\textcolor{stringliteral}{"{}non-\/NULL bp-\/>data in g\_io\_request(cmd=\%hu)"{}},}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00527}00527                     \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_cmd));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00528}00528         \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00529}00529         \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_ab932f62e09484cd3ce109f3db9d8f3ce}{cmd}} == BIO\_READ || \mbox{\hyperlink{g__part__if_8m_ab932f62e09484cd3ce109f3db9d8f3ce}{cmd}} == BIO\_WRITE || \mbox{\hyperlink{g__part__if_8m_ab932f62e09484cd3ce109f3db9d8f3ce}{cmd}} == BIO\_DELETE) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00530}00530                 KASSERT(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_offset \% \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a6435d5aec0376e995dce3131fd3beb52}{provider}}-\/>\mbox{\hyperlink{structg__provider_aea3cd43d41461790b8d0afcd8c49a355}{sectorsize}} == 0,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00531}00531                     (\textcolor{stringliteral}{"{}wrong offset \%jd for sectorsize \%u"{}},}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00532}00532                     \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_offset, \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a6435d5aec0376e995dce3131fd3beb52}{provider}}-\/>\mbox{\hyperlink{structg__provider_aea3cd43d41461790b8d0afcd8c49a355}{sectorsize}}));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00533}00533                 KASSERT(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_length \% \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a6435d5aec0376e995dce3131fd3beb52}{provider}}-\/>\mbox{\hyperlink{structg__provider_aea3cd43d41461790b8d0afcd8c49a355}{sectorsize}} == 0,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00534}00534                     (\textcolor{stringliteral}{"{}wrong length \%jd for sectorsize \%u"{}},}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00535}00535                     \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_length, \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a6435d5aec0376e995dce3131fd3beb52}{provider}}-\/>\mbox{\hyperlink{structg__provider_aea3cd43d41461790b8d0afcd8c49a355}{sectorsize}}));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00536}00536         \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00537}00537 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00538}00538         \mbox{\hyperlink{geom_8h_a7588d7ea7fbf7180b345df84b8797166}{g\_trace}}(\mbox{\hyperlink{geom_8h_a38d9a04b6d890b00e0ecf00497314c0c}{G\_T\_BIO}}, \textcolor{stringliteral}{"{}bio\_request(\%p) from \%p(\%s) to \%p(\%s) cmd \%d"{}},}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00539}00539             \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \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}}, \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}, \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a2bffb416ee58cf4df7839c6fd5ec004a}{name}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_cmd);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00540}00540 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00541}00541         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_from = \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00542}00542         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_to = \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00543}00543         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_error = 0;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00544}00544         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_completed = 0;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00545}00545 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00546}00546         KASSERT(!(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_flags \& BIO\_ONQUEUE),}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00547}00547             (\textcolor{stringliteral}{"{}Bio already on queue bp=\%p"{}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00548}00548 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00549}00549         \textcolor{keywordflow}{if} ((\mbox{\hyperlink{geom__int_8h_a7d4141350049eb290d580bfa0ddb3c49}{g\_collectstats}} \& \mbox{\hyperlink{geom__int_8h_afcdf3b728329b0207c8124cca30a8edf}{G\_STATS\_CONSUMERS}}) != 0 ||}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00550}00550             ((\mbox{\hyperlink{geom__int_8h_a7d4141350049eb290d580bfa0ddb3c49}{g\_collectstats}} \& \mbox{\hyperlink{geom__int_8h_ad0fd9731f0ba500e108b226ee3f81515}{G\_STATS\_PROVIDERS}}) != 0 \&\& \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a5748aca46ccb3c74434a4b605338e1d2}{stat}} != NULL))}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00551}00551                 binuptime(\&\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_t0);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00552}00552         \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00553}00553                 getbinuptime(\&\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_t0);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00554}00554         \textcolor{keywordflow}{if} (\mbox{\hyperlink{geom__int_8h_a7d4141350049eb290d580bfa0ddb3c49}{g\_collectstats}} \& \mbox{\hyperlink{geom__int_8h_afcdf3b728329b0207c8124cca30a8edf}{G\_STATS\_CONSUMERS}})}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00555}00555                 devstat\_start\_transaction\_bio\_t0(\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_adb9344ae8135d6d1b28a01ff5fe7bc3c}{stat}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00556}00556         \textcolor{keywordflow}{if} (\mbox{\hyperlink{geom__int_8h_a7d4141350049eb290d580bfa0ddb3c49}{g\_collectstats}} \& \mbox{\hyperlink{geom__int_8h_ad0fd9731f0ba500e108b226ee3f81515}{G\_STATS\_PROVIDERS}})}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00557}00557                 devstat\_start\_transaction\_bio\_t0(\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a5748aca46ccb3c74434a4b605338e1d2}{stat}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00558}00558 \textcolor{preprocessor}{\#ifdef INVARIANTS}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00559}00559         atomic\_add\_int(\&\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a9de6b132beb6c47863410407b6674197}{nstart}}, 1);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00560}00560 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00561}00561 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00562}00562         direct = (\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_acf792357913c0445233b71f8259764d9}{flags}} \& \mbox{\hyperlink{geom_8h_a712586d00e1fe2a8069adfc048fee210}{G\_CF\_DIRECT\_SEND}}) != 0 \&\&}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00563}00563             (\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a2d2060ee918007b601780f93a39c30de}{flags}} \& \mbox{\hyperlink{geom_8h_a36e660dabad70e0fd2439be3ddca8d47}{G\_PF\_DIRECT\_RECEIVE}}) != 0 \&\&}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00564}00564             curthread != \mbox{\hyperlink{geom__int_8h_a2c20d7ff9b76ac305df1f713192cf35b}{g\_down\_td}} \&\&}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00565}00565             ((\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a2d2060ee918007b601780f93a39c30de}{flags}} \& \mbox{\hyperlink{geom_8h_a82547ff81813e6e37dd57c36e530c7e2}{G\_PF\_ACCEPT\_UNMAPPED}}) != 0 ||}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00566}00566             (\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_flags \& BIO\_UNMAPPED) == 0 || THREAD\_CAN\_SLEEP()) \&\&}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00567}00567             \mbox{\hyperlink{geom__io_8c_a239f0eaeeec56c2a938bad9d2ec53447}{pace}} == 0;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00568}00568         \textcolor{keywordflow}{if} (direct) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00569}00569                 \textcolor{comment}{/* Block direct execution if less then half of stack left. */}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00570}00570                 \textcolor{keywordtype}{size\_t}  st, su;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00571}00571                 GET\_STACK\_USAGE(st, su);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00572}00572                 \textcolor{keywordflow}{if} (su * 2 > st)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00573}00573                         direct = 0;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00574}00574         \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00575}00575 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00576}00576         \textcolor{keywordflow}{if} (direct) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00577}00577                 \mbox{\hyperlink{structg__provider_acacf1ee18cb6edbcfedc185846696e7f}{error}} = \mbox{\hyperlink{geom__io_8c_a08459c54223c9fa79235b909f270511c}{g\_io\_check}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00578}00578                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{structg__provider_acacf1ee18cb6edbcfedc185846696e7f}{error}} >= 0) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00579}00579                         CTR3(KTR\_GEOM, \textcolor{stringliteral}{"{}g\_io\_request g\_io\_check on bp \%p "{}}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00580}00580                             \textcolor{stringliteral}{"{}provider \%s returned \%d"{}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_to-\/>name,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00581}00581                             \mbox{\hyperlink{structg__provider_acacf1ee18cb6edbcfedc185846696e7f}{error}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00582}00582                         \mbox{\hyperlink{geom__io_8c_a0975be2dcd40a26a56a1a9bfc80433e1}{g\_io\_deliver}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \mbox{\hyperlink{structg__provider_acacf1ee18cb6edbcfedc185846696e7f}{error}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00583}00583                         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00584}00584                 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00585}00585                 \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_to-\/>geom-\/>start(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00586}00586         \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00587}00587                 \mbox{\hyperlink{geom__io_8c_a810db6352bed00c14d772ba462417bc4}{g\_bioq\_lock}}(\&\mbox{\hyperlink{geom__io_8c_a5f0aece450ad78a04055236cca8473b3}{g\_bio\_run\_down}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00588}00588                 first = TAILQ\_EMPTY(\&\mbox{\hyperlink{geom__io_8c_a5f0aece450ad78a04055236cca8473b3}{g\_bio\_run\_down}}.bio\_queue);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00589}00589                 TAILQ\_INSERT\_TAIL(\&\mbox{\hyperlink{geom__io_8c_a5f0aece450ad78a04055236cca8473b3}{g\_bio\_run\_down}}.bio\_queue, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, bio\_queue);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00590}00590                 \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_flags |= BIO\_ONQUEUE;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00591}00591                 \mbox{\hyperlink{geom__io_8c_a5f0aece450ad78a04055236cca8473b3}{g\_bio\_run\_down}}.\mbox{\hyperlink{structg__bioq_ad3cc2bf5b7743d0daa3720a55c876c6f}{bio\_queue\_length}}++;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00592}00592                 \mbox{\hyperlink{geom__io_8c_a2169c27c2e61535dc15476af9a0f156f}{g\_bioq\_unlock}}(\&\mbox{\hyperlink{geom__io_8c_a5f0aece450ad78a04055236cca8473b3}{g\_bio\_run\_down}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00593}00593                 \textcolor{comment}{/* Pass it on down. */}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00594}00594                 \textcolor{keywordflow}{if} (first)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00595}00595                         wakeup(\&\mbox{\hyperlink{geom__int_8h_a9a4333acc01090bd4e4ef6a59db1fbb6}{g\_wait\_down}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00596}00596         \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00597}00597 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00598}00598 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00599}00599 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00600}\mbox{\hyperlink{geom_8h_a0975be2dcd40a26a56a1a9bfc80433e1}{00600}} \mbox{\hyperlink{geom__io_8c_a0975be2dcd40a26a56a1a9bfc80433e1}{g\_io\_deliver}}(\textcolor{keyword}{struct} bio *\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \textcolor{keywordtype}{int} \mbox{\hyperlink{structg__provider_acacf1ee18cb6edbcfedc185846696e7f}{error}})}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00601}00601 \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00602}00602         \textcolor{keyword}{struct }bintime now;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00603}00603         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__consumer}{g\_consumer}} *\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00604}00604         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__provider}{g\_provider}} *\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00605}00605         \textcolor{keyword}{struct }mtx *mtxp;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00606}00606         \textcolor{keywordtype}{int} direct, first;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00607}00607 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00608}00608         biotrack(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \_\_func\_\_);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00609}00609 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00610}00610         KASSERT(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}} != NULL, (\textcolor{stringliteral}{"{}NULL bp in g\_io\_deliver"{}}));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00611}00611         \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}} = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_to;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00612}00612         KASSERT(\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}} != NULL, (\textcolor{stringliteral}{"{}NULL bio\_to in g\_io\_deliver"{}}));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00613}00613         \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}} = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_from;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00614}00614         \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}} == NULL) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00615}00615                 \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_error = error;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00616}00616                 \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_done(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00617}00617                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00618}00618         \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00619}00619         KASSERT(\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}} != NULL, (\textcolor{stringliteral}{"{}NULL bio\_from in g\_io\_deliver"{}}));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00620}00620         KASSERT(\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a75734fc8cd22ffc4209c36cc0a459cba}{geom}} != NULL, (\textcolor{stringliteral}{"{}NULL bio\_from-\/>geom in g\_io\_deliver"{}}));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00621}00621 \textcolor{preprocessor}{\#ifdef DIAGNOSTIC}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00622}00622         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00623}00623 \textcolor{comment}{         * Some classes -\/ GJournal in particular -\/ can modify bio's}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00624}00624 \textcolor{comment}{         * private fields while the bio is in transit; G\_GEOM\_VOLATILE\_BIO}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00625}00625 \textcolor{comment}{         * flag means it's an expected behaviour for that particular geom.}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00626}00626 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00627}00627         \textcolor{keywordflow}{if} ((\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a75734fc8cd22ffc4209c36cc0a459cba}{geom}}-\/>\mbox{\hyperlink{structg__geom_afa218bd6b4ead71e6238ecd0577e1cc9}{flags}} \& \mbox{\hyperlink{geom_8h_aef91738a9019f4ab58b8f8f5eafdbcae}{G\_GEOM\_VOLATILE\_BIO}}) == 0) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00628}00628                 KASSERT(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_caller1 == \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>\_bio\_caller1,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00629}00629                     (\textcolor{stringliteral}{"{}bio\_caller1 used by the provider \%s"{}}, \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a2bffb416ee58cf4df7839c6fd5ec004a}{name}}));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00630}00630                 KASSERT(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_caller2 == \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>\_bio\_caller2,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00631}00631                     (\textcolor{stringliteral}{"{}bio\_caller2 used by the provider \%s"{}}, \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a2bffb416ee58cf4df7839c6fd5ec004a}{name}}));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00632}00632                 KASSERT(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_cflags == \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>\_bio\_cflags,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00633}00633                     (\textcolor{stringliteral}{"{}bio\_cflags used by the provider \%s"{}}, \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a2bffb416ee58cf4df7839c6fd5ec004a}{name}}));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00634}00634         \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00635}00635 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00636}00636         KASSERT(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_completed >= 0, (\textcolor{stringliteral}{"{}bio\_completed can't be less than 0"{}}));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00637}00637         KASSERT(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_completed <= \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_length,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00638}00638             (\textcolor{stringliteral}{"{}bio\_completed can't be greater than bio\_length"{}}));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00639}00639 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00640}00640         \mbox{\hyperlink{geom_8h_a7588d7ea7fbf7180b345df84b8797166}{g\_trace}}(\mbox{\hyperlink{geom_8h_a38d9a04b6d890b00e0ecf00497314c0c}{G\_T\_BIO}},}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00641}00641 \textcolor{stringliteral}{"{}g\_io\_deliver(\%p) from \%p(\%s) to \%p(\%s) cmd \%d error \%d off \%jd len \%jd"{}},}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00642}00642             \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \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}}, \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}, \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a2bffb416ee58cf4df7839c6fd5ec004a}{name}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_cmd, error,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00643}00643             (intmax\_t)\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_offset, (intmax\_t)\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_length);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00644}00644 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00645}00645         KASSERT(!(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_flags \& BIO\_ONQUEUE),}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00646}00646             (\textcolor{stringliteral}{"{}Bio already on queue bp=\%p"{}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00647}00647 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00648}00648         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00649}00649 \textcolor{comment}{         * XXX: next two doesn't belong here}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00650}00650 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00651}00651         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_bcount = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_length;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00652}00652         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_resid = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_bcount -\/ \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_completed;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00653}00653 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00654}00654         direct = (\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a2d2060ee918007b601780f93a39c30de}{flags}} \& \mbox{\hyperlink{geom_8h_a486656f757680c7ff0c7ca06b643eb2d}{G\_PF\_DIRECT\_SEND}}) \&\&}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00655}00655                  (\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_acf792357913c0445233b71f8259764d9}{flags}} \& \mbox{\hyperlink{geom_8h_a2184f2512ddb7a67ddbb71409cdd953f}{G\_CF\_DIRECT\_RECEIVE}}) \&\&}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00656}00656                  curthread != \mbox{\hyperlink{geom__int_8h_aa97322ef473093318561cc6a5cb4940c}{g\_up\_td}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00657}00657         \textcolor{keywordflow}{if} (direct) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00658}00658                 \textcolor{comment}{/* Block direct execution if less then half of stack left. */}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00659}00659                 \textcolor{keywordtype}{size\_t}  st, su;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00660}00660                 GET\_STACK\_USAGE(st, su);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00661}00661                 \textcolor{keywordflow}{if} (su * 2 > st)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00662}00662                         direct = 0;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00663}00663         \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00664}00664 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00665}00665         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00666}00666 \textcolor{comment}{         * The statistics collection is lockless, as such, but we}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00667}00667 \textcolor{comment}{         * can not update one instance of the statistics from more}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00668}00668 \textcolor{comment}{         * than one thread at a time, so grab the lock first.}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00669}00669 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00670}00670         \textcolor{keywordflow}{if} ((\mbox{\hyperlink{geom__int_8h_a7d4141350049eb290d580bfa0ddb3c49}{g\_collectstats}} \& \mbox{\hyperlink{geom__int_8h_afcdf3b728329b0207c8124cca30a8edf}{G\_STATS\_CONSUMERS}}) != 0 ||}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00671}00671             ((\mbox{\hyperlink{geom__int_8h_a7d4141350049eb290d580bfa0ddb3c49}{g\_collectstats}} \& \mbox{\hyperlink{geom__int_8h_ad0fd9731f0ba500e108b226ee3f81515}{G\_STATS\_PROVIDERS}}) != 0 \&\& \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a5748aca46ccb3c74434a4b605338e1d2}{stat}} != NULL))}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00672}00672                 binuptime(\&now);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00673}00673         mtxp = mtx\_pool\_find(mtxpool\_sleep, \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00674}00674         mtx\_lock(mtxp);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00675}00675         \textcolor{keywordflow}{if} (\mbox{\hyperlink{geom__int_8h_a7d4141350049eb290d580bfa0ddb3c49}{g\_collectstats}} \& \mbox{\hyperlink{geom__int_8h_ad0fd9731f0ba500e108b226ee3f81515}{G\_STATS\_PROVIDERS}})}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00676}00676                 devstat\_end\_transaction\_bio\_bt(\mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a5748aca46ccb3c74434a4b605338e1d2}{stat}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \&now);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00677}00677         \textcolor{keywordflow}{if} (\mbox{\hyperlink{geom__int_8h_a7d4141350049eb290d580bfa0ddb3c49}{g\_collectstats}} \& \mbox{\hyperlink{geom__int_8h_afcdf3b728329b0207c8124cca30a8edf}{G\_STATS\_CONSUMERS}})}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00678}00678                 devstat\_end\_transaction\_bio\_bt(\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_adb9344ae8135d6d1b28a01ff5fe7bc3c}{stat}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \&now);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00679}00679 \textcolor{preprocessor}{\#ifdef INVARIANTS}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00680}00680         \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_acafd47028c17e8ad45325cde2602dc31}{nend}}++;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00681}00681 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00682}00682         mtx\_unlock(mtxp);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00683}00683 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00684}00684         \textcolor{keywordflow}{if} (error != ENOMEM) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00685}00685                 \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_error = error;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00686}00686                 \textcolor{keywordflow}{if} (direct) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00687}00687                         biodone(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00688}00688                 \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00689}00689                         \mbox{\hyperlink{geom__io_8c_a810db6352bed00c14d772ba462417bc4}{g\_bioq\_lock}}(\&\mbox{\hyperlink{geom__io_8c_abf1d08d4b2582f65bba25a6922e8cfb6}{g\_bio\_run\_up}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00690}00690                         first = TAILQ\_EMPTY(\&\mbox{\hyperlink{geom__io_8c_abf1d08d4b2582f65bba25a6922e8cfb6}{g\_bio\_run\_up}}.bio\_queue);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00691}00691                         TAILQ\_INSERT\_TAIL(\&\mbox{\hyperlink{geom__io_8c_abf1d08d4b2582f65bba25a6922e8cfb6}{g\_bio\_run\_up}}.bio\_queue, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, bio\_queue);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00692}00692                         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_flags |= BIO\_ONQUEUE;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00693}00693                         \mbox{\hyperlink{geom__io_8c_abf1d08d4b2582f65bba25a6922e8cfb6}{g\_bio\_run\_up}}.\mbox{\hyperlink{structg__bioq_ad3cc2bf5b7743d0daa3720a55c876c6f}{bio\_queue\_length}}++;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00694}00694                         \mbox{\hyperlink{geom__io_8c_a2169c27c2e61535dc15476af9a0f156f}{g\_bioq\_unlock}}(\&\mbox{\hyperlink{geom__io_8c_abf1d08d4b2582f65bba25a6922e8cfb6}{g\_bio\_run\_up}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00695}00695                         \textcolor{keywordflow}{if} (first)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00696}00696                                 wakeup(\&\mbox{\hyperlink{geom__int_8h_a963d0a11ed177d853f50a2db6974402c}{g\_wait\_up}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00697}00697                 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00698}00698                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00699}00699         \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00700}00700 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00701}00701         \textcolor{keywordflow}{if} (bootverbose)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00702}00702                 printf(\textcolor{stringliteral}{"{}ENOMEM \%p on \%p(\%s)\(\backslash\)n"{}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}, \mbox{\hyperlink{g__part__if_8m_a9bc7638f295763b77465c5ebebbd3442}{pp}}-\/>\mbox{\hyperlink{structg__provider_a2bffb416ee58cf4df7839c6fd5ec004a}{name}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00703}00703         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_children = 0;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00704}00704         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_inbed = 0;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00705}00705         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_driver1 = NULL;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00706}00706         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_driver2 = NULL;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00707}00707         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_pflags = 0;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00708}00708         \mbox{\hyperlink{geom__io_8c_aa433c0ba9e8cad7c7da1f9e17b46eb7a}{g\_io\_request}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00709}00709         \mbox{\hyperlink{geom__io_8c_a239f0eaeeec56c2a938bad9d2ec53447}{pace}} = 1;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00710}00710         \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00711}00711 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00712}00712 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00713}\mbox{\hyperlink{geom__io_8c_a1e69eaa2ef6048550eaeebcf775a3d0f}{00713}} \mbox{\hyperlink{geom__io_8c_a1e69eaa2ef6048550eaeebcf775a3d0f}{SYSCTL\_DECL}}(\_kern\_geom);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00714}00714 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00715}\mbox{\hyperlink{geom__io_8c_ae12cb08d2383f2d198b93ae4517e9229}{00715}} \textcolor{keyword}{static} \textcolor{keywordtype}{long} \mbox{\hyperlink{geom__io_8c_ae12cb08d2383f2d198b93ae4517e9229}{transient\_maps}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00716}\mbox{\hyperlink{geom__io_8c_a6b2f77e1d4e938738a93003adeeae86e}{00716}} \mbox{\hyperlink{geom__io_8c_a6b2f77e1d4e938738a93003adeeae86e}{SYSCTL\_LONG}}(\_kern\_geom, OID\_AUTO, \mbox{\hyperlink{geom__io_8c_ae12cb08d2383f2d198b93ae4517e9229}{transient\_maps}}, CTLFLAG\_RD,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00717}00717     \&\mbox{\hyperlink{geom__io_8c_ae12cb08d2383f2d198b93ae4517e9229}{transient\_maps}}, 0,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00718}00718     \textcolor{stringliteral}{"{}Total count of the transient mapping requests"{}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00719}\mbox{\hyperlink{geom__io_8c_a50f8643172fc4f47dc9a681747ab7442}{00719}} u\_int \mbox{\hyperlink{geom__io_8c_a50f8643172fc4f47dc9a681747ab7442}{transient\_map\_retries}} = 10;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00720}\mbox{\hyperlink{geom__io_8c_a096bde7d0ddb6559958eb13c8cbe5c57}{00720}} \mbox{\hyperlink{geom__io_8c_a096bde7d0ddb6559958eb13c8cbe5c57}{SYSCTL\_UINT}}(\_kern\_geom, OID\_AUTO, \mbox{\hyperlink{geom__io_8c_a50f8643172fc4f47dc9a681747ab7442}{transient\_map\_retries}}, CTLFLAG\_RW,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00721}00721     \&\mbox{\hyperlink{geom__io_8c_a50f8643172fc4f47dc9a681747ab7442}{transient\_map\_retries}}, 0,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00722}00722     \textcolor{stringliteral}{"{}Max count of retries used before giving up on creating transient map"{}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00723}\mbox{\hyperlink{geom__io_8c_aae289415002fe3ee5c807b286d5ee92d}{00723}} \textcolor{keywordtype}{int} \mbox{\hyperlink{geom__io_8c_aae289415002fe3ee5c807b286d5ee92d}{transient\_map\_hard\_failures}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00724}\mbox{\hyperlink{geom__io_8c_a9970ce23a688283febd55a3ff7f6b3c5}{00724}} \mbox{\hyperlink{geom__io_8c_a9970ce23a688283febd55a3ff7f6b3c5}{SYSCTL\_INT}}(\_kern\_geom, OID\_AUTO, \mbox{\hyperlink{geom__io_8c_aae289415002fe3ee5c807b286d5ee92d}{transient\_map\_hard\_failures}}, CTLFLAG\_RD,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00725}00725     \&\mbox{\hyperlink{geom__io_8c_aae289415002fe3ee5c807b286d5ee92d}{transient\_map\_hard\_failures}}, 0,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00726}00726     \textcolor{stringliteral}{"{}Failures to establish the transient mapping due to retry attempts "{}}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00727}00727     \textcolor{stringliteral}{"{}exhausted"{}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00728}\mbox{\hyperlink{geom__io_8c_a5ef720d9de5429c09b6bb02427d345a5}{00728}} \textcolor{keywordtype}{int} \mbox{\hyperlink{geom__io_8c_a5ef720d9de5429c09b6bb02427d345a5}{transient\_map\_soft\_failures}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00729}\mbox{\hyperlink{geom__io_8c_a9d263843161ee2c2541d1bc75131f77e}{00729}} \mbox{\hyperlink{geom__io_8c_a9970ce23a688283febd55a3ff7f6b3c5}{SYSCTL\_INT}}(\_kern\_geom, OID\_AUTO, \mbox{\hyperlink{geom__io_8c_a5ef720d9de5429c09b6bb02427d345a5}{transient\_map\_soft\_failures}}, CTLFLAG\_RD,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00730}00730     \&\mbox{\hyperlink{geom__io_8c_a5ef720d9de5429c09b6bb02427d345a5}{transient\_map\_soft\_failures}}, 0,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00731}00731     \textcolor{stringliteral}{"{}Count of retried failures to establish the transient mapping"{}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00732}\mbox{\hyperlink{geom__io_8c_a281e12c8fc32df321afed801a20695f3}{00732}} \textcolor{keywordtype}{int} \mbox{\hyperlink{geom__io_8c_a281e12c8fc32df321afed801a20695f3}{inflight\_transient\_maps}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00733}\mbox{\hyperlink{geom__io_8c_a1e314075772a2fbeb72b5014c001eda4}{00733}} \mbox{\hyperlink{geom__io_8c_a9970ce23a688283febd55a3ff7f6b3c5}{SYSCTL\_INT}}(\_kern\_geom, OID\_AUTO, \mbox{\hyperlink{geom__io_8c_a281e12c8fc32df321afed801a20695f3}{inflight\_transient\_maps}}, CTLFLAG\_RD,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00734}00734     \&\mbox{\hyperlink{geom__io_8c_a281e12c8fc32df321afed801a20695f3}{inflight\_transient\_maps}}, 0,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00735}00735     \textcolor{stringliteral}{"{}Current count of the active transient maps"{}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00736}00736 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00737}00737 \textcolor{keyword}{static} \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00738}\mbox{\hyperlink{geom__io_8c_a883044988cf2e6bdd47d683b5fef65ef}{00738}} \mbox{\hyperlink{geom__io_8c_a883044988cf2e6bdd47d683b5fef65ef}{g\_io\_transient\_map\_bio}}(\textcolor{keyword}{struct} bio *\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}})}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00739}00739 \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00740}00740         vm\_offset\_t addr;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00741}00741         \textcolor{keywordtype}{long} size;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00742}00742         u\_int retried;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00743}00743 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00744}00744         KASSERT(unmapped\_buf\_allowed, (\textcolor{stringliteral}{"{}unmapped disabled"{}}));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00745}00745 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00746}00746         size = round\_page(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_ma\_offset + \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_length);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00747}00747         KASSERT(size / PAGE\_SIZE == \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_ma\_n, (\textcolor{stringliteral}{"{}Bio too short \%p"{}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00748}00748         addr = 0;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00749}00749         retried = 0;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00750}00750         atomic\_add\_long(\&\mbox{\hyperlink{geom__io_8c_ae12cb08d2383f2d198b93ae4517e9229}{transient\_maps}}, 1);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00751}00751 retry:}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00752}00752         \textcolor{keywordflow}{if} (vmem\_alloc(transient\_arena, size, M\_BESTFIT | M\_NOWAIT, \&addr)) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00753}00753                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{geom__io_8c_a50f8643172fc4f47dc9a681747ab7442}{transient\_map\_retries}} != 0 \&\&}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00754}00754                     retried >= \mbox{\hyperlink{geom__io_8c_a50f8643172fc4f47dc9a681747ab7442}{transient\_map\_retries}}) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00755}00755                         CTR2(KTR\_GEOM, \textcolor{stringliteral}{"{}g\_down cannot map bp \%p provider \%s"{}},}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00756}00756                             \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_to-\/>name);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00757}00757                         atomic\_add\_int(\&\mbox{\hyperlink{geom__io_8c_aae289415002fe3ee5c807b286d5ee92d}{transient\_map\_hard\_failures}}, 1);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00758}00758                         \textcolor{keywordflow}{return} (EDEADLK\textcolor{comment}{/* XXXKIB */});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00759}00759                 \} \textcolor{keywordflow}{else} \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00760}00760                         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00761}00761 \textcolor{comment}{                         * Naive attempt to quisce the I/O to get more}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00762}00762 \textcolor{comment}{                         * in-\/flight requests completed and defragment}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00763}00763 \textcolor{comment}{                         * the transient\_arena.}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00764}00764 \textcolor{comment}{                         */}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00765}00765                         CTR3(KTR\_GEOM, \textcolor{stringliteral}{"{}g\_down retrymap bp \%p provider \%s r \%d"{}},}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00766}00766                             \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_to-\/>name, retried);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00767}00767                         pause(\textcolor{stringliteral}{"{}g\_d\_tra"{}}, hz / 10);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00768}00768                         retried++;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00769}00769                         atomic\_add\_int(\&\mbox{\hyperlink{geom__io_8c_a5ef720d9de5429c09b6bb02427d345a5}{transient\_map\_soft\_failures}}, 1);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00770}00770                         \textcolor{keywordflow}{goto} retry;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00771}00771                 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00772}00772         \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00773}00773         atomic\_add\_int(\&\mbox{\hyperlink{geom__io_8c_a281e12c8fc32df321afed801a20695f3}{inflight\_transient\_maps}}, 1);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00774}00774         pmap\_qenter((vm\_offset\_t)addr, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_ma, OFF\_TO\_IDX(size));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00775}00775         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_data = (caddr\_t)addr + \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_ma\_offset;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00776}00776         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_flags |= BIO\_TRANSIENT\_MAPPING;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00777}00777         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_flags \&= \string~BIO\_UNMAPPED;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00778}00778         return (EJUSTRETURN);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00779}00779 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00780}00780 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00781}00781 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00782}\mbox{\hyperlink{geom__io_8c_ad2f85206d861e45cf811c6d751618d02}{00782}} \mbox{\hyperlink{geom__io_8c_ad2f85206d861e45cf811c6d751618d02}{g\_io\_schedule\_down}}(\textcolor{keyword}{struct} thread *tp \_\_unused)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00783}00783 \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00784}00784         \textcolor{keyword}{struct }bio *\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00785}00785         \textcolor{keywordtype}{int} error;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00786}00786 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00787}00787         \textcolor{keywordflow}{for}(;;) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00788}00788                 \mbox{\hyperlink{geom__io_8c_a810db6352bed00c14d772ba462417bc4}{g\_bioq\_lock}}(\&\mbox{\hyperlink{geom__io_8c_a5f0aece450ad78a04055236cca8473b3}{g\_bio\_run\_down}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00789}00789                 \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}} = \mbox{\hyperlink{geom__io_8c_ad5cafe06e23235afce5ae5ef04c4a64e}{g\_bioq\_first}}(\&\mbox{\hyperlink{geom__io_8c_a5f0aece450ad78a04055236cca8473b3}{g\_bio\_run\_down}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00790}00790                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}} == NULL) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00791}00791                         CTR0(KTR\_GEOM, \textcolor{stringliteral}{"{}g\_down going to sleep"{}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00792}00792                         msleep(\&\mbox{\hyperlink{geom__int_8h_a9a4333acc01090bd4e4ef6a59db1fbb6}{g\_wait\_down}}, \&\mbox{\hyperlink{geom__io_8c_a5f0aece450ad78a04055236cca8473b3}{g\_bio\_run\_down}}.\mbox{\hyperlink{structg__bioq_adcb62ab1dec42229108fd25588e4b493}{bio\_queue\_lock}},}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00793}00793                             PRIBIO | PDROP, \textcolor{stringliteral}{"{}-\/"{}}, 0);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00794}00794                         \textcolor{keywordflow}{continue};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00795}00795                 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00796}00796                 CTR0(KTR\_GEOM, \textcolor{stringliteral}{"{}g\_down has work to do"{}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00797}00797                 \mbox{\hyperlink{geom__io_8c_a2169c27c2e61535dc15476af9a0f156f}{g\_bioq\_unlock}}(\&\mbox{\hyperlink{geom__io_8c_a5f0aece450ad78a04055236cca8473b3}{g\_bio\_run\_down}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00798}00798                 biotrack(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \_\_func\_\_);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00799}00799                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{geom__io_8c_a239f0eaeeec56c2a938bad9d2ec53447}{pace}} != 0) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00800}00800                         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00801}00801 \textcolor{comment}{                         * There has been at least one memory allocation}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00802}00802 \textcolor{comment}{                         * failure since the last I/O completed. Pause 1ms to}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00803}00803 \textcolor{comment}{                         * give the system a chance to free up memory. We only}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00804}00804 \textcolor{comment}{                         * do this once because a large number of allocations}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00805}00805 \textcolor{comment}{                         * can fail in the direct dispatch case and there's no}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00806}00806 \textcolor{comment}{                         * relationship between the number of these failures and}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00807}00807 \textcolor{comment}{                         * the length of the outage. If there's still an outage,}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00808}00808 \textcolor{comment}{                         * we'll pause again and again until it's}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00809}00809 \textcolor{comment}{                         * resolved. Older versions paused longer and once per}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00810}00810 \textcolor{comment}{                         * allocation failure. This was OK for a single threaded}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00811}00811 \textcolor{comment}{                         * g\_down, but with direct dispatch would lead to max of}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00812}00812 \textcolor{comment}{                         * 10 IOPs for minutes at a time when transient memory}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00813}00813 \textcolor{comment}{                         * issues prevented allocation for a batch of requests}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00814}00814 \textcolor{comment}{                         * from the upper layers.}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00815}00815 \textcolor{comment}{                         *}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00816}00816 \textcolor{comment}{                         * XXX This pacing is really lame. It needs to be solved}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00817}00817 \textcolor{comment}{                         * by other methods. This is OK only because the worst}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00818}00818 \textcolor{comment}{                         * case scenario is so rare. In the worst case scenario}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00819}00819 \textcolor{comment}{                         * all memory is tied up waiting for I/O to complete}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00820}00820 \textcolor{comment}{                         * which can never happen since we can't allocate bios}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00821}00821 \textcolor{comment}{                         * for that I/O.}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00822}00822 \textcolor{comment}{                         */}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00823}00823                         CTR0(KTR\_GEOM, \textcolor{stringliteral}{"{}g\_down pacing self"{}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00824}00824                         pause(\textcolor{stringliteral}{"{}g\_down"{}}, min(hz/1000, 1));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00825}00825                         \mbox{\hyperlink{geom__io_8c_a239f0eaeeec56c2a938bad9d2ec53447}{pace}} = 0;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00826}00826                 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00827}00827                 CTR2(KTR\_GEOM, \textcolor{stringliteral}{"{}g\_down processing bp \%p provider \%s"{}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}},}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00828}00828                     \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_to-\/>name);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00829}00829                 error = \mbox{\hyperlink{geom__io_8c_a08459c54223c9fa79235b909f270511c}{g\_io\_check}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00830}00830                 \textcolor{keywordflow}{if} (error >= 0) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00831}00831                         CTR3(KTR\_GEOM, \textcolor{stringliteral}{"{}g\_down g\_io\_check on bp \%p provider "{}}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00832}00832                             \textcolor{stringliteral}{"{}\%s returned \%d"{}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_to-\/>name, error);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00833}00833                         \mbox{\hyperlink{geom__io_8c_a0975be2dcd40a26a56a1a9bfc80433e1}{g\_io\_deliver}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, error);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00834}00834                         \textcolor{keywordflow}{continue};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00835}00835                 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00836}00836                 THREAD\_NO\_SLEEPING();}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00837}00837                 CTR4(KTR\_GEOM, \textcolor{stringliteral}{"{}g\_down starting bp \%p provider \%s off \%ld "{}}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00838}00838                     \textcolor{stringliteral}{"{}len \%ld"{}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_to-\/>name, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_offset,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00839}00839                     \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_length);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00840}00840                 \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_to-\/>geom-\/>start(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00841}00841                 THREAD\_SLEEPING\_OK();}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00842}00842         \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00843}00843 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00844}00844 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00845}00845 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00846}\mbox{\hyperlink{geom__io_8c_afd65e370677869af03d52719c07a2cae}{00846}} \mbox{\hyperlink{geom__io_8c_afd65e370677869af03d52719c07a2cae}{g\_io\_schedule\_up}}(\textcolor{keyword}{struct} thread *tp \_\_unused)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00847}00847 \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00848}00848         \textcolor{keyword}{struct }bio *\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00849}00849 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00850}00850         \textcolor{keywordflow}{for}(;;) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00851}00851                 \mbox{\hyperlink{geom__io_8c_a810db6352bed00c14d772ba462417bc4}{g\_bioq\_lock}}(\&\mbox{\hyperlink{geom__io_8c_abf1d08d4b2582f65bba25a6922e8cfb6}{g\_bio\_run\_up}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00852}00852                 \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}} = \mbox{\hyperlink{geom__io_8c_ad5cafe06e23235afce5ae5ef04c4a64e}{g\_bioq\_first}}(\&\mbox{\hyperlink{geom__io_8c_abf1d08d4b2582f65bba25a6922e8cfb6}{g\_bio\_run\_up}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00853}00853                 \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}} == NULL) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00854}00854                         CTR0(KTR\_GEOM, \textcolor{stringliteral}{"{}g\_up going to sleep"{}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00855}00855                         msleep(\&\mbox{\hyperlink{geom__int_8h_a963d0a11ed177d853f50a2db6974402c}{g\_wait\_up}}, \&\mbox{\hyperlink{geom__io_8c_abf1d08d4b2582f65bba25a6922e8cfb6}{g\_bio\_run\_up}}.\mbox{\hyperlink{structg__bioq_adcb62ab1dec42229108fd25588e4b493}{bio\_queue\_lock}},}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00856}00856                             PRIBIO | PDROP, \textcolor{stringliteral}{"{}-\/"{}}, 0);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00857}00857                         \textcolor{keywordflow}{continue};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00858}00858                 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00859}00859                 \mbox{\hyperlink{geom__io_8c_a2169c27c2e61535dc15476af9a0f156f}{g\_bioq\_unlock}}(\&\mbox{\hyperlink{geom__io_8c_abf1d08d4b2582f65bba25a6922e8cfb6}{g\_bio\_run\_up}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00860}00860                 THREAD\_NO\_SLEEPING();}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00861}00861                 CTR4(KTR\_GEOM, \textcolor{stringliteral}{"{}g\_up biodone bp \%p provider \%s off "{}}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00862}00862                     \textcolor{stringliteral}{"{}\%jd len \%ld"{}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_to-\/>name,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00863}00863                     \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_offset, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_length);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00864}00864                 biodone(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00865}00865                 THREAD\_SLEEPING\_OK();}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00866}00866         \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00867}00867 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00868}00868 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00869}00869 \textcolor{keywordtype}{void} *}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00870}\mbox{\hyperlink{geom_8h_a550c2071f79908eea3d1ccbf821c4e4f}{00870}} \mbox{\hyperlink{geom__io_8c_a550c2071f79908eea3d1ccbf821c4e4f}{g\_read\_data}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structg__consumer}{g\_consumer}} *\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}, 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} *error)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00871}00871 \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00872}00872         \textcolor{keyword}{struct }bio *\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00873}00873         \textcolor{keywordtype}{void} *ptr;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00874}00874         \textcolor{keywordtype}{int} errorc;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00875}00875 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00876}00876         KASSERT(\mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}} > 0 \&\& \mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}} >= \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a6435d5aec0376e995dce3131fd3beb52}{provider}}-\/>\mbox{\hyperlink{structg__provider_aea3cd43d41461790b8d0afcd8c49a355}{sectorsize}} \&\&}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00877}00877             \mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}} <= maxphys, (\textcolor{stringliteral}{"{}g\_read\_data(): invalid length \%jd"{}},}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00878}00878             (intmax\_t)\mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}}));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00879}00879 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00880}00880         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}} = \mbox{\hyperlink{geom__io_8c_ae13a6895af777c09cf19545f48517fe4}{g\_alloc\_bio}}();}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00881}00881         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_cmd = BIO\_READ;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00882}00882         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_done = NULL;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00883}00883         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_offset = \mbox{\hyperlink{g__raid__tr__if_8m_ad5f0842c40c7e46344fd8df70187fa0f}{offset}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00884}00884         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_length = \mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00885}00885         ptr = \mbox{\hyperlink{geom_8h_a0f190247baa73dc863a79fea9d5f6b4f}{g\_malloc}}(\mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}}, M\_WAITOK);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00886}00886         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_data = ptr;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00887}00887         \mbox{\hyperlink{geom__io_8c_aa433c0ba9e8cad7c7da1f9e17b46eb7a}{g\_io\_request}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00888}00888         errorc = biowait(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \textcolor{stringliteral}{"{}gread"{}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00889}00889         \textcolor{keywordflow}{if} (errorc == 0 \&\& \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_completed != \mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}})}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00890}00890                 errorc = EIO;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00891}00891         \textcolor{keywordflow}{if} (error != NULL)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00892}00892                 *error = errorc;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00893}00893         \mbox{\hyperlink{geom__io_8c_a83e02e0d1f0a82e083884fc1d49df564}{g\_destroy\_bio}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00894}00894         \textcolor{keywordflow}{if} (errorc) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00895}00895                 \mbox{\hyperlink{geom_8h_ad9924deb20de7b40cb6cf06e5ae28855}{g\_free}}(ptr);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00896}00896                 ptr = NULL;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00897}00897         \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00898}00898         \textcolor{keywordflow}{return} (ptr);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00899}00899 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00900}00900 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00901}00901 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00902}00902 \textcolor{comment}{ * A read function for use by ffs\_sbget when used by GEOM-\/layer routines.}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00903}00903 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00904}00904 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00905}\mbox{\hyperlink{geom_8h_ac8ae913e9fae0e6ecde8d92bf60ec225}{00905}} \mbox{\hyperlink{geom__io_8c_a34509397f6c2e798936dc37c6abbaf78}{g\_use\_g\_read\_data}}(\textcolor{keywordtype}{void} *devfd, off\_t loc, \textcolor{keywordtype}{void} **bufp, \textcolor{keywordtype}{int} size)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00906}00906 \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00907}00907         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__consumer}{g\_consumer}} *\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00908}00908 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00909}00909         KASSERT(*bufp == NULL,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00910}00910             (\textcolor{stringliteral}{"{}g\_use\_g\_read\_data: non-\/NULL *bufp \%p\(\backslash\)n"{}}, *bufp));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00911}00911 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00912}00912         \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}} = (\textcolor{keyword}{struct }\mbox{\hyperlink{structg__consumer}{g\_consumer}} *)devfd;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00913}00913         \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00914}00914 \textcolor{comment}{         * Take care not to issue an invalid I/O request. The offset of}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00915}00915 \textcolor{comment}{         * the superblock candidate must be multiples of the provider's}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00916}00916 \textcolor{comment}{         * sector size, otherwise an FFS can't exist on the provider}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00917}00917 \textcolor{comment}{         * anyway.}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00918}00918 \textcolor{comment}{         */}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00919}00919         \textcolor{keywordflow}{if} (loc \% \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a6435d5aec0376e995dce3131fd3beb52}{provider}}-\/>\mbox{\hyperlink{structg__provider_aea3cd43d41461790b8d0afcd8c49a355}{sectorsize}} != 0)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00920}00920                 \textcolor{keywordflow}{return} (ENOENT);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00921}00921         *bufp = \mbox{\hyperlink{geom__io_8c_a550c2071f79908eea3d1ccbf821c4e4f}{g\_read\_data}}(\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}, loc, size, NULL);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00922}00922         \textcolor{keywordflow}{if} (*bufp == NULL)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00923}00923                 \textcolor{keywordflow}{return} (ENOENT);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00924}00924         \textcolor{keywordflow}{return} (0);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00925}00925 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00926}00926 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00927}00927 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00928}\mbox{\hyperlink{geom_8h_a9b87ecbd812c109546b077da483baada}{00928}} \mbox{\hyperlink{geom__io_8c_a9b87ecbd812c109546b077da483baada}{g\_write\_data}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structg__consumer}{g\_consumer}} *\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}, off\_t \mbox{\hyperlink{g__raid__tr__if_8m_ad5f0842c40c7e46344fd8df70187fa0f}{offset}}, \textcolor{keywordtype}{void} *ptr, off\_t \mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}})}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00929}00929 \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00930}00930         \textcolor{keyword}{struct }bio *\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00931}00931         \textcolor{keywordtype}{int} error;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00932}00932 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00933}00933         KASSERT(\mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}} > 0 \&\& \mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}} >= \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a6435d5aec0376e995dce3131fd3beb52}{provider}}-\/>\mbox{\hyperlink{structg__provider_aea3cd43d41461790b8d0afcd8c49a355}{sectorsize}} \&\&}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00934}00934             \mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}} <= maxphys, (\textcolor{stringliteral}{"{}g\_write\_data(): invalid length \%jd"{}},}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00935}00935             (intmax\_t)\mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}}));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00936}00936 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00937}00937         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}} = \mbox{\hyperlink{geom__io_8c_ae13a6895af777c09cf19545f48517fe4}{g\_alloc\_bio}}();}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00938}00938         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_cmd = BIO\_WRITE;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00939}00939         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_done = NULL;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00940}00940         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_offset = \mbox{\hyperlink{g__raid__tr__if_8m_ad5f0842c40c7e46344fd8df70187fa0f}{offset}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00941}00941         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_length = \mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00942}00942         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_data = ptr;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00943}00943         \mbox{\hyperlink{geom__io_8c_aa433c0ba9e8cad7c7da1f9e17b46eb7a}{g\_io\_request}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00944}00944         error = biowait(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \textcolor{stringliteral}{"{}gwrite"{}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00945}00945         \textcolor{keywordflow}{if} (error == 0 \&\& \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_completed != \mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}})}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00946}00946                 error = EIO;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00947}00947         \mbox{\hyperlink{geom__io_8c_a83e02e0d1f0a82e083884fc1d49df564}{g\_destroy\_bio}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00948}00948         \textcolor{keywordflow}{return} (error);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00949}00949 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00950}00950 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00951}00951 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00952}00952 \textcolor{comment}{ * A write function for use by ffs\_sbput when used by GEOM-\/layer routines.}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00953}00953 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00954}00954 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00955}\mbox{\hyperlink{geom_8h_afb595e8ff20313f2636444c72e50601e}{00955}} \mbox{\hyperlink{geom__io_8c_a0c91cac14cc78669331fb1384d3d429e}{g\_use\_g\_write\_data}}(\textcolor{keywordtype}{void} *devfd, off\_t loc, \textcolor{keywordtype}{void} *\mbox{\hyperlink{g__part__if_8m_ac14417684334d01b4e1e807a19d92816}{buf}}, \textcolor{keywordtype}{int} size)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00956}00956 \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00957}00957 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00958}00958         \textcolor{keywordflow}{return} (\mbox{\hyperlink{geom__io_8c_a9b87ecbd812c109546b077da483baada}{g\_write\_data}}((\textcolor{keyword}{struct} \mbox{\hyperlink{structg__consumer}{g\_consumer}} *)devfd, loc, \mbox{\hyperlink{g__part__if_8m_ac14417684334d01b4e1e807a19d92816}{buf}}, size));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00959}00959 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00960}00960 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00961}00961 \textcolor{keywordtype}{int}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00962}\mbox{\hyperlink{geom_8h_a6396cdc575e58dfa3d425eb99ab9a420}{00962}} \mbox{\hyperlink{geom__io_8c_a6396cdc575e58dfa3d425eb99ab9a420}{g\_delete\_data}}(\textcolor{keyword}{struct} \mbox{\hyperlink{structg__consumer}{g\_consumer}} *\mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}, off\_t \mbox{\hyperlink{g__raid__tr__if_8m_ad5f0842c40c7e46344fd8df70187fa0f}{offset}}, off\_t \mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}})}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00963}00963 \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00964}00964         \textcolor{keyword}{struct }bio *\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00965}00965         \textcolor{keywordtype}{int} error;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00966}00966 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00967}00967         KASSERT(\mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}} > 0 \&\& \mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}} >= \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}}-\/>\mbox{\hyperlink{structg__consumer_a6435d5aec0376e995dce3131fd3beb52}{provider}}-\/>\mbox{\hyperlink{structg__provider_aea3cd43d41461790b8d0afcd8c49a355}{sectorsize}},}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00968}00968             (\textcolor{stringliteral}{"{}g\_delete\_data(): invalid length \%jd"{}}, (intmax\_t)\mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}}));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00969}00969 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00970}00970         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}} = \mbox{\hyperlink{geom__io_8c_ae13a6895af777c09cf19545f48517fe4}{g\_alloc\_bio}}();}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00971}00971         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_cmd = BIO\_DELETE;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00972}00972         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_done = NULL;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00973}00973         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_offset = \mbox{\hyperlink{g__raid__tr__if_8m_ad5f0842c40c7e46344fd8df70187fa0f}{offset}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00974}00974         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_length = \mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00975}00975         \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_data = NULL;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00976}00976         \mbox{\hyperlink{geom__io_8c_aa433c0ba9e8cad7c7da1f9e17b46eb7a}{g\_io\_request}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \mbox{\hyperlink{g__part__if_8m_a294f18324585ff37641fb8aa1c9ccd82}{cp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00977}00977         error = biowait(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \textcolor{stringliteral}{"{}gdelete"{}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00978}00978         \textcolor{keywordflow}{if} (error == 0 \&\& \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_completed != \mbox{\hyperlink{g__raid__tr__if_8m_ae809d5359ac030c60a30a8f0b2294b82}{length}})}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00979}00979                 error = EIO;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00980}00980         \mbox{\hyperlink{geom__io_8c_a83e02e0d1f0a82e083884fc1d49df564}{g\_destroy\_bio}}(\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00981}00981         \textcolor{keywordflow}{return} (error);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00982}00982 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00983}00983 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00984}00984 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00985}\mbox{\hyperlink{geom__io_8c_a2469c6eb30e660052d0b62badcb1ce76}{00985}} \mbox{\hyperlink{geom__io_8c_a2469c6eb30e660052d0b62badcb1ce76}{g\_print\_bio}}(\textcolor{keyword}{const} \textcolor{keywordtype}{char} *prefix, \textcolor{keyword}{const} \textcolor{keyword}{struct} bio *\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}, \textcolor{keyword}{const} \textcolor{keywordtype}{char} *fmtsuffix,}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00986}00986     ...)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00987}00987 \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00988}00988 \textcolor{preprocessor}{\#ifndef PRINTF\_BUFR\_SIZE}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00989}00989 \textcolor{preprocessor}{\#define PRINTF\_BUFR\_SIZE 64}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00990}00990 \textcolor{preprocessor}{\#endif}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00991}00991         \textcolor{keywordtype}{char} bufr[\mbox{\hyperlink{geom__io_8c_a442a6d3b37154bc5bad5189f0564de27}{PRINTF\_BUFR\_SIZE}}];}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00992}00992         \textcolor{keyword}{struct }sbuf \mbox{\hyperlink{g__part__if_8m_a4c23eb4bab5aa5d69bd84384b94d1f79}{sb}}, *sbp \_\_unused;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00993}00993         va\_list ap;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00994}00994 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00995}00995         sbp = sbuf\_new(\&\mbox{\hyperlink{g__part__if_8m_a4c23eb4bab5aa5d69bd84384b94d1f79}{sb}}, bufr, \textcolor{keyword}{sizeof}(bufr), SBUF\_FIXEDLEN);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00996}00996         KASSERT(sbp != NULL, (\textcolor{stringliteral}{"{}sbuf\_new misused?"{}}));}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00997}00997 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00998}00998         sbuf\_set\_drain(\&\mbox{\hyperlink{g__part__if_8m_a4c23eb4bab5aa5d69bd84384b94d1f79}{sb}}, sbuf\_printf\_drain, NULL);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l00999}00999 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01000}01000         sbuf\_cat(\&\mbox{\hyperlink{g__part__if_8m_a4c23eb4bab5aa5d69bd84384b94d1f79}{sb}}, prefix);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01001}01001         \mbox{\hyperlink{geom__io_8c_ac9e728db9f4aae1fbd1db617dd1cd0d0}{g\_format\_bio}}(\&\mbox{\hyperlink{g__part__if_8m_a4c23eb4bab5aa5d69bd84384b94d1f79}{sb}}, \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01002}01002 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01003}01003         va\_start(ap, fmtsuffix);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01004}01004         sbuf\_vprintf(\&\mbox{\hyperlink{g__part__if_8m_a4c23eb4bab5aa5d69bd84384b94d1f79}{sb}}, fmtsuffix, ap);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01005}01005         va\_end(ap);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01006}01006 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01007}01007         sbuf\_nl\_terminate(\&\mbox{\hyperlink{g__part__if_8m_a4c23eb4bab5aa5d69bd84384b94d1f79}{sb}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01008}01008 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01009}01009         sbuf\_finish(\&\mbox{\hyperlink{g__part__if_8m_a4c23eb4bab5aa5d69bd84384b94d1f79}{sb}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01010}01010         sbuf\_delete(\&\mbox{\hyperlink{g__part__if_8m_a4c23eb4bab5aa5d69bd84384b94d1f79}{sb}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01011}01011 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01012}01012 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01013}01013 \textcolor{keywordtype}{void}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01014}\mbox{\hyperlink{geom_8h_aff8179a0805768bbd56c5cdd035bf97e}{01014}} \mbox{\hyperlink{geom__io_8c_ac9e728db9f4aae1fbd1db617dd1cd0d0}{g\_format\_bio}}(\textcolor{keyword}{struct} sbuf *\mbox{\hyperlink{g__part__if_8m_a4c23eb4bab5aa5d69bd84384b94d1f79}{sb}}, \textcolor{keyword}{const} \textcolor{keyword}{struct} bio *\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}})}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01015}01015 \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01016}01016         \textcolor{keyword}{const} \textcolor{keywordtype}{char} *pname, *\mbox{\hyperlink{g__part__if_8m_ab932f62e09484cd3ce109f3db9d8f3ce}{cmd}} = NULL;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01017}01017 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01018}01018         \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_to != NULL)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01019}01019                 pname = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_to-\/>name;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01020}01020         \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_parent != NULL \&\& \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_parent-\/>bio\_to != NULL)}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01021}01021                 pname = \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_parent-\/>bio\_to-\/>name;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01022}01022         \textcolor{keywordflow}{else}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01023}01023                 pname = \textcolor{stringliteral}{"{}[unknown]"{}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01024}01024 }
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01025}01025         \textcolor{keywordflow}{switch} (\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_cmd) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01026}01026         \textcolor{keywordflow}{case} BIO\_GETATTR:}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01027}01027                 \mbox{\hyperlink{g__part__if_8m_ab932f62e09484cd3ce109f3db9d8f3ce}{cmd}} = \textcolor{stringliteral}{"{}GETATTR"{}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01028}01028                 sbuf\_printf(\mbox{\hyperlink{g__part__if_8m_a4c23eb4bab5aa5d69bd84384b94d1f79}{sb}}, \textcolor{stringliteral}{"{}\%s[\%s(attr=\%s)]"{}}, pname, \mbox{\hyperlink{g__part__if_8m_ab932f62e09484cd3ce109f3db9d8f3ce}{cmd}},}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01029}01029                     \mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_attribute);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01030}01030                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01031}01031         \textcolor{keywordflow}{case} BIO\_FLUSH:}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01032}01032                 \mbox{\hyperlink{g__part__if_8m_ab932f62e09484cd3ce109f3db9d8f3ce}{cmd}} = \textcolor{stringliteral}{"{}FLUSH"{}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01033}01033                 sbuf\_printf(\mbox{\hyperlink{g__part__if_8m_a4c23eb4bab5aa5d69bd84384b94d1f79}{sb}}, \textcolor{stringliteral}{"{}\%s[\%s]"{}}, pname, \mbox{\hyperlink{g__part__if_8m_ab932f62e09484cd3ce109f3db9d8f3ce}{cmd}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01034}01034                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01035}01035         \textcolor{keywordflow}{case} BIO\_ZONE: \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01036}01036                 \textcolor{keywordtype}{char} *subcmd = NULL;}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01037}01037                 \mbox{\hyperlink{g__part__if_8m_ab932f62e09484cd3ce109f3db9d8f3ce}{cmd}} = \textcolor{stringliteral}{"{}ZONE"{}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01038}01038                 \textcolor{keywordflow}{switch} (\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_zone.zone\_cmd) \{}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01039}01039                 \textcolor{keywordflow}{case} DISK\_ZONE\_OPEN:}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01040}01040                         subcmd = \textcolor{stringliteral}{"{}OPEN"{}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01041}01041                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01042}01042                 \textcolor{keywordflow}{case} DISK\_ZONE\_CLOSE:}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01043}01043                         subcmd = \textcolor{stringliteral}{"{}CLOSE"{}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01044}01044                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01045}01045                 \textcolor{keywordflow}{case} DISK\_ZONE\_FINISH:}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01046}01046                         subcmd = \textcolor{stringliteral}{"{}FINISH"{}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01047}01047                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01048}01048                 \textcolor{keywordflow}{case} DISK\_ZONE\_RWP:}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01049}01049                         subcmd = \textcolor{stringliteral}{"{}RWP"{}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01050}01050                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01051}01051                 \textcolor{keywordflow}{case} DISK\_ZONE\_REPORT\_ZONES:}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01052}01052                         subcmd = \textcolor{stringliteral}{"{}REPORT ZONES"{}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01053}01053                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01054}01054                 \textcolor{keywordflow}{case} DISK\_ZONE\_GET\_PARAMS:}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01055}01055                         subcmd = \textcolor{stringliteral}{"{}GET PARAMS"{}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01056}01056                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01057}01057                 \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01058}01058                         subcmd = \textcolor{stringliteral}{"{}UNKNOWN"{}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01059}01059                         \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01060}01060                 \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01061}01061                 sbuf\_printf(\mbox{\hyperlink{g__part__if_8m_a4c23eb4bab5aa5d69bd84384b94d1f79}{sb}}, \textcolor{stringliteral}{"{}\%s[\%s,\%s]"{}}, pname, \mbox{\hyperlink{g__part__if_8m_ab932f62e09484cd3ce109f3db9d8f3ce}{cmd}}, subcmd);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01062}01062                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01063}01063         \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01064}01064         \textcolor{keywordflow}{case} BIO\_READ:}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01065}01065                 \mbox{\hyperlink{g__part__if_8m_ab932f62e09484cd3ce109f3db9d8f3ce}{cmd}} = \textcolor{stringliteral}{"{}READ"{}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01066}01066                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01067}01067         \textcolor{keywordflow}{case} BIO\_WRITE:}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01068}01068                 \mbox{\hyperlink{g__part__if_8m_ab932f62e09484cd3ce109f3db9d8f3ce}{cmd}} = \textcolor{stringliteral}{"{}WRITE"{}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01069}01069                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01070}01070         \textcolor{keywordflow}{case} BIO\_DELETE:}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01071}01071                 \mbox{\hyperlink{g__part__if_8m_ab932f62e09484cd3ce109f3db9d8f3ce}{cmd}} = \textcolor{stringliteral}{"{}DELETE"{}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01072}01072                 \textcolor{keywordflow}{break};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01073}01073         \textcolor{keywordflow}{default}:}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01074}01074                 \mbox{\hyperlink{g__part__if_8m_ab932f62e09484cd3ce109f3db9d8f3ce}{cmd}} = \textcolor{stringliteral}{"{}UNKNOWN"{}};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01075}01075                 sbuf\_printf(\mbox{\hyperlink{g__part__if_8m_a4c23eb4bab5aa5d69bd84384b94d1f79}{sb}}, \textcolor{stringliteral}{"{}\%s[\%s()]"{}}, pname, \mbox{\hyperlink{g__part__if_8m_ab932f62e09484cd3ce109f3db9d8f3ce}{cmd}});}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01076}01076                 \textcolor{keywordflow}{return};}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01077}01077         \}}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01078}01078         sbuf\_printf(\mbox{\hyperlink{g__part__if_8m_a4c23eb4bab5aa5d69bd84384b94d1f79}{sb}}, \textcolor{stringliteral}{"{}\%s[\%s(offset=\%jd, length=\%jd)]"{}}, pname, \mbox{\hyperlink{g__part__if_8m_ab932f62e09484cd3ce109f3db9d8f3ce}{cmd}},}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01079}01079             (intmax\_t)\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_offset, (intmax\_t)\mbox{\hyperlink{g__part__if_8m_a3786db8db96c32f69df9f7cd325a7507}{bp}}-\/>bio\_length);}
\DoxyCodeLine{\Hypertarget{geom__io_8c_source_l01080}01080 \}}

\end{DoxyCode}
