<?xml version="1.0" encoding="ANSI_X3.4-1968" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968" /><title>ll_rw_block</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><link rel="home" href="index.html" title="Linux Filesystems API" /><link rel="up" href="ch01s06.html" title="Other Functions" /><link rel="prev" href="re86.html" title="block_invalidatepage" /><link rel="next" href="re88.html" title="bh_uptodate_or_lock" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"><span>ll_rw_block</span></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="re86.html">Prev</a> </td><th width="60%" align="center">Other Functions</th><td width="20%" align="right"> <a accesskey="n" href="re88.html">Next</a></td></tr></table><hr /></div><div class="refentry" title="ll_rw_block"><a id="API-ll-rw-block"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ll_rw_block — level access to block devices (DEPRECATED) </p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <b class="fsfunc">ll_rw_block </b>(</code></td><td>int <var class="pdparam">rw</var>, </td></tr><tr><td> </td><td>int <var class="pdparam">nr</var>, </td></tr><tr><td> </td><td>struct buffer_head * <var class="pdparam">bhs[]</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Arguments"><a id="id3109437"></a><h2>Arguments</h2><div class="variablelist"><dl><dt><span class="term"><em class="parameter"><code>rw</code></em></span></dt><dd><p> whether to <code class="constant">READ</code> or <code class="constant">WRITE</code> or <code class="constant">SWRITE</code> or maybe <code class="constant">READA</code> (readahead) </p></dd><dt><span class="term"><em class="parameter"><code>nr</code></em></span></dt><dd><p> number of <span class="structname">struct buffer_heads</span> in the array </p></dd><dt><span class="term"><em class="parameter"><code>bhs[]</code></em></span></dt><dd><p> array of pointers to <span class="structname">struct buffer_head</span> </p></dd></dl></div></div><div class="refsect1" title="Description"><a id="id3109513"></a><h2>Description</h2><p> <code class="function">ll_rw_block</code> takes an array of pointers to <span class="structname">struct buffer_heads</span>, and requests an I/O operation on them, either a <code class="constant">READ</code> or a <code class="constant">WRITE</code>. The third <code class="constant">SWRITE</code> is like <code class="constant">WRITE</code> only we make sure that the *current* data in buffers are sent to disk. The fourth <code class="constant">READA</code> option is described in the documentation for <code class="function">generic_make_request</code> which <code class="function">ll_rw_block</code> calls. </p><p> This function drops any buffer that it cannot get a lock on (with the BH_Lock state bit) unless SWRITE is required, 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 won't assume that they are actually clean until the buffer gets unlocked). </p><p> 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. </p><p> All of the buffers must be for the same device, and must also be a multiple of the current approved size for the device. </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="re86.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch01s06.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="re88.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span>block_invalidatepage</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> <span>bh_uptodate_or_lock</span></td></tr></table></div></body></html>