<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git, branch v2.6.32.1</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>Linux 2.6.32.1</title>
<updated>2009-12-14T17:47:25+00:00</updated>
<author>
<name>Greg Kroah-Hartman</name>
<email>gregkh@suse.de</email>
</author>
<published>2009-12-14T17:47:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=acb34e4d6b5d0601530e1dd10121a1ae209e3a44'/>
<id>acb34e4d6b5d0601530e1dd10121a1ae209e3a44</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ext4: Fix potential fiemap deadlock (mmap_sem vs. i_data_sem)</title>
<updated>2009-12-14T17:45:28+00:00</updated>
<author>
<name>Theodore Ts'o</name>
<email>tytso@mit.edu</email>
</author>
<published>2009-12-10T02:30:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=abb247066f9769e90df87ab65e5c2bb4dbdb529c'/>
<id>abb247066f9769e90df87ab65e5c2bb4dbdb529c</id>
<content type='text'>
(cherry picked from commit fab3a549e204172236779f502eccb4f9bf0dc87d)

Fix the following potential circular locking dependency between
mm-&gt;mmap_sem and ei-&gt;i_data_sem:

    =======================================================
    [ INFO: possible circular locking dependency detected ]
    2.6.32-04115-gec044c5 #37
    -------------------------------------------------------
    ureadahead/1855 is trying to acquire lock:
     (&amp;mm-&gt;mmap_sem){++++++}, at: [&lt;ffffffff81107224&gt;] might_fault+0x5c/0xac

    but task is already holding lock:
     (&amp;ei-&gt;i_data_sem){++++..}, at: [&lt;ffffffff811be1fd&gt;] ext4_fiemap+0x11b/0x159

    which lock already depends on the new lock.

    the existing dependency chain (in reverse order) is:

    -&gt; #1 (&amp;ei-&gt;i_data_sem){++++..}:
           [&lt;ffffffff81099bfa&gt;] __lock_acquire+0xb67/0xd0f
           [&lt;ffffffff81099e7e&gt;] lock_acquire+0xdc/0x102
           [&lt;ffffffff81516633&gt;] down_read+0x51/0x84
           [&lt;ffffffff811a2414&gt;] ext4_get_blocks+0x50/0x2a5
           [&lt;ffffffff811a3453&gt;] ext4_get_block+0xab/0xef
           [&lt;ffffffff81154f39&gt;] do_mpage_readpage+0x198/0x48d
           [&lt;ffffffff81155360&gt;] mpage_readpages+0xd0/0x114
           [&lt;ffffffff811a104b&gt;] ext4_readpages+0x1d/0x1f
           [&lt;ffffffff810f8644&gt;] __do_page_cache_readahead+0x12f/0x1bc
           [&lt;ffffffff810f86f2&gt;] ra_submit+0x21/0x25
           [&lt;ffffffff810f0cfd&gt;] filemap_fault+0x19f/0x32c
           [&lt;ffffffff81107b97&gt;] __do_fault+0x55/0x3a2
           [&lt;ffffffff81109db0&gt;] handle_mm_fault+0x327/0x734
           [&lt;ffffffff8151aaa9&gt;] do_page_fault+0x292/0x2aa
           [&lt;ffffffff81518205&gt;] page_fault+0x25/0x30
           [&lt;ffffffff812a34d8&gt;] clear_user+0x38/0x3c
           [&lt;ffffffff81167e16&gt;] padzero+0x20/0x31
           [&lt;ffffffff81168b47&gt;] load_elf_binary+0x8bc/0x17ed
           [&lt;ffffffff81130e95&gt;] search_binary_handler+0xc2/0x259
           [&lt;ffffffff81166d64&gt;] load_script+0x1b8/0x1cc
           [&lt;ffffffff81130e95&gt;] search_binary_handler+0xc2/0x259
           [&lt;ffffffff8113255f&gt;] do_execve+0x1ce/0x2cf
           [&lt;ffffffff81027494&gt;] sys_execve+0x43/0x5a
           [&lt;ffffffff8102918a&gt;] stub_execve+0x6a/0xc0

    -&gt; #0 (&amp;mm-&gt;mmap_sem){++++++}:
           [&lt;ffffffff81099aa4&gt;] __lock_acquire+0xa11/0xd0f
           [&lt;ffffffff81099e7e&gt;] lock_acquire+0xdc/0x102
           [&lt;ffffffff81107251&gt;] might_fault+0x89/0xac
           [&lt;ffffffff81139382&gt;] fiemap_fill_next_extent+0x95/0xda
           [&lt;ffffffff811bcb43&gt;] ext4_ext_fiemap_cb+0x138/0x157
           [&lt;ffffffff811be069&gt;] ext4_ext_walk_space+0x178/0x1f1
           [&lt;ffffffff811be21e&gt;] ext4_fiemap+0x13c/0x159
           [&lt;ffffffff811390e6&gt;] do_vfs_ioctl+0x348/0x4d6
           [&lt;ffffffff811392ca&gt;] sys_ioctl+0x56/0x79
           [&lt;ffffffff81028cb2&gt;] system_call_fastpath+0x16/0x1b

    other info that might help us debug this:

    1 lock held by ureadahead/1855:
     #0:  (&amp;ei-&gt;i_data_sem){++++..}, at: [&lt;ffffffff811be1fd&gt;] ext4_fiemap+0x11b/0x159

    stack backtrace:
    Pid: 1855, comm: ureadahead Not tainted 2.6.32-04115-gec044c5 #37
    Call Trace:
     [&lt;ffffffff81098c70&gt;] print_circular_bug+0xa8/0xb7
     [&lt;ffffffff81099aa4&gt;] __lock_acquire+0xa11/0xd0f
     [&lt;ffffffff8102f229&gt;] ? sched_clock+0x9/0xd
     [&lt;ffffffff81099e7e&gt;] lock_acquire+0xdc/0x102
     [&lt;ffffffff81107224&gt;] ? might_fault+0x5c/0xac
     [&lt;ffffffff81107251&gt;] might_fault+0x89/0xac
     [&lt;ffffffff81107224&gt;] ? might_fault+0x5c/0xac
     [&lt;ffffffff81124b44&gt;] ? __kmalloc+0x13b/0x18c
     [&lt;ffffffff81139382&gt;] fiemap_fill_next_extent+0x95/0xda
     [&lt;ffffffff811bcb43&gt;] ext4_ext_fiemap_cb+0x138/0x157
     [&lt;ffffffff811bca0b&gt;] ? ext4_ext_fiemap_cb+0x0/0x157
     [&lt;ffffffff811be069&gt;] ext4_ext_walk_space+0x178/0x1f1
     [&lt;ffffffff811be21e&gt;] ext4_fiemap+0x13c/0x159
     [&lt;ffffffff81107224&gt;] ? might_fault+0x5c/0xac
     [&lt;ffffffff811390e6&gt;] do_vfs_ioctl+0x348/0x4d6
     [&lt;ffffffff8129f6d0&gt;] ? __up_read+0x8d/0x95
     [&lt;ffffffff81517fb5&gt;] ? retint_swapgs+0x13/0x1b
     [&lt;ffffffff811392ca&gt;] sys_ioctl+0x56/0x79
     [&lt;ffffffff81028cb2&gt;] system_call_fastpath+0x16/0x1b

Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
(cherry picked from commit fab3a549e204172236779f502eccb4f9bf0dc87d)

