<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/gfs2/log.h, branch linux-3.14.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.14.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.14.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2013-06-19T08:41:59Z</updated>
<entry>
<title>GFS2: aggressively issue revokes in gfs2_log_flush</title>
<updated>2013-06-19T08:41:59Z</updated>
<author>
<name>Benjamin Marzinski</name>
</author>
<published>2013-06-14T16:38:29Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5d054964f57ade1adb310313c3cfb8e93e804e8f'/>
<id>urn:sha1:5d054964f57ade1adb310313c3cfb8e93e804e8f</id>
<content type='text'>
This patch looks at all the outstanding blocks in all the transactions
on the log, and moves the completed ones to the ail2 list.  Then it
issues revokes for these blocks.  This will hopefully speed things up
in situations where there is a lot of contention for glocks, especially
if they are acquired serially.

revoke_lo_before_commit will issue at most one log block's full of these
preemptive revokes. The amount of reserved log space that
gfs2_log_reserve() ignores has been incremented to allow for this extra
block.

This patch also consolidates the common revoke instructions into one
function, gfs2_add_revoke().

Signed-off-by: Benjamin Marzinski &lt;bmarzins@redhat.com&gt;
Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;

</content>
</entry>
<entry>
<title>GFS2: Use -&gt;writepages for ordered writes</title>
<updated>2013-01-29T10:29:17Z</updated>
<author>
<name>Steven Whitehouse</name>
</author>
<published>2013-01-28T09:30:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4513899092b3254b3539f92a65d2839afa1d50f6'/>
<id>urn:sha1:4513899092b3254b3539f92a65d2839afa1d50f6</id>
<content type='text'>
Instead of using a list of buffers to write ahead of the journal
flush, this now uses a list of inodes and calls -&gt;writepages
via filemap_fdatawrite() in order to achieve the same thing. For
most use cases this results in a shorter ordered write list,
as well as much larger i/os being issued.

The ordered write list is sorted by inode number before writing
in order to retain the disk block ordering between inodes as
per the previous code.

The previous ordered write code used to conflict in its assumptions
about how to write out the disk blocks with mpage_writepages()
so that with this updated version we can also use mpage_writepages()
for GFS2's ordered write, writepages implementation. So we will
also send larger i/os from writeback too.

Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</content>
</entry>
<entry>
<title>GFS2: Clean up log write code path</title>
<updated>2012-04-24T15:44:34Z</updated>
<author>
<name>Steven Whitehouse</name>
</author>
<published>2012-04-16T08:28:31Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e8c92ed769008cfc799497f0a34c8faf46243c4d'/>
<id>urn:sha1:e8c92ed769008cfc799497f0a34c8faf46243c4d</id>
<content type='text'>
Prior to this patch, we have two ways of sending i/o to the log.
One of those is used when we need to allocate both the data
to be written itself and also a buffer head to submit it. This
is done via sb_getblk and friends. This is used mostly for writing
log headers.

The other method is used when writing blocks which have some
in-place counterpart. This is the case for all the metadata
blocks which are journalled, and when journaled data is in use,
for unescaped journalled data blocks.

This patch replaces both of those two methods, and about half
a dozen separate i/o submission points with a single i/o
submission function. We also go direct to bio rather than
using buffer heads, since this allows us to build i/o
requests of the maximum size for the block device in
question. It also reduces the memory required for flushing
the log, which can be very useful in low memory situations.

Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</content>
</entry>
<entry>
<title>GFS2: Move two functions from log.c to lops.c</title>
<updated>2012-02-28T17:09:59Z</updated>
<author>
<name>Steven Whitehouse</name>
</author>
<published>2012-02-03T15:21:59Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=47ac5537a794fc71f89d51af492a945bd233f70c'/>
<id>urn:sha1:47ac5537a794fc71f89d51af492a945bd233f70c</id>
<content type='text'>
gfs2_log_get_buf() and gfs2_log_fake_buf() are both used
only in lops.c, so move them next to their callers and they
can then become static.

Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</content>
</entry>
<entry>
<title>GFS2: Make writeback more responsive to system conditions</title>
<updated>2011-04-20T08:01:37Z</updated>
<author>
<name>Steven Whitehouse</name>
</author>
<published>2011-04-18T13:18:09Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4667a0ec32867865fd4deccf834594b3ea831baf'/>
<id>urn:sha1:4667a0ec32867865fd4deccf834594b3ea831baf</id>
<content type='text'>
This patch adds writeback_control to writing back the AIL
list. This means that we can then take advantage of the
information we get in -&gt;write_inode() in order to set off
some pre-emptive writeback.

