1<html><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968"><title>find_inode_nowait</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="Linux Filesystems API"><link rel="up" href="inode_handling.html" title="Inode Handling"><link rel="prev" href="API-ilookup.html" title="ilookup"><link rel="next" href="API-iput.html" title="iput"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"><span class="phrase">find_inode_nowait</span></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="API-ilookup.html">Prev</a>&#160;</td><th width="60%" align="center">Inode Handling</th><td width="20%" align="right">&#160;<a accesskey="n" href="API-iput.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="API-find-inode-nowait"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>find_inode_nowait &#8212; 
2     find an inode in the inode cache
3 </p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">struct inode * <b class="fsfunc">find_inode_nowait </b>(</code></td><td>struct super_block * <var class="pdparam">sb</var>, </td></tr><tr><td>&#160;</td><td>unsigned long <var class="pdparam">hashval</var>, </td></tr><tr><td>&#160;</td><td>int (*<var class="pdparam">match</var>)
4     <code>(</code>struct inode *, unsigned long, 					     void *<code>)</code>, </td></tr><tr><td>&#160;</td><td>void * <var class="pdparam">data</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer">&#160;</div></div></div><div class="refsect1"><a name="idp1101786268"></a><h2>Arguments</h2><div class="variablelist"><dl class="variablelist"><dt><span class="term"><em class="parameter"><code>sb</code></em></span></dt><dd><p>
5     super block of file system to search
6    </p></dd><dt><span class="term"><em class="parameter"><code>hashval</code></em></span></dt><dd><p>
7     hash value (usually inode number) to search for
8    </p></dd><dt><span class="term"><em class="parameter"><code>match</code></em></span></dt><dd><p>
9     callback used for comparisons between inodes
10    </p></dd><dt><span class="term"><em class="parameter"><code>data</code></em></span></dt><dd><p>
11     opaque data pointer to pass to <em class="parameter"><code>match</code></em>
12    </p></dd></dl></div></div><div class="refsect1"><a name="idp1101791196"></a><h2>Description</h2><p>
13   Search for the inode specified by <em class="parameter"><code>hashval</code></em> and <em class="parameter"><code>data</code></em> in the inode
14   cache, where the helper function <em class="parameter"><code>match</code></em> will return 0 if the inode
15   does not match, 1 if the inode does match, and -1 if the search
16   should be stopped.  The <em class="parameter"><code>match</code></em> function must be responsible for
17   taking the i_lock spin_lock and checking i_state for an inode being
18   freed or being initialized, and incrementing the reference count
19   before returning 1.  It also must not sleep, since it is called with
20   the inode_hash_lock spinlock held.
21   </p><p>
22
23   This is a even more generalized version of <code class="function">ilookup5</code> when the
24   function must never block --- <code class="function">find_inode</code> can block in
25   <code class="function">__wait_on_freeing_inode</code> --- or when the caller can not increment
26   the reference count because the resulting <code class="function">iput</code> might cause an
27   inode eviction.  The tradeoff is that the <em class="parameter"><code>match</code></em> funtion must be
28   very carefully implemented.
29</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="API-ilookup.html">Prev</a>&#160;</td><td width="20%" align="center"><a accesskey="u" href="inode_handling.html">Up</a></td><td width="40%" align="right">&#160;<a accesskey="n" href="API-iput.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span class="phrase">ilookup</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 class="phrase">iput</span></td></tr></table></div></body></html>
30