Fix the following potential circular locking dependency between
mm-&gt;mmap_sem and ei-&gt;i_data_sem:

    =======================================================
    [ INFO: possible circular locking dependency detected ]
    2.6.32-04115-gec044c5 #37
    -------------------------------------------------------
    ureadahead/1855 is trying to acquire lock:
     (&amp;mm-&gt;mmap_sem){++++++}, at: [&lt;ffffffff81107224&gt;] might_fault+0x5c/0xac

    but task is already holding lock:
     (&amp;ei-&gt;i_data_sem){++++..}, at: [&lt;ffffffff811be1fd&gt;] ext4_fiemap+0x11b/0x159

    which lock already depends on the new lock.

    the existing dependency chain (in reverse order) is:

    -&gt; #1 (&amp;ei-&gt;i_data_sem){++++..}:
           [&lt;ffffffff81099bfa&gt;] __lock_acquire+0xb67/0xd0f
           [&lt;ffffffff81099e7e&gt;] lock_acquire+0xdc/0x102
           [&lt;ffffffff81516633&gt;] down_read+0x51/0x84
           [&lt;ffffffff811a2414&gt;] ext4_get_blocks+0x50/0x2a5
           [&lt;ffffffff811a3453&gt;] ext4_get_block+0xab/0xef
           [&lt;ffffffff81154f39&gt;] do_mpage_readpage+0x198/0x48d
           [&lt;ffffffff81155360&gt;] mpage_readpages+0xd0/0x114
           [&lt;ffffffff811a104b&gt;] ext4_readpages+0x1d/0x1f
           [&lt;ffffffff810f8644&gt;] __do_page_cache_readahead+0x12f/0x1bc
           [&lt;ffffffff810f86f2&gt;] ra_submit+0x21/0x25
           [&lt;ffffffff810f0cfd&gt;] filemap_fault+0x19f/0x32c
           [&lt;ffffffff81107b97&gt;] __do_fault+0x55/0x3a2
           [&lt;ffffffff81109db0&gt;] handle_mm_fault+0x327/0x734
           [&lt;ffffffff8151aaa9&gt;] do_page_fault+0x292/0x2aa
           [&lt;ffffffff81518205&gt;] page_fault+0x25/0x30
           [&lt;ffffffff812a34d8&gt;] clear_user+0x38/0x3c
           [&lt;ffffffff81167e16&gt;] padzero+0x20/0x31
           [&lt;ffffffff81168b47&gt;] load_elf_binary+0x8bc/0x17ed
           [&lt;ffffffff81130e95&gt;] search_binary_handler+0xc2/0x259
           [&lt;ffffffff81166d64&gt;] load_script+0x1b8/0x1cc
           [&lt;ffffffff81130e95&gt;] search_binary_handler+0xc2/0x259
           [&lt;ffffffff8113255f&gt;] do_execve+0x1ce/0x2cf
           [&lt;ffffffff81027494&gt;] sys_execve+0x43/0x5a
           [&lt;ffffffff8102918a&gt;] stub_execve+0x6a/0xc0

    -&gt; #0 (&amp;mm-&gt;mmap_sem){++++++}:
           [&lt;ffffffff81099aa4&gt;] __lock_acquire+0xa11/0xd0f
           [&lt;ffffffff81099e7e&gt;] lock_acquire+0xdc/0x102
           [&lt;ffffffff81107251&gt;] might_fault+0x89/0xac
           [&lt;ffffffff81139382&gt;] fiemap_fill_next_extent+0x95/0xda
           [&lt;ffffffff811bcb43&gt;] ext4_ext_fiemap_cb+0x138/0x157
           [&lt;ffffffff811be069&gt;] ext4_ext_walk_space+0x178/0x1f1
           [&lt;ffffffff811be21e&gt;] ext4_fiemap+0x13c/0x159
           [&lt;ffffffff811390e6&gt;] do_vfs_ioctl+0x348/0x4d6
           [&lt;ffffffff811392ca&gt;] sys_ioctl+0x56/0x79
           [&lt;ffffffff81028cb2&gt;] system_call_fastpath+0x16/0x1b

    other info that might help us debug this:

    1 lock held by ureadahead/1855:
     #0:  (&amp;ei-&gt;i_data_sem){++++..}, at: [&lt;ffffffff811be1fd&gt;] ext4_fiemap+0x11b/0x159

    stack backtrace:
    Pid: 1855, comm: ureadahead Not tainted 2.6.32-04115-gec044c5 #37
    Call Trace:
     [&lt;ffffffff81098c70&gt;] print_circular_bug+0xa8/0xb7
     [&lt;ffffffff81099aa4&gt;] __lock_acquire+0xa11/0xd0f
     [&lt;ffffffff8102f229&gt;] ? sched_clock+0x9/0xd
     [&lt;ffffffff81099e7e&gt;] lock_acquire+0xdc/0x102
     [&lt;ffffffff81107224&gt;] ? might_fault+0x5c/0xac
     [&lt;ffffffff81107251&gt;] might_fault+0x89/0xac
     [&lt;ffffffff81107224&gt;] ? might_fault+0x5c/0xac
     [&lt;ffffffff81124b44&gt;] ? __kmalloc+0x13b/0x18c
     [&lt;ffffffff81139382&gt;] fiemap_fill_next_extent+0x95/0xda
     [&lt;ffffffff811bcb43&gt;] ext4_ext_fiemap_cb+0x138/0x157
     [&lt;ffffffff811bca0b&gt;] ? ext4_ext_fiemap_cb+0x0/0x157
     [&lt;ffffffff811be069&gt;] ext4_ext_walk_space+0x178/0x1f1
     [&lt;ffffffff811be21e&gt;] ext4_fiemap+0x13c/0x159
     [&lt;ffffffff81107224&gt;] ? might_fault+0x5c/0xac
     [&lt;ffffffff811390e6&gt;] do_vfs_ioctl+0x348/0x4d6
     [&lt;ffffffff8129f6d0&gt;] ? __up_read+0x8d/0x95
     [&lt;ffffffff81517fb5&gt;] ? retint_swapgs+0x13/0x1b
     [&lt;ffffffff811392ca&gt;] sys_ioctl+0x56/0x79
     [&lt;ffffffff81028cb2&gt;] system_call_fastpath+0x16/0x1b

Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ext4: Fix insufficient checks in EXT4_IOC_MOVE_EXT</title>
<updated>2009-12-14T17:45:26+00:00</updated>
<author>
<name>Akira Fujita</name>
<email>a-fujita@rs.jp.nec.com</email>
</author>
<published>2009-12-07T04:38:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=0fd023ecf102ab0bd070d5affd73b18e6704ff0f'/>
<id>0fd023ecf102ab0bd070d5affd73b18e6704ff0f</id>
<content type='text'>
(cherry picked from commit 4a58579b9e4e2a35d57e6c9c8483e52f6f1b7fd6)

