Sophie

Sophie

distrib > Mandriva > 9.0 > i586 > by-pkgid > 98e91bc877e03cf3582cd163550eb7e3 > files > 122

kernel-doc-html-2.4.19-16mdk.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML
><HEAD
><TITLE
>ll_rw_block</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="HOME"
TITLE="The Linux Kernel API"
HREF="book1.html"><LINK
REL="UP"
TITLE="Block Devices"
HREF="c11504.html"><LINK
REL="PREVIOUS"
TITLE="submit_bh"
HREF="r11705.html"><LINK
REL="NEXT"
TITLE="end_that_request_first"
HREF="r11801.html"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Linux Kernel API</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="r11705.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="r11801.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><H1
><A
NAME="AEN11744"
></A
><SPAN
CLASS="phrase"
><SPAN
CLASS="PHRASE"
>ll_rw_block</SPAN
></SPAN
></H1
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN11748"
></A
><H2
>Name</H2
>ll_rw_block&nbsp;--&nbsp;     level access to block devices
 </DIV
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN11751"
></A
><H2
>Synopsis</H2
><DIV
CLASS="FUNCSYNOPSIS"
><A
NAME="AEN11753"
></A
><P
></P
><P
><CODE
><CODE
CLASS="FUNCDEF"
>void <TT
CLASS="FUNCTION"
>ll_rw_block </TT
></CODE
>(int <TT
CLASS="PARAMETER"
><I
>rw</I
></TT
>, int <TT
CLASS="PARAMETER"
><I
>nr</I
></TT
>, struct buffer_head * * <TT
CLASS="PARAMETER"
><I
>bhs</I
></TT
>);</CODE
></P
><P
></P
></DIV
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN11763"
></A
><H2
>Arguments</H2
><P
></P
><DIV
CLASS="VARIABLELIST"
><DL
><DT
><TT
CLASS="PARAMETER"
><I
>rw</I
></TT
></DT
><DD
><P
>      whether to <TT
CLASS="CONSTANT"
>READ</TT
> or <TT
CLASS="CONSTANT"
>WRITE</TT
> or maybe <TT
CLASS="CONSTANT"
>READA</TT
> (readahead)
    </P
></DD
><DT
><TT
CLASS="PARAMETER"
><I
>nr</I
></TT
></DT
><DD
><P
>      number of &#38;struct buffer_heads in the array
    </P
></DD
><DT
><TT
CLASS="PARAMETER"
><I
>bhs</I
></TT
></DT
><DD
><P
>      array of pointers to &#38;struct buffer_head
    </P
></DD
></DL
></DIV
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN11784"
></A
><H2
>Description</H2
><P
>   <TT
CLASS="FUNCTION"
>ll_rw_block</TT
> takes an array of pointers to &#38;struct buffer_heads,
   and requests an I/O operation on them, either a <TT
CLASS="CONSTANT"
>READ</TT
> or a <TT
CLASS="CONSTANT"
>WRITE</TT
>.
   The third <TT
CLASS="CONSTANT"
>READA</TT
> option is described in the documentation for
   <TT
CLASS="FUNCTION"
>generic_make_request</TT
> which <TT
CLASS="FUNCTION"
>ll_rw_block</TT
> calls.
   </P
><P
>&#13;   This function provides extra functionality that is not in
   <TT
CLASS="FUNCTION"
>generic_make_request</TT
> that is relevant to buffers in the buffer
   cache or page cache.  In particular it drops any buffer that it
   cannot get a lock on (with the BH_Lock state bit), any buffer that
   appears to be clean when doing a write request, and any buffer that
   appears to be up-to-date when doing read request.  Further it marks
   as clean buffers that are processed for writing (the buffer cache
   wont assume that they are actually clean until the buffer gets
   unlocked).
   </P
><P
>&#13;   ll_rw_block sets b_end_io to simple completion handler that marks
   the buffer up-to-date (if approriate), unlocks the buffer and wakes
   any waiters.  As client that needs a more interesting completion
   routine should call <TT
CLASS="FUNCTION"
>submit_bh</TT
> (or <TT
CLASS="FUNCTION"
>generic_make_request</TT
>)
   directly.
 </P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN11798"
></A
><H2
>Caveat</H2
><P
>   All of the buffers must be for the same device, and must also be
 </P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="r11705.html"
ACCESSKEY="P"
>&#60;&#60;&#60; Previous</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="book1.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="r11801.html"
ACCESSKEY="N"
>Next &#62;&#62;&#62;</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><SPAN
CLASS="phrase"
><SPAN
CLASS="PHRASE"
>submit_bh</SPAN
></SPAN
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c11504.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><SPAN
CLASS="phrase"
><SPAN
CLASS="PHRASE"
>end_that_request_first</SPAN
></SPAN
></TD
></TR
></TABLE
></DIV
></BODY
></HTML
>