<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/fs/ext4, branch v3.19-rc2</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>move_extent_per_page(): get rid of unused w_flags</title>
<updated>2014-12-17T11:43:56+00:00</updated>
<author>
<name>Al Viro</name>
<email>viro@zeniv.linux.org.uk</email>
</author>
<published>2014-12-17T09:37:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=b1bc6d7f163234cad4f34e3f5dffde44b96369eb'/>
<id>b1bc6d7f163234cad4f34e3f5dffde44b96369eb</id>
<content type='text'>
... and comparing get_fs() with KERNEL_DS used only to initialize that

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
... and comparing get_fs() with KERNEL_DS used only to initialize that

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4</title>
<updated>2014-12-12T17:28:03+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2014-12-12T17:28:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=9bfccec24e31f4f83445cfe0c1b0a5ef97900628'/>
<id>9bfccec24e31f4f83445cfe0c1b0a5ef97900628</id>
<content type='text'>
Pull ext4 updates from Ted Ts'o:
 "Lots of bugs fixes, including Zheng and Jan's extent status shrinker
  fixes, which should improve CPU utilization and potential soft lockups
  under heavy memory pressure, and Eric Whitney's bigalloc fixes"

* tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (26 commits)
  ext4: ext4_da_convert_inline_data_to_extent drop locked page after error
  ext4: fix suboptimal seek_{data,hole} extents traversial
  ext4: ext4_inline_data_fiemap should respect callers argument
  ext4: prevent fsreentrance deadlock for inline_data
  ext4: forbid journal_async_commit in data=ordered mode
  jbd2: remove unnecessary NULL check before iput()
  ext4: Remove an unnecessary check for NULL before iput()
  ext4: remove unneeded code in ext4_unlink
  ext4: don't count external journal blocks as overhead
  ext4: remove never taken branch from ext4_ext_shift_path_extents()
  ext4: create nojournal_checksum mount option
  ext4: update comments regarding ext4_delete_inode()
  ext4: cleanup GFP flags inside resize path
  ext4: introduce aging to extent status tree
  ext4: cleanup flag definitions for extent status tree
  ext4: limit number of scanned extents in status tree shrinker
  ext4: move handling of list of shrinkable inodes into extent status code
  ext4: change LRU to round-robin in extent status tree shrinker
  ext4: cache extent hole in extent status tree for ext4_da_map_blocks()
  ext4: fix block reservation for bigalloc filesystems
  ...
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pull ext4 updates from Ted Ts'o:
 "Lots of bugs fixes, including Zheng and Jan's extent status shrinker
  fixes, which should improve CPU utilization and potential soft lockups
  under heavy memory pressure, and Eric Whitney's bigalloc fixes"

* tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (26 commits)
  ext4: ext4_da_convert_inline_data_to_extent drop locked page after error
  ext4: fix suboptimal seek_{data,hole} extents traversial
  ext4: ext4_inline_data_fiemap should respect callers argument
  ext4: prevent fsreentrance deadlock for inline_data
  ext4: forbid journal_async_commit in data=ordered mode
  jbd2: remove unnecessary NULL check before iput()
  ext4: Remove an unnecessary check for NULL before iput()
  ext4: remove unneeded code in ext4_unlink
  ext4: don't count external journal blocks as overhead
  ext4: remove never taken branch from ext4_ext_shift_path_extents()
  ext4: create nojournal_checksum mount option
  ext4: update comments regarding ext4_delete_inode()
  ext4: cleanup GFP flags inside resize path
  ext4: introduce aging to extent status tree
  ext4: cleanup flag definitions for extent status tree
  ext4: limit number of scanned extents in status tree shrinker
  ext4: move handling of list of shrinkable inodes into extent status code
  ext4: change LRU to round-robin in extent status tree shrinker
  ext4: cache extent hole in extent status tree for ext4_da_map_blocks()
  ext4: fix block reservation for bigalloc filesystems
  ...
</pre>
</div>
</content>
</entry>
<entry>
<title>ext4: ext4_da_convert_inline_data_to_extent drop locked page after error</title>
<updated>2014-12-06T02:37:15+00:00</updated>
<author>
<name>Dmitry Monakhov</name>
<email>dmonakhov@openvz.org</email>
</author>
<published>2014-12-06T02:37:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=50db71abc529c48b21f4c3034d3cff27cfb25795'/>
<id>50db71abc529c48b21f4c3034d3cff27cfb25795</id>
<content type='text'>
Testcase:
xfstests generic/270
MKFS_OPTIONS="-q -I 256 -O inline_data,64bit"