In addition, the AIL code is cleaned up a bit to make it
a bit simpler to understand.

There is still more which can usefully be done in this area,
but this is a good start at least.

Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</content>
</entry>
<entry>
<title>GFS2: Rework reclaiming unlinked dinodes</title>
<updated>2010-05-21T15:11:36Z</updated>
<author>
<name>Bob Peterson</name>
</author>
<published>2010-05-21T03:30:11Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ed4878e8a4f550fd357ce5144cfd412015f6a111'/>
<id>urn:sha1:ed4878e8a4f550fd357ce5144cfd412015f6a111</id>
<content type='text'>
The previous patch I wrote for reclaiming unlinked dinodes
had some shortcomings and did not prevent all hangs.
This version is much cleaner and more logical, and has
passed very difficult testing.  Sorry for the churn.

Signed-off-by: Bob Peterson &lt;rpeterso@redhat.com&gt;
Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</content>
</entry>
<entry>
<title>GFS2: Various gfs2_logd improvements</title>
<updated>2010-05-05T08:39:18Z</updated>
<author>
<name>Benjamin Marzinski</name>
</author>
<published>2010-05-04T19:29:16Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5e687eac1bd31baed110d239ef827d3ba666f311'/>
<id>urn:sha1:5e687eac1bd31baed110d239ef827d3ba666f311</id>
<content type='text'>
This patch contains various tweaks to how log flushes and active item writeback
work. gfs2_logd is now managed by a waitqueue, and gfs2_log_reseve now waits
for gfs2_logd to do the log flushing.  Multiple functions were rewritten to
remove the need to call gfs2_log_lock(). Instead of using one test to see if
gfs2_logd had work to do, there are now seperate tests to check if there
are two many buffers in the incore log or if there are two many items on the
active items list.

This patch is a port of a patch Steve Whitehouse wrote about a year ago, with
some minor changes.  Since gfs2_ail1_start always submits all the active items,
it no longer needs to keep track of the first ai submitted, so this has been
removed. In gfs2_log_reserve(), the order of the calls to
prepare_to_wait_exclusive() and wake_up() when firing off the logd thread has
been switched.  If it called wake_up first there was a small window for a race,
where logd could run and return before gfs2_log_reserve was ready to get woken
up. If gfs2_logd ran, but did not free up enough blocks, gfs2_log_reserve()
would be left waiting for gfs2_logd to eventualy run because it timed out.
Finally, gt_logd_secs, which controls how long to wait before gfs2_logd times
out, and flushes the log, can now be set on mount with ar_commit.

Signed-off-by: Benjamin Marzinski &lt;bmarzins@redhat.com&gt;
Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;

</content>
</entry>
<entry>
<title>[GFS2] trivial sparse lock annotations</title>
<updated>2008-06-27T08:39:31Z</updated>
<author>
<name>Harvey Harrison</name>
</author>
<published>2008-05-30T01:27:51Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2d81afb87972013b43b055b4711dc75fdeeb9ba8'/>
<id>urn:sha1:2d81afb87972013b43b055b4711dc75fdeeb9ba8</id>
<content type='text'>
Annotate the &amp;sdp-&gt;sd_log_lock.

Signed-off-by: Harvey Harrison &lt;harvey.harrison@gmail.com&gt;
Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</content>
</entry>
<entry>
<title>[GFS2] Move gfs2_logd into log.c</title>
<updated>2008-01-25T08:07:56Z</updated>
<author>
<name>Steven Whitehouse</name>
</author>
<published>2007-11-09T10:01:41Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ec69b188837a347769e187997d040e84a683b38a'/>
<id>urn:sha1:ec69b188837a347769e187997d040e84a683b38a</id>
<content type='text'>
This means that we can mark gfs2_ail1_empty static and prepares
the way for further changes.

Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</content>
</entry>
<entry>
<title>[GFS2] Don't add glocks to the journal</title>
<updated>2008-01-25T08:07:52Z</updated>
<author>
<name>Steven Whitehouse</name>
</author>
<published>2007-11-08T14:25:12Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2bcd610d2fdea608a8fdac32788fc35a32a2327c'/>
<id>urn:sha1:2bcd610d2fdea608a8fdac32788fc35a32a2327c</id>
<content type='text'>
The only reason for adding glocks to the journal was to keep track
of which locks required a log flush prior to release. We add a
flag to the glock to allow this check to be made in a simpler way.

This reduces the size of a glock (by 12 bytes on i386, 24 on x86_64)
and means that we can avoid extra work during the journal flush.

Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</content>
</entry>
</feed>
