<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/gfs2/bmap.c, branch linux-2.6.28.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.28.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.28.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2008-06-24T18:02:28Z</updated>
<entry>
<title>[GFS2] fix gfs2 block allocation (cleaned up)</title>
<updated>2008-06-24T18:02:28Z</updated>
<author>
<name>Benjamin Marzinski</name>
</author>
<published>2008-06-24T17:53:38Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5af4e7a0bea715f2dd7190859a43eb2258b1f388'/>
<id>urn:sha1:5af4e7a0bea715f2dd7190859a43eb2258b1f388</id>
<content type='text'>
This patch fixes bz 450641.

This patch changes the computation for zero_metapath_length(), which it
renames to metapath_branch_start(). When you are extending the metadata
tree, The indirect blocks that point to the new data block must either
diverge from the existing tree either at the inode, or at the first
indirect block. They can diverge at the first indirect block because the
inode has room for 483 pointers while the indirect blocks have room for
509 pointers, so when the tree is grown, there is some free space in the
first indirect block. What metapath_branch_start() now computes is the
height where the first indirect block for the new data block is located.
It can either be 1 (if the indirect block diverges from the inode) or 2
(if it diverges from the first indirect block).

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] Streamline quota lock/check for no-quota case</title>
<updated>2008-03-31T09:41:36Z</updated>
<author>
<name>Steven Whitehouse</name>
</author>
<published>2008-03-10T15:34:50Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d82661d96993ac4efc1d54259ea85ffcd9b8bec6'/>
<id>urn:sha1:d82661d96993ac4efc1d54259ea85ffcd9b8bec6</id>
<content type='text'>
This patch streamlines the quota checking in the "no quota" case by
making the check inline in the calling function, thus reducing the
number of function calls. Eventually we might be able to remove the
checks from the gfs2_quota_lock() and gfs2_quota_check() functions, but
currently we can't as there are a very few places in the code which need
to call these functions directly still.

Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
Cc: Abhijith Das &lt;adas@redhat.com&gt;
</content>
</entry>
<entry>
<title>[GFS2] possible null pointer dereference fixup</title>
<updated>2008-03-31T09:41:28Z</updated>
<author>
<name>Cyrill Gorcunov</name>
</author>
<published>2008-03-03T18:54:21Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=182fe5abd8ebbb3a00c1be91f44e4783e139918c'/>
<id>urn:sha1:182fe5abd8ebbb3a00c1be91f44e4783e139918c</id>
<content type='text'>
gfs2_alloc_get may fail so we have to check it to prevent
NULL pointer dereference.

Signed-off-by: Cyrill Gorcunov &lt;gorcunov@gamil.com&gt;
Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</content>
</entry>
<entry>
<title>[GFS2] Allow bmap to allocate extents</title>
<updated>2008-03-31T09:41:14Z</updated>
<author>
<name>Steven Whitehouse</name>
</author>
<published>2008-02-22T16:09:31Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=9b8c81d1de49943ec69d157234b8981008c30d31'/>
<id>urn:sha1:9b8c81d1de49943ec69d157234b8981008c30d31</id>
<content type='text'>
We've supported mapping of extents when no block allocation is required
for some time. This patch extends that to mapping of extents when an
allocation has been requested. In that case we try to allocate as many
blocks as are requested, but we might return fewer in case there is
something preventing us from returning the complete amount (e.g. an
already allocated block is in the way).

Currently the only code path which can actually request multiple data
blocks in a single bmap call is the page_mkwrite path and even then it
only happens if there are multiple blocks per page. What this patch does
do however, is merge the allocation requests for metadata (growing the
metadata tree in either height or depth) with the allocation of the data
blocks in the case that both are needed. This results in lower overheads
even in the single block allocation case.

The one thing which we can't handle here at the moment is unstuffing. I
would like to be able to do that, but the problem which arises is that
in order to unstuff one has to get a locked page from the page cache
which results in locking problems in the (usual) case that the caller is
holding the page lock on the page it wishes to map. So that case will
have to be addressed in future patches.

Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</content>
</entry>
<entry>
<title>[GFS2] Get inode buffer only once per block map call</title>
<updated>2008-03-31T09:40:58Z</updated>
<author>
<name>Steven Whitehouse</name>
</author>
<published>2008-02-12T14:48:39Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e23159d2a7b2df5bce5f0ee8d57d3292243abf66'/>
<id>urn:sha1:e23159d2a7b2df5bce5f0ee8d57d3292243abf66</id>
<content type='text'>
In the case that we needed to grow the height of the metadata tree
we were looking up the inode buffer and then brelse()ing it despite
the fact that it is needed later in the block map process.

