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> </td><th width="60%" align="center">Inode Handling</th><td width="20%" align="right"> <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 — 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> </td><td>unsigned long <var class="pdparam">hashval</var>, </td></tr><tr><td> </td><td>int (*<var class="pdparam">match</var>) 4 <code>(</code>struct inode *, unsigned long, void *<code>)</code>, </td></tr><tr><td> </td><td>void * <var class="pdparam">data</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </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> </td><td width="20%" align="center"><a accesskey="u" href="inode_handling.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="API-iput.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span class="phrase">ilookup</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> <span class="phrase">iput</span></td></tr></table></div></body></html> 30