<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/gfs2/super.c, branch linux-3.3.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.3.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.3.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2012-01-08T21:07:54Z</updated>
<entry>
<title>Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-nmw</title>
<updated>2012-01-08T21:07:54Z</updated>
<author>
<name>Linus Torvalds</name>
</author>
<published>2012-01-08T21:07:54Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1619ed8f60959829d070d8f39cd2f8ca0e7135ce'/>
<id>urn:sha1:1619ed8f60959829d070d8f39cd2f8ca0e7135ce</id>
<content type='text'>
* git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-nmw:
  GFS2: local functions should be static
  GFS2: We only need one ACL getting function
  GFS2: Fix multi-block allocation
  GFS2: decouple quota allocations from block allocations
  GFS2: split function rgblk_search
  GFS2: Fix up "off by one" in the previous patch
  GFS2: move toward a generic multi-block allocator
  GFS2: O_(D)SYNC support for fallocate
  GFS2: remove vestigial al_alloced
  GFS2: combine gfs2_alloc_block and gfs2_alloc_di
  GFS2: Add non-try locks back to get_local_rgrp
  GFS2: f_ra is always valid in dir readahead function
  GFS2: Fix very unlikley memory leak in ACL xattr code
  GFS2: More automated code analysis fixes
  GFS2: Add readahead to sequential directory traversal
  GFS2: Fix up REQ flags
</content>
</entry>
<entry>
<title>vfs: switch -&gt;show_options() to struct dentry *</title>
<updated>2012-01-07T04:19:54Z</updated>
<author>
<name>Al Viro</name>
</author>
<published>2011-12-09T02:32:45Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=34c80b1d93e6e20ca9dea0baf583a5b5510d92d4'/>
<id>urn:sha1:34c80b1d93e6e20ca9dea0baf583a5b5510d92d4</id>
<content type='text'>
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>vfs: fix the stupidity with i_dentry in inode destructors</title>
<updated>2012-01-04T03:52:40Z</updated>
<author>
<name>Al Viro</name>
</author>
<published>2011-12-12T20:51:45Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6b520e0565422966cdf1c3759bd73df77b0f248c'/>
<id>urn:sha1:6b520e0565422966cdf1c3759bd73df77b0f248c</id>
<content type='text'>
Seeing that just about every destructor got that INIT_LIST_HEAD() copied into
it, there is no point whatsoever keeping this INIT_LIST_HEAD in inode_init_once();
the cost of taking it into inode_init_always() will be negligible for pipes
and sockets and negative for everything else.  Not to mention the removal of
boilerplate code from -&gt;destroy_inode() instances...

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>GFS2: decouple quota allocations from block allocations</title>
<updated>2011-11-22T10:25:21Z</updated>
<author>
<name>Bob Peterson</name>
</author>
<published>2011-11-21T18:36:17Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=564e12b1157215171e7f3af5b70611ec7154327c'/>
<id>urn:sha1:564e12b1157215171e7f3af5b70611ec7154327c</id>
<content type='text'>
This patch separates the code pertaining to allocations into two
parts: quota-related information and block reservations.
This patch also moves all the block reservation structure allocations to
function gfs2_inplace_reserve to simplify the code, and moves
the frees to function gfs2_inplace_release.

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: Fix AIL flush issue during fsync</title>
<updated>2011-10-21T11:39:41Z</updated>
<author>
<name>Steven Whitehouse</name>
</author>
<published>2011-09-07T09:33:25Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b5b24d7aeb9608935786369ac2d3e9f362877d55'/>
<id>urn:sha1:b5b24d7aeb9608935786369ac2d3e9f362877d55</id>
<content type='text'>
Unfortunately, it is not enough to just ignore locked buffers during
the AIL flush from fsync. We need to be able to ignore all buffers
which are locked, dirty or pinned at this stage as they might have
been added subsequent to the log flush earlier in the fsync function.

In addition, this means that we no longer need to rely on i_mutex to
keep out writes during fsync, so we can, as a side-effect, remove
that protection too.

Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
Tested-By: Abhijith Das &lt;adas@redhat.com&gt;
</content>
</entry>
<entry>
<title>GFS2: Cache the most recently used resource group in the inode</title>
<updated>2011-10-21T11:39:34Z</updated>
<author>
<name>Steven Whitehouse</name>
</author>
<published>2011-09-01T12:31:59Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=54335b1fca27b84baa75b1f45985d98262003837'/>
<id>urn:sha1:54335b1fca27b84baa75b1f45985d98262003837</id>
<content type='text'>
This means that after the initial allocation for any inode, the
last used resource group is cached in the inode for future use.
This drastically reduces the number of lookups of resource
groups in the common case, and this the contention on that
data structure.

