1<html><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968"><title>journal_lock_updates</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="functions.html#transaction_level" title="Transasction Level"><link rel="prev" href="API-journal-restart.html" title="journal_restart"><link rel="next" href="API-journal-unlock-updates.html" title="journal_unlock_updates"></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">journal_lock_updates</span></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="API-journal-restart.html">Prev</a> </td><th width="60%" align="center">Transasction Level</th><td width="20%" align="right"> <a accesskey="n" href="API-journal-unlock-updates.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="API-journal-lock-updates"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>journal_lock_updates — 2 establish a transaction barrier. 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">void <b class="fsfunc">journal_lock_updates </b>(</code></td><td>journal_t * <var class="pdparam">journal</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idp1103865332"></a><h2>Arguments</h2><div class="variablelist"><dl class="variablelist"><dt><span class="term"><em class="parameter"><code>journal</code></em></span></dt><dd><p> 4 Journal to establish a barrier on. 5 </p></dd></dl></div></div><div class="refsect1"><a name="idp1103866964"></a><h2>Description</h2><p> 6 This locks out any further updates from being started, and blocks until all 7 existing updates have completed, returning only once the journal is in a 8 quiescent state with no updates running. 9 </p><p> 10 11 We do not use simple mutex for synchronization as there are syscalls which 12 want to return with filesystem locked and that trips up lockdep. Also 13 hibernate needs to lock filesystem but locked mutex then blocks hibernation. 14 Since locking filesystem is rare operation, we use simple counter and 15 waitqueue for locking. 16</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="API-journal-restart.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="functions.html#transaction_level">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="API-journal-unlock-updates.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span class="phrase">journal_restart</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">journal_unlock_updates</span></td></tr></table></div></body></html> 17