This patch fixes three problems in the handling of the
EXT4_IOC_MOVE_EXT ioctl:

1. In current EXT4_IOC_MOVE_EXT, there are read access mode checks for
original and donor files, but they allow the illegal write access to
donor file, since donor file is overwritten by original file data.  To
fix this problem, change access mode checks of original (r-&gt;r/w) and
donor (r-&gt;w) files.

2.  Disallow the use of donor files that have a setuid or setgid bits.

3.  Call mnt_want_write() and mnt_drop_write() before and after
ext4_move_extents() calling to get write access to a mount.

Signed-off-by: Akira Fujita &lt;a-fujita@rs.jp.nec.com&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
(cherry picked from commit 4a58579b9e4e2a35d57e6c9c8483e52f6f1b7fd6)

This patch fixes three problems in the handling of the
EXT4_IOC_MOVE_EXT ioctl:

1. In current EXT4_IOC_MOVE_EXT, there are read access mode checks for
original and donor files, but they allow the illegal write access to
donor file, since donor file is overwritten by original file data.  To
fix this problem, change access mode checks of original (r-&gt;r/w) and
donor (r-&gt;w) files.

2.  Disallow the use of donor files that have a setuid or setgid bits.

3.  Call mnt_want_write() and mnt_drop_write() before and after
ext4_move_extents() calling to get write access to a mount.