Call Trace:
 [&lt;ffffffff81144c76&gt;] lock_page+0x35/0x39 -------&gt; DEADLOCK
 [&lt;ffffffff81145260&gt;] pagecache_get_page+0x65/0x15a
 [&lt;ffffffff811507fc&gt;] truncate_inode_pages_range+0x1db/0x45c
 [&lt;ffffffff8120ea63&gt;] ? ext4_da_get_block_prep+0x439/0x4b6
 [&lt;ffffffff811b29b7&gt;] ? __block_write_begin+0x284/0x29c
 [&lt;ffffffff8120e62a&gt;] ? ext4_change_inode_journal_flag+0x16b/0x16b
 [&lt;ffffffff81150af0&gt;] truncate_inode_pages+0x12/0x14
 [&lt;ffffffff81247cb4&gt;] ext4_truncate_failed_write+0x19/0x25
 [&lt;ffffffff812488cf&gt;] ext4_da_write_inline_data_begin+0x196/0x31c
 [&lt;ffffffff81210dad&gt;] ext4_da_write_begin+0x189/0x302
 [&lt;ffffffff810c07ac&gt;] ? trace_hardirqs_on+0xd/0xf
 [&lt;ffffffff810ddd13&gt;] ? read_seqcount_begin.clone.1+0x9f/0xcc
 [&lt;ffffffff8114309d&gt;] generic_perform_write+0xc7/0x1c6
 [&lt;ffffffff810c040e&gt;] ? mark_held_locks+0x59/0x77
 [&lt;ffffffff811445d1&gt;] __generic_file_write_iter+0x17f/0x1c5
 [&lt;ffffffff8120726b&gt;] ext4_file_write_iter+0x2a5/0x354
 [&lt;ffffffff81185656&gt;] ? file_start_write+0x2a/0x2c
 [&lt;ffffffff8107bcdb&gt;] ? bad_area_nosemaphore+0x13/0x15
 [&lt;ffffffff811858ce&gt;] new_sync_write+0x8a/0xb2
 [&lt;ffffffff81186e7b&gt;] vfs_write+0xb5/0x14d
 [&lt;ffffffff81186ffb&gt;] SyS_write+0x5c/0x8c
 [&lt;ffffffff816f2529&gt;] system_call_fastpath+0x12/0x17

Signed-off-by: Dmitry Monakhov &lt;dmonakhov@openvz.org&gt;
Signed-off-by: Theodore Ts'o &lt;tytso@mit.edu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Testcase:
xfstests generic/270
MKFS_OPTIONS="-q -I 256 -O inline_data,64bit"

Call Trace:
 [&lt;ffffffff81144c76&gt;] lock_page+0x35/0x39 -------&gt; DEADLOCK
 [&lt;ffffffff81145260&gt;] pagecache_get_page+0x65/0x15a
 [&lt;ffffffff811507fc&gt;] truncate_inode_pages_range+0x1db/0x45c
 [&lt;ffffffff8120ea63&gt;] ? ext4_da_get_block_prep+0x439/0x4b6
 [&lt;ffffffff811b29b7&gt;] ? __block_write_begin+0x284/0x29c
 [&lt;ffffffff8120e62a&gt;] ? ext4_change_inode_journal_flag+0x16b/0x16b
 [&lt;ffffffff81150af0&gt;] truncate_inode_pages+0x12/0x14
 [&lt;ffffffff81247cb4&gt;] ext4_truncate_failed_write+0x19/0x25
 [&lt;ffffffff812488cf&gt;] ext4_da_write_inline_data_begin+0x196/0x31c
 [&lt;ffffffff81210dad&gt;] ext4_da_write_begin+0x189/0x302
 [&lt;ffffffff810c07ac&gt;] ? trace_hardirqs_on+0xd/0xf
 [&lt;ffffffff810ddd13&gt;] ? read_seqcount_begin.clone.1+0x9f/0xcc
 [&lt;ffffffff8114309d&gt;] generic_perform_write+0xc7/0x1c6
 [&lt;ffffffff810c040e&gt;] ? mark_held_locks+0x59/0x77
 [&lt;ffffffff811445d1&gt;] __generic_file_write_iter+0x17f/0x1c5
 [&lt;ffffffff8120726b&gt;] ext4_file_write_iter+0x2a5/0x354
 [&lt;ffffffff81185656&gt;] ? file_start_write+0x2a/0x2c
 [&lt;ffffffff8107bcdb&gt;] ? bad_area_nosemaphore+0x13/0x15
 [&lt;ffffffff811858ce&gt;] new_sync_write+0x8a/0xb2
 [&lt;ffffffff81186e7b&gt;] vfs_write+0xb5/0x14d
 [&lt;ffffffff81186ffb&gt;] SyS_write+0x5c/0x8c
 [&lt;ffffffff816f2529&gt;] system_call_fastpath+0x12/0x17