The allocation algorithm is the same as previously, except that we
always check to see if the goal block is within the cached rgrp
first before going to the rbtree to look one up.

Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</content>
</entry>
<entry>
<title>GFS2: Make resource groups "append only" during life of fs</title>
<updated>2011-10-21T11:39:33Z</updated>
<author>
<name>Steven Whitehouse</name>
</author>
<published>2011-08-31T15:38:29Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8339ee543ece6e2dcc1bbd97d5350163c198cf00'/>
<id>urn:sha1:8339ee543ece6e2dcc1bbd97d5350163c198cf00</id>
<content type='text'>
Since we have ruled out supporting online filesystem shrink,
it is possible to make the resource group list append only
during the life of a super block. This gives several benefits:

Firstly, we only need to read new rindex elements as they are added
rather than needing to reread the whole rindex file each time one
element is added.

Secondly, the rindex glock can be held for much shorter periods of
time, and is completely removed from the fast path for allocations.
The lock is taken in shared mode only when updating the resource
groups when the first allocation occurs, and after a grow has
taken place.

Thirdly, this results in a reduction in code size, and everything
gets a lot simpler to understand in this area.

Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</content>
</entry>
<entry>
<title>GFS2: Use -&gt;dirty_inode()</title>
<updated>2011-10-21T11:39:26Z</updated>
<author>
<name>Steven Whitehouse</name>
</author>
<published>2011-08-15T13:20:36Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ab9bbda0204dfd0e5342562d9979d1241b14ea5f'/>
<id>urn:sha1:ab9bbda0204dfd0e5342562d9979d1241b14ea5f</id>
<content type='text'>
The aim of this patch is to use the newly enhanced -&gt;dirty_inode()
super block operation to deal with atime updates, rather than
piggy backing that code into -&gt;write_inode() as is currently
done.

The net result is a simplification of the code in various places
and a reduction of the number of gfs2_dinode_out() calls since
this is now implied by -&gt;dirty_inode().

Some of the mark_inode_dirty() calls have been moved under glocks
in order to take advantage of then being able to avoid locking in
-&gt;dirty_inode() when we already have suitable locks.

One consequence is that generic_write_end() now correctly deals
with file size updates, so that we do not need a separate check
for that afterwards. This also, indirectly, means that fdatasync
should work correctly on GFS2 - the current code always syncs the
metadata whether it needs to or not.

Has survived testing with postmark (with and without atime) and
also fsx.

Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</content>
</entry>
<entry>
<title>GFS2: Fix inode allocation error path</title>
<updated>2011-10-21T11:39:23Z</updated>
<author>
<name>Steven Whitehouse</name>
</author>
<published>2011-08-02T12:17:27Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=40ac218f52aa5cac7dc8082f28b61c8b2b29373c'/>
<id>urn:sha1:40ac218f52aa5cac7dc8082f28b61c8b2b29373c</id>
<content type='text'>
If we have got far enough through the inode allocation code
path that an inode has already been allocated, then we must
call iput to dispose of it, if an error occurs during a
later part of the process. This will always be the final iput
since there will be no other references to the inode.

Unlike when the inode has been unlinked, its block state will
be GFS2_BLKST_INODE rather than GFS2_BLKST_UNLINKED so we need
to skip the test in -&gt;evict_inode() for this one case in order
to ensure that it will be deallocated correctly. This patch adds
a new flag in order to ensure that this will happen correctly.

Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</content>
</entry>
<entry>
<title>GFS2: Make atime checks more efficient</title>
<updated>2011-10-21T11:39:21Z</updated>
<author>
<name>Steven Whitehouse</name>
</author>
<published>2011-08-02T12:13:20Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1d4ec642d9f00d4c531b1a4ae0613091ec1f8e9b'/>
<id>urn:sha1:1d4ec642d9f00d4c531b1a4ae0613091ec1f8e9b</id>
<content type='text'>
We do not need to start a transaction unless the atime
check has proved positive. Also if we are going to flush
the complete ail list anyway, we might as well skip the
writeback for this specific inode's metadata, since that
will be done as part of the ail writeback process in an
order offering potentially more efficient I/O.

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