Signed-off-by: Akira Fujita &lt;a-fujita@rs.jp.nec.com&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ext4: Wait for proper transaction commit on fsync</title>
<updated>2009-12-14T17:45:25+00:00</updated>
<author>
<name>Jan Kara</name>
<email>jack@suse.cz</email>
</author>
<published>2009-12-09T04:51:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=eebb744d30006474a8f63af098bc71f0cb209677'/>
<id>eebb744d30006474a8f63af098bc71f0cb209677</id>
<content type='text'>
(cherry picked from commit b436b9bef84de6893e86346d8fbf7104bc520645)

We cannot rely on buffer dirty bits during fsync because pdflush can come
before fsync is called and clear dirty bits without forcing a transaction
commit. What we do is that we track which transaction has last changed
the inode and which transaction last changed allocation and force it to
disk on fsync.

Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
(cherry picked from commit b436b9bef84de6893e86346d8fbf7104bc520645)

We cannot rely on buffer dirty bits during fsync because pdflush can come
before fsync is called and clear dirty bits without forcing a transaction
commit. What we do is that we track which transaction has last changed
the inode and which transaction last changed allocation and force it to
disk on fsync.

Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ext4: fix incorrect block reservation on quota transfer.</title>
<updated>2009-12-14T17:45:23+00:00</updated>
<author>
<name>Dmitry Monakhov</name>
<email>dmonakhov@openvz.org</email>
</author>
<published>2009-12-09T03:42:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=caa305aa349212c285ad9564b9ff2ffa040b193c'/>
<id>caa305aa349212c285ad9564b9ff2ffa040b193c</id>
<content type='text'>
(cherry picked from commit 194074acacebc169ded90a4657193f5180015051)

