<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/fs/ext4/ialloc.c, branch v3.4.19</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/fs/ext4/ialloc.c?h=v3.4.19</id>
<link rel='self' href='https://git.amat.us/linux/atom/fs/ext4/ialloc.c?h=v3.4.19'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2012-11-05T08:50:41Z</updated>
<entry>
<title>ext4: fix unjournaled inode bitmap modification</title>
<updated>2012-11-05T08:50:41Z</updated>
<author>
<name>Eric Sandeen</name>
<email>sandeen@redhat.com</email>
</author>
<published>2012-10-29T02:24:57Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=0d819068496793d2f8ef48a6fcec4c7d329d8b8a'/>
<id>urn:sha1:0d819068496793d2f8ef48a6fcec4c7d329d8b8a</id>
<content type='text'>
commit ffb5387e85d528fb6d0d924abfa3fbf0fc484071 upstream.

commit 119c0d4460b001e44b41dcf73dc6ee794b98bd31 changed
ext4_new_inode() such that the inode bitmap was being modified
outside a transaction, which could lead to corruption, and was
discovered when journal_checksum found a bad checksum in the
journal during log replay.

Nix ran into this when using the journal_async_commit mount
option, which enables journal checksumming.  The ensuing
journal replay failures due to the bad checksums led to
filesystem corruption reported as the now infamous
"Apparent serious progressive ext4 data corruption bug"

[ Changed by tytso to only call ext4_journal_get_write_access() only
  when we're fairly certain that we're going to allocate the inode. ]

I've tested this by mounting with journal_checksum and
running fsstress then dropping power; I've also tested by
hacking DM to create snapshots w/o first quiescing, which
allows me to test journal replay repeatedly w/o actually
power-cycling the box.  Without the patch I hit a journal
checksum error every time.  With this fix it survives
many iterations.

Reported-by: Nix &lt;nix@esperi.org.uk&gt;
Signed-off-by: Eric Sandeen &lt;sandeen@redhat.com&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>ext4: pass a char * to ext4_count_free() instead of a buffer_head ptr</title>
<updated>2012-08-09T15:31:40Z</updated>
<author>
<name>Theodore Ts'o</name>
<email>tytso@mit.edu</email>
</author>
<published>2012-06-30T23:14:57Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=2a271d6a66d1d10f001c5653da68c1f72d0ded59'/>
<id>urn:sha1:2a271d6a66d1d10f001c5653da68c1f72d0ded59</id>
<content type='text'>
commit f6fb99cadcd44660c68e13f6eab28333653621e6 upstream.

Make it possible for ext4_count_free to operate on buffers and not
just data in buffer_heads.

Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>ext4: fix potential NULL dereference in ext4_free_inodes_counts()</title>
<updated>2012-06-09T15:36:15Z</updated>
<author>
<name>Dan Carpenter</name>
<email>dan.carpenter@oracle.com</email>
</author>
<published>2012-05-28T18:16:57Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=2c693b1d2fd1789a8b52f3644d41547b1ba9a26e'/>
<id>urn:sha1:2c693b1d2fd1789a8b52f3644d41547b1ba9a26e</id>
<content type='text'>
commit bb3d132a24cd8bf5e7773b2d9f9baa58b07a7dae upstream.

The ext4_get_group_desc() function returns NULL on error, and
ext4_free_inodes_count() function dereferences it without checking.
There is a check on the next line, but it's too late.

Reviewed-by: Jan Kara &lt;jack@suse.cz&gt;
Signed-off-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>ext4: change some printk() calls to use ext4_msg() instead</title>
<updated>2012-03-20T03:41:49Z</updated>
<author>
<name>Theodore Ts'o</name>
<email>tytso@mit.edu</email>
</author>
<published>2012-03-20T03:41:49Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=92b9781658dba287a1354ad74ed351f68c3ee740'/>
<id>urn:sha1:92b9781658dba287a1354ad74ed351f68c3ee740</id>
<content type='text'>
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
</content>
</entry>
<entry>
<title>ext4: remove trailing newlines from ext4_msg() and ext4_error() messages</title>
<updated>2012-03-20T03:13:43Z</updated>
<author>
<name>Theodore Ts'o</name>
<email>tytso@mit.edu</email>
</author>
<published>2012-03-20T03:13:43Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=1084f252e3490392575b80cbdfa1baf0842173d8'/>
<id>urn:sha1:1084f252e3490392575b80cbdfa1baf0842173d8</id>
<content type='text'>
The functions ext4_msg() and ext4_error() already tack on a trailing
newline, so remove the unnecessary extra newline.

Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;


