Sophie

Sophie

distrib > CentOS > 6 > i386 > by-pkgid > 2c51d8eb79f8810ada971ee8c30ce1e5 > files > 2036

kernel-doc-2.6.32-71.14.1.el6.noarch.rpm

<?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>blk_queue_dma_drain</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><link rel="home" href="index.html" title="The Linux Kernel API" /><link rel="up" href="ch14.html" title="Chapter&#160;14.&#160;Block Devices" /><link rel="prev" href="re559.html" title="blk_queue_update_dma_pad" /><link rel="next" href="re561.html" title="blk_queue_segment_boundary" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"><span>blk_queue_dma_drain</span></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="re559.html">Prev</a>&#160;</td><th width="60%" align="center">Chapter&#160;14.&#160;Block Devices</th><td width="20%" align="right">&#160;<a accesskey="n" href="re561.html">Next</a></td></tr></table><hr /></div><div class="refentry" title="blk_queue_dma_drain"><a id="API-blk-queue-dma-drain"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>blk_queue_dma_drain &#8212; 
     Set up a drain buffer for excess dma.
 </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">int <b class="fsfunc">blk_queue_dma_drain </b>(</code></td><td>struct request_queue * <var class="pdparam">q</var>, </td></tr><tr><td>&#160;</td><td>dma_drain_needed_fn * <var class="pdparam">dma_drain_needed</var>, </td></tr><tr><td>&#160;</td><td>void * <var class="pdparam">buf</var>, </td></tr><tr><td>&#160;</td><td>unsigned int <var class="pdparam">size</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer">&#160;</div></div></div><div class="refsect1" title="Arguments"><a id="id2705088"></a><h2>Arguments</h2><div class="variablelist"><dl><dt><span class="term"><em class="parameter"><code>q</code></em></span></dt><dd><p>
     the request queue for the device
    </p></dd><dt><span class="term"><em class="parameter"><code>dma_drain_needed</code></em></span></dt><dd><p>
     fn which returns non-zero if drain is necessary
    </p></dd><dt><span class="term"><em class="parameter"><code>buf</code></em></span></dt><dd><p>
     physically contiguous buffer
    </p></dd><dt><span class="term"><em class="parameter"><code>size</code></em></span></dt><dd><p>
     size of the buffer in bytes
    </p></dd></dl></div></div><div class="refsect1" title="Description"><a id="id2705166"></a><h2>Description</h2><p>
   Some devices have excess DMA problems and can't simply discard (or
   zero fill) the unwanted piece of the transfer.  They have to have a
   real area of memory to transfer it into.  The use case for this is
   ATAPI devices in DMA mode.  If the packet command causes a transfer
   bigger than the transfer size some HBAs will lock up if there
   aren't DMA elements to contain the excess transfer.  What this API
   does is adjust the queue so that the buf is always appended
   silently to the scatterlist.
</p></div><div class="refsect1" title="Note"><a id="id2705185"></a><h2>Note</h2><p>
   This routine adjusts max_hw_segments to make room for appending
   the drain buffer.  If you call <code class="function">blk_queue_max_segments</code> after calling
   this routine, you must set the limit to one fewer than your device
   can support otherwise there won't be room for the drain buffer.
</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="re559.html">Prev</a>&#160;</td><td width="20%" align="center"><a accesskey="u" href="ch14.html">Up</a></td><td width="40%" align="right">&#160;<a accesskey="n" href="re561.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span>blk_queue_update_dma_pad</span>&#160;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&#160;<span>blk_queue_segment_boundary</span></td></tr></table></div></body></html>