Inside -&gt;setattr() call both ATTR_UID and ATTR_GID may be valid
This means that we may end-up with transferring all quotas. Add
we have to reserve QUOTA_DEL_BLOCKS for all quotas, as we do in
case of QUOTA_INIT_BLOCKS.

Signed-off-by: Dmitry Monakhov &lt;dmonakhov@openvz.org&gt;
Reviewed-by: Mingming Cao &lt;cmm@us.ibm.com&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
(cherry picked from commit 194074acacebc169ded90a4657193f5180015051)

Inside -&gt;setattr() call both ATTR_UID and ATTR_GID may be valid
This means that we may end-up with transferring all quotas. Add
we have to reserve QUOTA_DEL_BLOCKS for all quotas, as we do in
case of QUOTA_INIT_BLOCKS.

Signed-off-by: Dmitry Monakhov &lt;dmonakhov@openvz.org&gt;
Reviewed-by: Mingming Cao &lt;cmm@us.ibm.com&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ext4: quota macros cleanup</title>
<updated>2009-12-14T17:45:22+00:00</updated>
<author>
<name>Dmitry Monakhov</name>
<email>dmonakhov@openvz.org</email>
</author>
<published>2009-12-09T03:42:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=da2068b384bbfaae98ff55f1424be88c65bf801b'/>
<id>da2068b384bbfaae98ff55f1424be88c65bf801b</id>
<content type='text'>
(cherry picked from commit 5aca07eb7d8f14d90c740834d15ca15277f4820c)

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;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
(cherry picked from commit 5aca07eb7d8f14d90c740834d15ca15277f4820c)

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;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ext4: ext4_get_reserved_space() must return bytes instead of blocks</title>
<updated>2009-12-14T17:45:21+00:00</updated>
<author>
<name>Dmitry Monakhov</name>
<email>dmonakhov@openvz.org</email>
</author>
<published>2009-12-09T03:41:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=6798788a72ee430761aa41c02f770ee3afb9c212'/>
<id>6798788a72ee430761aa41c02f770ee3afb9c212</id>
<content type='text'>
(cherry picked from commit 8aa6790f876e81f5a2211fe1711a5fe3fe2d7b20)

Signed-off-by: Dmitry Monakhov &lt;dmonakhov@openvz.org&gt;
Reviewed-by: Eric Sandeen &lt;sandeen@redhat.com&gt;
Acked-by: Mingming Cao &lt;cmm@us.ibm.com&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
(cherry picked from commit 8aa6790f876e81f5a2211fe1711a5fe3fe2d7b20)

Signed-off-by: Dmitry Monakhov &lt;dmonakhov@openvz.org&gt;
Reviewed-by: Eric Sandeen &lt;sandeen@redhat.com&gt;
Acked-by: Mingming Cao &lt;cmm@us.ibm.com&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ext4: remove blocks from inode prealloc list on failure</title>
<updated>2009-12-14T17:45:16+00:00</updated>
<author>
<name>Curt Wohlgemuth</name>
<email>curtw@google.com</email>
</author>
<published>2009-12-09T03:18:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=637b13106b744398b530fe916eb1556aeb7f6bca'/>
<id>637b13106b744398b530fe916eb1556aeb7f6bca</id>
<content type='text'>
(cherry picked from commit b844167edc7fcafda9623955c05e4c1b3c32ebc7)