Signed-off-by: Dmitry Monakhov &lt;dmonakhov@openvz.org&gt;
Signed-off-by: Theodore Ts'o &lt;tytso@mit.edu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ext4: fix suboptimal seek_{data,hole} extents traversial</title>
<updated>2014-12-02T23:08:53+00:00</updated>
<author>
<name>Dmitry Monakhov</name>
<email>dmonakhov@openvz.org</email>
</author>
<published>2014-12-02T23:08:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=14516bb7bb6ffbd49f35389f9ece3b2045ba5815'/>
<id>14516bb7bb6ffbd49f35389f9ece3b2045ba5815</id>
<content type='text'>
It is ridiculous practice to scan inode block by block, this technique
applicable only for old indirect files. This takes significant amount
of time for really large files. Let's reuse ext4_fiemap which already
traverse inode-tree in most optimal meaner.

TESTCASE:
ftruncate64(fd, 0);
ftruncate64(fd, 1ULL &lt;&lt; 40);
/* lseek will spin very long time */
lseek64(fd, 0, SEEK_DATA);
lseek64(fd, 0, SEEK_HOLE);

Original report: https://lkml.org/lkml/2014/10/16/620

Signed-off-by: Dmitry Monakhov &lt;dmonakhov@openvz.org&gt;
Signed-off-by: Theodore Ts'o &lt;tytso@mit.edu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It is ridiculous practice to scan inode block by block, this technique
applicable only for old indirect files. This takes significant amount
of time for really large files. Let's reuse ext4_fiemap which already
traverse inode-tree in most optimal meaner.

TESTCASE:
ftruncate64(fd, 0);
ftruncate64(fd, 1ULL &lt;&lt; 40);
/* lseek will spin very long time */
lseek64(fd, 0, SEEK_DATA);
lseek64(fd, 0, SEEK_HOLE);

Original report: https://lkml.org/lkml/2014/10/16/620

Signed-off-by: Dmitry Monakhov &lt;dmonakhov@openvz.org&gt;
Signed-off-by: Theodore Ts'o &lt;tytso@mit.edu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ext4: ext4_inline_data_fiemap should respect callers argument</title>
<updated>2014-12-02T21:11:20+00:00</updated>
<author>
<name>Dmitry Monakhov</name>
<email>dmonakhov@openvz.org</email>
</author>
<published>2014-12-02T21:11:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=d952d69e268f833c85c0bafee9f67f9dba85044b'/>
<id>d952d69e268f833c85c0bafee9f67f9dba85044b</id>
<content type='text'>
Currently ext4_inline_data_fiemap ignores requested arguments (start
and len) which may lead endless loop if start != 0.  Also fix incorrect
extent length determination.

Signed-off-by: Dmitry Monakhov &lt;dmonakhov@openvz.org&gt;
Signed-off-by: Theodore Ts'o &lt;tytso@mit.edu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Currently ext4_inline_data_fiemap ignores requested arguments (start
and len) which may lead endless loop if start != 0.  Also fix incorrect
extent length determination.

Signed-off-by: Dmitry Monakhov &lt;dmonakhov@openvz.org&gt;
Signed-off-by: Theodore Ts'o &lt;tytso@mit.edu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ext4: prevent fsreentrance deadlock for inline_data</title>
<updated>2014-12-02T21:09:50+00:00</updated>
<author>
<name>Dmitry Monakhov</name>
<email>dmonakhov@openvz.org</email>
</author>
<published>2014-12-02T21:09:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=5cc28a9eaab21ce7ded7845b32e2eafc4bbeb175'/>
<id>5cc28a9eaab21ce7ded7845b32e2eafc4bbeb175</id>
<content type='text'>
ext4_da_convert_inline_data_to_extent() invokes
grab_cache_page_write_begin().  grab_cache_page_write_begin performs
memory allocation, so fs-reentrance should be prohibited because we
are inside journal transaction.

Signed-off-by: Dmitry Monakhov &lt;dmonakhov@openvz.org&gt;
Signed-off-by: Theodore Ts'o &lt;tytso@mit.edu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
ext4_da_convert_inline_data_to_extent() invokes
grab_cache_page_write_begin().  grab_cache_page_write_begin performs
memory allocation, so fs-reentrance should be prohibited because we
are inside journal transaction.

Signed-off-by: Dmitry Monakhov &lt;dmonakhov@openvz.org&gt;
Signed-off-by: Theodore Ts'o &lt;tytso@mit.edu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ext4: forbid journal_async_commit in data=ordered mode</title>
<updated>2014-11-26T01:19:17+00:00</updated>
<author>
<name>Jan Kara</name>
<email>jack@suse.cz</email>
</author>
<published>2014-11-26T01:19:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=d4f761074353b9aa42a3bdd039d78e1af5f5f29f'/>
<id>d4f761074353b9aa42a3bdd039d78e1af5f5f29f</id>
<content type='text'>
Option journal_async_commit breaks gurantees of data=ordered mode as it
sends only a single cache flush after writing a transaction commit
block. Thus even though the transaction including the commit block is
fully stored on persistent storage, file data may still linger in drives
caches and will be lost on power failure. Since all checksums match on
journal recovery, we replay the transaction thus possibly exposing stale
user data.