This patch ensures that we look up the inode's buffer once and only
once during the block map process.

Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</content>
</entry>
<entry>
<title>[GFS2] Eliminate (almost) duplicate field from gfs2_inode</title>
<updated>2008-03-31T09:40:55Z</updated>
<author>
<name>Steven Whitehouse</name>
</author>
<published>2008-02-12T14:17:27Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=77658aad226866fb94097236d14d41a88aaab2ec'/>
<id>urn:sha1:77658aad226866fb94097236d14d41a88aaab2ec</id>
<content type='text'>
The blocks counter is almost a duplicate of the i_blocks
field in the VFS inode. The only difference is that i_blocks
can be only 32bits long for 32bit arch without large single file
support. Since GFS2 doesn't handle the non-large single file
case (for 32 bit anyway) this adds a new config dependency on
64BIT || LSF. This has always been the case, however we've never
explicitly said so before.

Even if we do add support for the non-LSF case, we will still
not require this field to be duplicated since we will not be
able to access oversized files anyway.

So the net result of all this is that we shave 8 bytes from a gfs2_inode
and get our config deps correct.

Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</content>
</entry>
<entry>
<title>[GFS2] Add a function to interate over an extent</title>
<updated>2008-03-31T09:40:53Z</updated>
<author>
<name>Steven Whitehouse</name>
</author>
<published>2008-02-08T13:18:11Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=30cbf189cd2a1ba13ff3c8c8ee2103dbdb18578a'/>
<id>urn:sha1:30cbf189cd2a1ba13ff3c8c8ee2103dbdb18578a</id>
<content type='text'>
This adds a function (currently the only use is during mapping
of already allocated blocks, but watch this space) which iterates
over a number of pointers in a block and returns the extent length.

If the initial pointer is 0 (i.e. unallocated) it will return the
number of unallocated blocks in the extent. If the initial pointer
is allocated, then it returns the number of contiguously allocated
blocks in the extent.

Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</content>
</entry>
<entry>
<title>[GFS2] The case of the missing asterisk</title>
<updated>2008-03-31T09:40:50Z</updated>
<author>
<name>Steven Whitehouse</name>
</author>
<published>2008-02-12T12:14:59Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c85a665f064863cc8a2fe88e5f1eb4def5446e90'/>
<id>urn:sha1:c85a665f064863cc8a2fe88e5f1eb4def5446e90</id>
<content type='text'>
A dereference was forgotten. This adds it back correctly.

Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</content>
</entry>
<entry>
<title>[GFS2] Add extent allocation to block allocator</title>
<updated>2008-03-31T09:40:47Z</updated>
<author>
<name>Steven Whitehouse</name>
</author>
<published>2008-02-06T10:11:15Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b45e41d7d56dfef1ae9e02e6c59990066ba82e5c'/>
<id>urn:sha1:b45e41d7d56dfef1ae9e02e6c59990066ba82e5c</id>
<content type='text'>
Rather than having to allocate a single block at a time, this patch
allows the block allocator to allocate an extent. Since there is
no difference (so far as the block allocator is concerned) between
data blocks and indirect blocks, it is posible to allocate a single
extent and for the caller to unrevoke just the blocks required
for indirect blocks.

Currently the only bit of GFS2 to make use of this feature is the
build height function. The intention is that gfs2_block_map will
be changed to make use of this feature in future patches.

Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</content>
</entry>
<entry>
<title>[GFS2] Merge gfs2_alloc_meta and gfs2_alloc_data</title>
<updated>2008-03-31T09:40:45Z</updated>
<author>
<name>Steven Whitehouse</name>
</author>
<published>2008-02-01T14:52:30Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1639431a3f57b43da1e15e9268a1d691ac01ba26'/>
<id>urn:sha1:1639431a3f57b43da1e15e9268a1d691ac01ba26</id>
<content type='text'>
Thanks to the preceeding patches, the only difference between
these two functions is their name. We can thus merge them
and call the new function gfs2_alloc_block to reflect the
fact that it can allocate either kind of block.

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