<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/ext4/migrate.c, branch linux-2.6.33.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.33.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.33.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2009-12-09T03:42:15Z</updated>
<entry>
<title>ext4: quota macros cleanup</title>
<updated>2009-12-09T03:42:15Z</updated>
<author>
<name>Dmitry Monakhov</name>
</author>
<published>2009-12-09T03:42:15Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5aca07eb7d8f14d90c740834d15ca15277f4820c'/>
<id>urn:sha1:5aca07eb7d8f14d90c740834d15ca15277f4820c</id>
<content type='text'>
Currently all quota block reservation macros contains hard-coded "2"
aka MAXQUOTAS value. This is no good because in some places it is not
obvious to understand what does this digit represent. Let's introduce
new macro with self descriptive name.

Signed-off-by: Dmitry Monakhov &lt;dmonakhov@openvz.org&gt;
Acked-by: Mingming Cao &lt;cmm@us.ibm.com&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
</content>
</entry>
<entry>
<title>ext4: call ext4_forget() from ext4_free_blocks()</title>
<updated>2009-11-23T12:17:05Z</updated>
<author>
<name>Theodore Ts'o</name>
</author>
<published>2009-11-23T12:17:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e6362609b6c71c5b802026be9cf263bbdd67a50e'/>
<id>urn:sha1:e6362609b6c71c5b802026be9cf263bbdd67a50e</id>
<content type='text'>
Add the facility for ext4_forget() to be called from
ext4_free_blocks().  This simplifies the code in a large number of
places, and centralizes most of the work of calling ext4_forget() into
a single place.

Also fix a bug in the extents migration code; it wasn't calling
ext4_forget() when releasing the indirect blocks during the
conversion.  As a result, if the system cashed during or shortly after
the extents migration, and the released indirect blocks get reused as
data blocks, the journal replay would corrupt the data blocks.  With
this new patch, fixing this bug was as simple as adding the
EXT4_FREE_BLOCKS_FORGET flags to the call to ext4_free_blocks().

Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
Cc: "Aneesh Kumar K.V" &lt;aneesh.kumar@linux.vnet.ibm.com&gt;
</content>
</entry>
<entry>
<title>ext4: Split uninitialized extents for direct I/O</title>
<updated>2009-09-28T19:49:08Z</updated>
<author>
<name>Mingming Cao</name>
</author>
<published>2009-09-28T19:49:08Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0031462b5b392f90d17f1d75abb795883c44e969'/>
<id>urn:sha1:0031462b5b392f90d17f1d75abb795883c44e969</id>
<content type='text'>
When writing into an unitialized extent via direct I/O, and the direct
I/O doesn't exactly cover the unitialized extent, split the extent
into uninitialized and initialized extents before submitting the I/O.
This avoids needing to deal with an ENOSPC error in the end_io
callback that gets used for direct I/O.

When the IO is complete, the written extent will be marked as initialized.

Singed-Off-By: Mingming Cao &lt;cmm@us.ibm.com&gt; 
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
</content>
</entry>
<entry>
<title>ext4: store EXT4_EXT_MIGRATE in i_state instead of i_flags</title>
<updated>2009-09-17T12:32:22Z</updated>
<author>
<name>Theodore Ts'o</name>
</author>
<published>2009-09-17T12:32:22Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1b9c12f44c1eb614fd3b8822bfe8f1f5d8e53737'/>
<id>urn:sha1:1b9c12f44c1eb614fd3b8822bfe8f1f5d8e53737</id>
<content type='text'>
EXT4_EXT_MIGRATE is only intended to be used for an in-memory flag,
and the hex value assigned to it collides with FS_DIRECTIO_FL (which
is also stored in i_flags).  There's no reason for the
EXT4_EXT_MIGRATE bit to be stored in i_flags, so we switch it to use
i_state instead.

Cc: "Aneesh Kumar K.V" &lt;aneesh.kumar@linux.vnet.ibm.com&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
</content>
</entry>
<entry>
<title>ext4: Add missing unlock_new_inode() call in extent migration code</title>
<updated>2009-08-26T02:36:05Z</updated>
<author>
<name>Aneesh Kumar K.V</name>
</author>
<published>2009-08-26T02:36:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a8526e84ac758ac6da45cf273aa1538a6a7aa3de'/>
<id>urn:sha1:a8526e84ac758ac6da45cf273aa1538a6a7aa3de</id>
<content type='text'>
We need to unlock the new inode before iput.  This patch fixes the
following warning when calling chattr +e to migrate a file to use
extents.  It also fixes problems in when e4defrag attempts to
defragment an inode.

[  470.400044] ------------[ cut here ]------------
[  470.400065] WARNING: at fs/inode.c:1210 generic_delete_inode+0x65/0x16a()
[  470.400072] Hardware name: N/A
.....
...
[  470.400353] Pid: 4451, comm: chattr Not tainted 2.6.31-rc7-red-debug #4
[  470.400359] Call Trace:
[  470.400372]  [&lt;ffffffff81037771&gt;] warn_slowpath_common+0x77/0x8f
[  470.400385]  [&lt;ffffffff81037798&gt;] warn_slowpath_null+0xf/0x11
[  470.400395]  [&lt;ffffffff810b7f28&gt;] generic_delete_inode+0x65/0x16a
[  470.400405]  [&lt;ffffffff810b8044&gt;] generic_drop_inode+0x17/0x1bd
[  470.400413]  [&lt;ffffffff810b7083&gt;] iput+0x61/0x65
[  470.400455]  [&lt;ffffffffa003b229&gt;] ext4_ext_migrate+0x5eb/0x66a [ext4]
[  470.400492]  [&lt;ffffffffa002b1f8&gt;] ext4_ioctl+0x340/0x756 [ext4]
[  470.400507]  [&lt;ffffffff810b1a91&gt;] vfs_ioctl+0x1d/0x82
[  470.400517]  [&lt;ffffffff810b1ff0&gt;] do_vfs_ioctl+0x483/0x4c9
[  470.400527]  [&lt;ffffffff81059c30&gt;] ? trace_hardirqs_on+0xd/0xf
[  470.400537]  [&lt;ffffffff810b2087&gt;] sys_ioctl+0x51/0x74
[  470.400549]  [&lt;ffffffff8100ba6b&gt;] system_call_fastpath+0x16/0x1b
[  470.400557] ---[ end trace ab85723542352dac ]---