</content>
</entry>
<entry>
<title>ext4: fix race when setting bitmap_uptodate flag</title>
<updated>2012-02-20T22:52:46Z</updated>
<author>
<name>Theodore Ts'o</name>
<email>tytso@mit.edu</email>
</author>
<published>2012-02-20T22:52:46Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=813e57276fd909f7d5a816ef7ca706fca491ee61'/>
<id>urn:sha1:813e57276fd909f7d5a816ef7ca706fca491ee61</id>
<content type='text'>
In ext4_read_{inode,block}_bitmap() we were setting bitmap_uptodate()
before submitting the buffer for read.  The is bad, since we check
bitmap_uptodate() without locking the buffer, and so if another
process is racing with us, it's possible that they will think the
bitmap is uptodate even though the read has not completed yet,
resulting in inodes and blocks potentially getting allocated more than
once if we get really unlucky.

Addresses-Google-Bug: 2828254

Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
</content>
</entry>
<entry>
<title>ext4: fold ext4_claim_inode into ext4_new_inode</title>
<updated>2012-02-07T01:12:03Z</updated>
<author>
<name>Theodore Ts'o</name>
<email>tytso@mit.edu</email>
</author>
<published>2012-02-07T01:12:03Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=119c0d4460b001e44b41dcf73dc6ee794b98bd31'/>
<id>urn:sha1:119c0d4460b001e44b41dcf73dc6ee794b98bd31</id>
<content type='text'>
The function ext4_claim_inode() is only called by one function,
ext4_new_inode(), and by folding the functionality into
ext4_new_inode(), we can remove almost 50 lines of code, and put all
of the logic of allocating a new inode into a single place.

Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
</content>
</entry>
<entry>
<title>Merge branch 'for_linus' into for_linus_merged</title>
<updated>2012-01-10T16:54:07Z</updated>
<author>
<name>Theodore Ts'o</name>
<email>tytso@mit.edu</email>
</author>
<published>2012-01-10T16:54:07Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=ff9cb1c4eead5e4c292e75cd3170a82d66944101'/>
<id>urn:sha1:ff9cb1c4eead5e4c292e75cd3170a82d66944101</id>
<content type='text'>
Conflicts:
	fs/ext4/ioctl.c
</content>
</entry>
<entry>
<title>ext4: propagate umode_t</title>
<updated>2012-01-04T03:54:59Z</updated>
<author>
<name>Al Viro</name>
<email>viro@zeniv.linux.org.uk</email>
</author>
<published>2011-07-26T06:48:06Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=dcca3fec9f6436dae8693e38cc69c241ea0860cd'/>
<id>urn:sha1:dcca3fec9f6436dae8693e38cc69c241ea0860cd</id>
<content type='text'>
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>ext4: use proper little-endian bitops</title>
<updated>2011-12-29T01:32:07Z</updated>
<author>
<name>Akinobu Mita</name>
<email>akinobu.mita@gmail.com</email>
</author>
<published>2011-12-29T01:32:07Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=597d508c17a6dcd17770f4dd9da873d93cc15493'/>
<id>urn:sha1:597d508c17a6dcd17770f4dd9da873d93cc15493</id>
<content type='text'>
ext4_{set,clear}_bit() is defined as __test_and_{set,clear}_bit_le() for
ext4.  Only two ext4_{set,clear}_bit() calls check the return value.  The
rest of calls ignore the return value and they can be replaced with
__{set,clear}_bit_le().

This changes ext4_{set,clear}_bit() from __test_and_{set,clear}_bit_le()
to __{set,clear}_bit_le() and introduces ext4_test_and_{set,clear}_bit()
for the two places where old bit needs to be returned.

This ext4_{set,clear}_bit() change is considered safe, because if someone
uses these macros without noticing the change, new ext4_{set,clear}_bit
don't have return value and causes compiler errors where the return value
is used.

This also removes unused ext4_find_first_zero_bit().

Signed-off-by: Akinobu Mita &lt;akinobu.mita@gmail.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
</content>
</entry>
</feed>
