<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/ocfs2/alloc.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-10-14T18:51:57Z</updated>
<entry>
<title>ocfs2: Simplify ocfs2_read_block()</title>
<updated>2008-10-14T18:51:57Z</updated>
<author>
<name>Joel Becker</name>
</author>
<published>2008-10-10T00:20:31Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0fcaa56a2a020dd6f90c202b7084e6f4cbedb6c2'/>
<id>urn:sha1:0fcaa56a2a020dd6f90c202b7084e6f4cbedb6c2</id>
<content type='text'>
More than 30 callers of ocfs2_read_block() pass exactly OCFS2_BH_CACHED.
Only six pass a different flag set.  Rather than have every caller care,
let's make ocfs2_read_block() take no flags and always do a cached read.
The remaining six places can call ocfs2_read_blocks() directly.

Signed-off-by: Joel Becker &lt;joel.becker@oracle.com&gt;
Signed-off-by: Mark Fasheh &lt;mfasheh@suse.com&gt;
</content>
</entry>
<entry>
<title>ocfs2: Require an inode for ocfs2_read_block(s)().</title>
<updated>2008-10-14T18:43:29Z</updated>
<author>
<name>Joel Becker</name>
</author>
<published>2008-10-10T00:20:30Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=31d33073ca38603dea705dae45e094a64ca062d6'/>
<id>urn:sha1:31d33073ca38603dea705dae45e094a64ca062d6</id>
<content type='text'>
Now that synchronous readers are using ocfs2_read_blocks_sync(), all
callers of ocfs2_read_blocks() are passing an inode.  Use it
unconditionally.  Since it's there, we don't need to pass the
ocfs2_super either.

Signed-off-by: Joel Becker &lt;joel.becker@oracle.com&gt;
Signed-off-by: Mark Fasheh &lt;mfasheh@suse.com&gt;
</content>
</entry>
<entry>
<title>ocfs2: Don't check for NULL before brelse()</title>
<updated>2008-10-14T00:02:44Z</updated>
<author>
<name>Mark Fasheh</name>
</author>
<published>2008-10-07T21:25:16Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a81cb88b64a479b78c6dd5666678d50171865db8'/>
<id>urn:sha1:a81cb88b64a479b78c6dd5666678d50171865db8</id>
<content type='text'>
This is pointless as brelse() already does the check.

Signed-off-by: Mark Fasheh
</content>
</entry>
<entry>
<title>ocfs2: Switch over to JBD2.</title>
<updated>2008-10-14T00:02:43Z</updated>
<author>
<name>Joel Becker</name>
</author>
<published>2008-09-04T03:03:41Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2b4e30fbde425828b17f0e9c8f8e3fd3ecb2bc75'/>
<id>urn:sha1:2b4e30fbde425828b17f0e9c8f8e3fd3ecb2bc75</id>
<content type='text'>
ocfs2 wants JBD2 for many reasons, not the least of which is that JBD is
limiting our maximum filesystem size.

It's a pretty trivial change.  Most functions are just renamed.  The
only functional change is moving to Jan's inode-based ordered data mode.
It's better, too.

Because JBD2 reads and writes JBD journals, this is compatible with any
existing filesystem.  It can even interact with JBD-based ocfs2 as long
as the journal is formated for JBD.

We provide a compatibility option so that paranoid people can still use
JBD for the time being.  This will go away shortly.

[ Moved call of ocfs2_begin_ordered_truncate() from ocfs2_delete_inode() to
  ocfs2_truncate_for_delete(). --Mark ]

Signed-off-by: Joel Becker &lt;joel.becker@oracle.com&gt;
Signed-off-by: Mark Fasheh &lt;mfasheh@suse.com&gt;
</content>
</entry>
<entry>
<title>ocfs2: Change ocfs2_get_*_extent_tree() to ocfs2_init_*_extent_tree()</title>
<updated>2008-10-13T23:57:05Z</updated>
<author>
<name>Joel Becker</name>
</author>
<published>2008-08-22T19:46:09Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8d6220d6a74a33552cf877bcea25503d7f6a59e6'/>
<id>urn:sha1:8d6220d6a74a33552cf877bcea25503d7f6a59e6</id>
<content type='text'>
The original get/put_extent_tree() functions held a reference on
et_root_bh.  However, every single caller already has a safe reference,
making the get/put cycle irrelevant.

We change ocfs2_get_*_extent_tree() to ocfs2_init_*_extent_tree().  It
no longer gets a reference on et_root_bh.  ocfs2_put_extent_tree() is
removed.  Callers now have a simpler init+use pattern.

Signed-off-by: Joel Becker &lt;joel.becker@oracle.com&gt;
Signed-off-by: Mark Fasheh &lt;mfasheh@suse.com&gt;
</content>
</entry>
<entry>
<title>ocfs2: Comment struct ocfs2_extent_tree_operations.</title>
<updated>2008-10-13T23:57:05Z</updated>
<author>
<name>Joel Becker</name>
</author>
<published>2008-08-22T00:11:10Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1625f8ac151743e452ec062c2989669c508ffa48'/>
<id>urn:sha1:1625f8ac151743e452ec062c2989669c508ffa48</id>
<content type='text'>
struct ocfs2_extent_tree_operations provides methods for the different
on-disk btrees in ocfs2.  Describing what those methods do is probably a
good idea.