Signed-off-by: Aneesh Kumar K.V &lt;aneesh.kumar@linux.vnet.ibm.com&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
</content>
</entry>
<entry>
<title>ext4: teach the inode allocator to use a goal inode number</title>
<updated>2009-06-13T15:45:35Z</updated>
<author>
<name>Andreas Dilger</name>
</author>
<published>2009-06-13T15:45:35Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=11013911daea4820147ae6d7094dd7c6894e8651'/>
<id>urn:sha1:11013911daea4820147ae6d7094dd7c6894e8651</id>
<content type='text'>
Enhance the inode allocator to take a goal inode number as a
paremeter; if it is specified, it takes precedence over Orlov or
parent directory inode allocation algorithms.

The extents migration function uses the goal inode number so that the
extent trees allocated the migration function use the correct flex_bg.
In the future, the goal inode functionality will also be used to
allocate an adjacent inode for the extended attributes.

Also, for testing purposes the goal inode number can be specified via
/sys/fs/{dev}/inode_goal.  This can be useful for testing inode
allocation beyond 2^32 blocks on very large filesystems.

Signed-off-by: Andreas Dilger &lt;adilger@sun.com&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
</content>
</entry>
<entry>
<title>ext4: Use a hash of the topdir directory name for the Orlov parent group</title>
<updated>2009-06-13T15:09:42Z</updated>
<author>
<name>Theodore Ts'o</name>
</author>
<published>2009-06-13T15:09:42Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f157a4aa98a18bd3817a72bea90d48494e2586e7'/>
<id>urn:sha1:f157a4aa98a18bd3817a72bea90d48494e2586e7</id>
<content type='text'>
Instead of using a random number to determine the goal parent grop for
the Orlov top directories, use a hash of the directory name.  This
allows for repeatable results when trying to benchmark filesystem
layout algorithms.

Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
</content>
</entry>
<entry>
<title>ext4: Fix NULL dereference in ext4_ext_migrate()'s error handling</title>
<updated>2009-02-16T01:02:19Z</updated>
<author>
<name>Dan Carpenter</name>
</author>
<published>2009-02-16T01:02:19Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=090542641de833c6f756895fc2f139f046e298f9'/>
<id>urn:sha1:090542641de833c6f756895fc2f139f046e298f9</id>
<content type='text'>
This was found through a code checker (http://repo.or.cz/w/smatch.git/). 
It looks like you might be able to trigger the error by trying to migrate 
a readonly file system.

Signed-off-by: Dan Carpenter &lt;error27@gmail.com&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
</content>
</entry>
<entry>
<title>ext4: Remove "extents" mount option</title>
<updated>2009-01-06T19:53:16Z</updated>
<author>
<name>Theodore Ts'o</name>
</author>
<published>2009-01-06T19:53:16Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=83982b6f47201c4c7767210d24d7d8c99567a0b3'/>
<id>urn:sha1:83982b6f47201c4c7767210d24d7d8c99567a0b3</id>
<content type='text'>
This mount option is largely superfluous, and in fact the way it was
implemented was buggy; if a filesystem which did not have the extents
feature flag was mounted -o extents, the filesystem would attempt to
create and use extents-based file even though the extents feature flag
was not eabled.  The simplest thing to do is to nuke the mount option
entirely.  It's not all that useful to force the non-creation of new
extent-based files if the filesystem can support it.

Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
</content>
</entry>
<entry>
<title>ext4: Allow ext4 to run without a journal</title>
<updated>2009-01-07T05:06:22Z</updated>
<author>
<name>Frank Mayhar</name>
</author>
<published>2009-01-07T05:06:22Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0390131ba84fd3f726f9e24fc4553828125700bb'/>
<id>urn:sha1:0390131ba84fd3f726f9e24fc4553828125700bb</id>
<content type='text'>
A few weeks ago I posted a patch for discussion that allowed ext4 to run
without a journal.  Since that time I've integrated the excellent
comments from Andreas and fixed several serious bugs.  We're currently
running with this patch and generating some performance numbers against
both ext2 (with backported reservations code) and ext4 with and without
a journal.  It just so happens that running without a journal is
slightly faster for most everything.

We did
	iozone -T -t 4 s 2g -r 256k -T -I -i0 -i1 -i2

which creates 4 threads, each of which create and do reads and writes on
a 2G file, with a buffer size of 256K, using O_DIRECT for all file opens
to bypass the page cache.  Results:

                     ext2        ext4, default   ext4, no journal
  initial writes   13.0 MB/s        15.4 MB/s          15.7 MB/s
  rewrites         13.1 MB/s        15.6 MB/s          15.9 MB/s
  reads            15.2 MB/s        16.9 MB/s          17.2 MB/s
  re-reads         15.3 MB/s        16.9 MB/s          17.2 MB/s
  random readers    5.6 MB/s         5.6 MB/s           5.7 MB/s
  random writers    5.1 MB/s         5.3 MB/s           5.4 MB/s 

So it seems that, so far, this was a useful exercise.

Signed-off-by: Frank Mayhar &lt;fmayhar@google.com&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
</content>
</entry>
</feed>