This fixes a leak of blocks in an inode prealloc list if device failures
cause ext4_mb_mark_diskspace_used() to fail.

Signed-off-by: Curt Wohlgemuth &lt;curtw@google.com&gt;
Acked-by: Aneesh Kumar K.V &lt;aneesh.kumar@linux.vnet.ibm.com&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
(cherry picked from commit b844167edc7fcafda9623955c05e4c1b3c32ebc7)

This fixes a leak of blocks in an inode prealloc list if device failures
cause ext4_mb_mark_diskspace_used() to fail.

Signed-off-by: Curt Wohlgemuth &lt;curtw@google.com&gt;
Acked-by: Aneesh Kumar K.V &lt;aneesh.kumar@linux.vnet.ibm.com&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ext4: wait for log to commit when umounting</title>
<updated>2009-12-14T17:45:14+00:00</updated>
<author>
<name>Josef Bacik</name>
<email>josef@redhat.com</email>
</author>
<published>2009-12-09T02:48:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=1cd3f1980ce02bd814879ce1ac9cde5eaceb5f13'/>
<id>1cd3f1980ce02bd814879ce1ac9cde5eaceb5f13</id>
<content type='text'>
(cherry picked from commit d4edac314e9ad0b21ba20ba8bc61b61f186f79e1)

There is a potential race when a transaction is committing right when
the file system is being umounting.  This could reduce in a race
because EXT4_SB(sb)-&gt;s_group_info could be freed in ext4_put_super
before the commit code calls a callback so the mballoc code can
release freed blocks in the transaction, resulting in a panic trying
to access the freed s_group_info.

The fix is to wait for the transaction to finish committing before we
shutdown the multiblock allocator.

Signed-off-by: Josef Bacik &lt;josef@redhat.com&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
(cherry picked from commit d4edac314e9ad0b21ba20ba8bc61b61f186f79e1)

There is a potential race when a transaction is committing right when
the file system is being umounting.  This could reduce in a race
because EXT4_SB(sb)-&gt;s_group_info could be freed in ext4_put_super
before the commit code calls a callback so the mballoc code can
release freed blocks in the transaction, resulting in a panic trying
to access the freed s_group_info.

The fix is to wait for the transaction to finish committing before we
shutdown the multiblock allocator.

Signed-off-by: Josef Bacik &lt;josef@redhat.com&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ext4: Avoid data / filesystem corruption when write fails to copy data</title>
<updated>2009-12-14T17:45:13+00:00</updated>
<author>
<name>Jan Kara</name>
<email>jack@suse.cz</email>
</author>
<published>2009-12-09T02:24:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=35a6f7824919816fca466997531885044d290b59'/>
<id>35a6f7824919816fca466997531885044d290b59</id>
<content type='text'>
(cherry picked from commit b9a4207d5e911b938f73079a83cc2ae10524ec7f)

When ext4_write_begin fails after allocating some blocks or
generic_perform_write fails to copy data to write, we truncate blocks
already instantiated beyond i_size.  Although these blocks were never
inside i_size, we have to truncate the pagecache of these blocks so
that corresponding buffers get unmapped.  Otherwise subsequent
__block_prepare_write (called because we are retrying the write) will
find the buffers mapped, not call -&gt;get_block, and thus the page will
be backed by already freed blocks leading to filesystem and data
corruption.

Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
(cherry picked from commit b9a4207d5e911b938f73079a83cc2ae10524ec7f)

When ext4_write_begin fails after allocating some blocks or
generic_perform_write fails to copy data to write, we truncate blocks
already instantiated beyond i_size.  Although these blocks were never
inside i_size, we have to truncate the pagecache of these blocks so
that corresponding buffers get unmapped.  Otherwise subsequent
__block_prepare_write (called because we are retrying the write) will
find the buffers mapped, not call -&gt;get_block, and thus the page will
be backed by already freed blocks leading to filesystem and data
corruption.

Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
Signed-off-by: "Theodore Ts'o" &lt;tytso@mit.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</pre>
</div>
</content>
</entry>
</feed>