Signed-off-by: Joel Becker &lt;joel.becker@oracle.com&gt;
Signed-off-by: Mark Fasheh &lt;mfasheh@suse.com&gt;
</content>
</entry>
<entry>
<title>ocfs2: Make ocfs2_extent_tree the first-class representation of a tree.</title>
<updated>2008-10-13T23:57:05Z</updated>
<author>
<name>Joel Becker</name>
</author>
<published>2008-08-21T02:36:33Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f99b9b7ccf6a691f653cec45f36bfdd1e94769c7'/>
<id>urn:sha1:f99b9b7ccf6a691f653cec45f36bfdd1e94769c7</id>
<content type='text'>
We now have three different kinds of extent trees in ocfs2: inode data
(dinode), extended attributes (xattr_tree), and extended attribute
values (xattr_value).  There is a nice abstraction for them,
ocfs2_extent_tree, but it is hidden in alloc.c.  All the calling
functions have to pick amongst a varied API and pass in type bits and
often extraneous pointers.

A better way is to make ocfs2_extent_tree a first-class object.
Everyone converts their object to an ocfs2_extent_tree() via the
ocfs2_get_*_extent_tree() calls, then uses the ocfs2_extent_tree for all
tree calls to alloc.c.

This simplifies a lot of callers, making for readability.  It also
provides an easy way to add additional extent tree types, as they only
need to be defined in alloc.c with a ocfs2_get_&lt;new&gt;_extent_tree()
function.

Signed-off-by: Joel Becker &lt;joel.becker@oracle.com&gt;
Signed-off-by: Mark Fasheh &lt;mfasheh@suse.com&gt;
</content>
</entry>
<entry>
<title>ocfs2: Add an insertion check to ocfs2_extent_tree_operations.</title>
<updated>2008-10-13T23:57:05Z</updated>
<author>
<name>Joel Becker</name>
</author>
<published>2008-08-21T01:32:45Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1e61ee79e2a96f62c007486677319814ce621c3c'/>
<id>urn:sha1:1e61ee79e2a96f62c007486677319814ce621c3c</id>
<content type='text'>
A couple places check an extent_tree for a valid inode.  We move that
out to add an eo_insert_check() operation.  It can be called from
ocfs2_insert_extent() and elsewhere.

We also have the wrapper calls ocfs2_et_insert_check() and
ocfs2_et_sanity_check() ignore NULL ops.  That way we don't have to
provide useless operations for xattr types.

Signed-off-by: Joel Becker &lt;joel.becker@oracle.com&gt;
Signed-off-by: Mark Fasheh &lt;mfasheh@suse.com&gt;
</content>
</entry>
<entry>
<title>ocfs2: Create specific get_extent_tree functions.</title>
<updated>2008-10-13T23:57:05Z</updated>
<author>
<name>Joel Becker</name>
</author>
<published>2008-08-21T00:44:24Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1a09f556e5415a29cdddaf9a6ebf474194161cf3'/>
<id>urn:sha1:1a09f556e5415a29cdddaf9a6ebf474194161cf3</id>
<content type='text'>
A caller knows what kind of extent tree they have.  There's no reason
they have to call ocfs2_get_extent_tree() with a NULL when they could
just as easily call a specific function to their type of extent tree.

Introduce ocfs2_dinode_get_extent_tree(),
ocfs2_xattr_tree_get_extent_tree(), and
ocfs2_xattr_value_get_extent_tree().  They only take the necessary
arguments, calling into the underlying __ocfs2_get_extent_tree() to do
the real work.

__ocfs2_get_extent_tree() is the old ocfs2_get_extent_tree(), but
without needing any switch-by-type logic.

ocfs2_get_extent_tree() is now a wrapper around the specific calls.  It
exists because a couple alloc.c functions can take et_type.  This will
go later.

Another benefit is that ocfs2_xattr_value_get_extent_tree() can take a
struct ocfs2_xattr_value_root* instead of void*.  This gives us
typechecking where we didn't have it before.

Signed-off-by: Joel Becker &lt;joel.becker@oracle.com&gt;
Signed-off-by: Mark Fasheh &lt;mfasheh@suse.com&gt;
</content>
</entry>
<entry>
<title>ocfs2: Determine an extent tree's max_leaf_clusters in an et_op.</title>
<updated>2008-10-13T23:57:04Z</updated>
<author>
<name>Joel Becker</name>
</author>
<published>2008-08-21T00:31:10Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=943cced39ee45ed2db25efd25eee8ba49cf2dfc4'/>
<id>urn:sha1:943cced39ee45ed2db25efd25eee8ba49cf2dfc4</id>
<content type='text'>
Provide an optional extent_tree_operation to specify the
max_leaf_clusters of an ocfs2_extent_tree.  If not provided, the value
is 0 (unlimited).

Signed-off-by: Joel Becker &lt;joel.becker@oracle.com&gt;
Signed-off-by: Mark Fasheh &lt;mfasheh@suse.com&gt;
</content>
</entry>
</feed>