To fix this data exposure issue, remove the possibility to use
journal_async_commit in data=ordered mode.

Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
Signed-off-by: Theodore Ts'o &lt;tytso@mit.edu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Option journal_async_commit breaks gurantees of data=ordered mode as it
sends only a single cache flush after writing a transaction commit
block. Thus even though the transaction including the commit block is
fully stored on persistent storage, file data may still linger in drives
caches and will be lost on power failure. Since all checksums match on
journal recovery, we replay the transaction thus possibly exposing stale
user data.

To fix this data exposure issue, remove the possibility to use
journal_async_commit in data=ordered mode.

Signed-off-by: Jan Kara &lt;jack@suse.cz&gt;
Signed-off-by: Theodore Ts'o &lt;tytso@mit.edu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ext4: Remove an unnecessary check for NULL before iput()</title>
<updated>2014-11-26T01:01:37+00:00</updated>
<author>
<name>Markus Elfring</name>
<email>elfring@users.sourceforge.net</email>
</author>
<published>2014-11-26T01:01:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=bfcba2d0352f7916e98a1cec54c1c2473da6f4d6'/>
<id>bfcba2d0352f7916e98a1cec54c1c2473da6f4d6</id>
<content type='text'>
The iput() function tests whether its argument is NULL and then
returns immediately. Thus the test around the call is not needed.

This issue was detected by using the Coccinelle software.

Signed-off-by: Markus Elfring &lt;elfring@users.sourceforge.net&gt;
Signed-off-by: Theodore Ts'o &lt;tytso@mit.edu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The iput() function tests whether its argument is NULL and then
returns immediately. Thus the test around the call is not needed.

This issue was detected by using the Coccinelle software.

Signed-off-by: Markus Elfring &lt;elfring@users.sourceforge.net&gt;
Signed-off-by: Theodore Ts'o &lt;tytso@mit.edu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ext4: remove unneeded code in ext4_unlink</title>
<updated>2014-11-25T21:34:38+00:00</updated>
<author>
<name>Namjae Jeon</name>
<email>namjae.jeon@samsung.com</email>
</author>
<published>2014-11-25T21:34:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=31fc006b12f2c7e88fa5ee8f7f17ed0f85c9e4b8'/>
<id>31fc006b12f2c7e88fa5ee8f7f17ed0f85c9e4b8</id>
<content type='text'>
Setting retval to zero is not needed in ext4_unlink.
Remove unneeded code.

Signed-off-by: Namjae Jeon &lt;namjae.jeon@samsung.com&gt;
Signed-off-by: Ashish Sangwan &lt;a.sangwan@samsung.com&gt;
Signed-off-by: Theodore Ts'o &lt;tytso@mit.edu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Setting retval to zero is not needed in ext4_unlink.
Remove unneeded code.

Signed-off-by: Namjae Jeon &lt;namjae.jeon@samsung.com&gt;
Signed-off-by: Ashish Sangwan &lt;a.sangwan@samsung.com&gt;
Signed-off-by: Theodore Ts'o &lt;tytso@mit.edu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ext4: don't count external journal blocks as overhead</title>
<updated>2014-11-25T21:27:44+00:00</updated>
<author>
<name>Eric Sandeen</name>
<email>sandeen@redhat.com</email>
</author>
<published>2014-11-25T21:27:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=b003b52496b9bea9b186b127aea730b79d2a83bd'/>
<id>b003b52496b9bea9b186b127aea730b79d2a83bd</id>
<content type='text'>
This was fixed for ext3 with:

e6d8fb3 ext3: Count internal journal as bsddf overhead in ext3_statfs

but was never fixed for ext4.

With a large external journal and no used disk blocks, df comes
out negative without this, as journal blocks are added to the
overhead &amp; subtracted from used blocks unconditionally.

Signed-off-by: Eric Sandeen &lt;sandeen@redhat.com&gt;
Signed-off-by: Theodore Ts'o &lt;tytso@mit.edu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This was fixed for ext3 with:

e6d8fb3 ext3: Count internal journal as bsddf overhead in ext3_statfs

but was never fixed for ext4.

With a large external journal and no used disk blocks, df comes
out negative without this, as journal blocks are added to the
overhead &amp; subtracted from used blocks unconditionally.

Signed-off-by: Eric Sandeen &lt;sandeen@redhat.com&gt;
Signed-off-by: Theodore Ts'o &lt;tytso@mit.edu&gt;
</pre>
</div>
</content>
</entry>
</feed>
