<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/fs/f2fs/node.c, branch v4.5</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>f2fs: fix wrong memory condition check</title>
<updated>2016-01-11T23:56:43+00:00</updated>
<author>
<name>Jaegeuk Kim</name>
<email>jaegeuk@kernel.org</email>
</author>
<published>2016-01-10T00:14:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=1663cae48ce3ce991c0e3f1a6fbdbd57f3dce9af'/>
<id>1663cae48ce3ce991c0e3f1a6fbdbd57f3dce9af</id>
<content type='text'>
This patch fixes wrong decision for avaliable_free_memory.
The return valus is already set as false, so we should consider true condition
below only.

Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch fixes wrong decision for avaliable_free_memory.
The return valus is already set as false, so we should consider true condition
below only.

Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>f2fs: avoid unnecessary f2fs_balance_fs calls</title>
<updated>2016-01-08T19:45:22+00:00</updated>
<author>
<name>Jaegeuk Kim</name>
<email>jaegeuk@kernel.org</email>
</author>
<published>2016-01-07T21:23:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=12719ae14e57980ebf0a7baa63bc80494c76b192'/>
<id>12719ae14e57980ebf0a7baa63bc80494c76b192</id>
<content type='text'>
Only when node page is newly dirtied, it needs to check whether we need to do
f2fs_gc.

Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Only when node page is newly dirtied, it needs to check whether we need to do
f2fs_gc.

Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>f2fs: introduce __get_node_page to reuse common code</title>
<updated>2016-01-08T19:45:20+00:00</updated>
<author>
<name>Chao Yu</name>
<email>chao2.yu@samsung.com</email>
</author>
<published>2016-01-05T08:52:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=0e022ea8fc49ed9c72ab9dcd9ca96414dc026184'/>
<id>0e022ea8fc49ed9c72ab9dcd9ca96414dc026184</id>
<content type='text'>
There are duplicated code in between get_node_page and get_node_page_ra,
introduce __get_node_page to includes common parts of these two, and
export get_node_page and get_node_page_ra by reusing __get_node_page.

Signed-off-by: Chao Yu &lt;chao2.yu@samsung.com&gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There are duplicated code in between get_node_page and get_node_page_ra,
introduce __get_node_page to includes common parts of these two, and
export get_node_page and get_node_page_ra by reusing __get_node_page.

Signed-off-by: Chao Yu &lt;chao2.yu@samsung.com&gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>f2fs: check node id earily when readaheading node page</title>
<updated>2016-01-08T19:45:16+00:00</updated>
<author>
<name>Chao Yu</name>
<email>chao2.yu@samsung.com</email>
</author>
<published>2016-01-08T12:13:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=e84587250ab7e38b7d85e93a8c317e065e5c0a1f'/>
<id>e84587250ab7e38b7d85e93a8c317e065e5c0a1f</id>
<content type='text'>
Add node id check in ra_node_page and get_node_page_ra like get_node_page.

Signed-off-by: Chao Yu &lt;chao2.yu@samsung.com&gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add node id check in ra_node_page and get_node_page_ra like get_node_page.

Signed-off-by: Chao Yu &lt;chao2.yu@samsung.com&gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "f2fs: check the node block address of newly allocated nid"</title>
<updated>2016-01-07T03:15:49+00:00</updated>
<author>
<name>Jaegeuk Kim</name>
<email>jaegeuk@kernel.org</email>
</author>
<published>2016-01-02T17:23:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=957efb0c2144cc5ff1795f43bf2d2ca430eaa227'/>
<id>957efb0c2144cc5ff1795f43bf2d2ca430eaa227</id>
<content type='text'>
Original issue is fixed by:

  f2fs: cover more area with nat_tree_lock

This reverts commit 24928634f81b1592e83b37dcd89ed45c28f12feb.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Original issue is fixed by:

  f2fs: cover more area with nat_tree_lock

This reverts commit 24928634f81b1592e83b37dcd89ed45c28f12feb.
</pre>
</div>
</content>
</entry>
<entry>
<title>f2fs: cover more area with nat_tree_lock</title>
<updated>2016-01-07T03:15:48+00:00</updated>
<author>
<name>Jaegeuk Kim</name>
<email>jaegeuk@kernel.org</email>
</author>
<published>2016-01-02T17:19:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=a51311938e14c17f5a94d30baac9d7bec71f5858'/>
<id>a51311938e14c17f5a94d30baac9d7bec71f5858</id>
<content type='text'>
There was a subtle bug on nat cache management which incurs wrong nid allocation
or wrong block addresses when try_to_free_nats is triggered heavily.
This patch enlarges the previous coverage of nat_tree_lock to avoid data race.

Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There was a subtle bug on nat cache management which incurs wrong nid allocation
or wrong block addresses when try_to_free_nats is triggered heavily.
This patch enlarges the previous coverage of nat_tree_lock to avoid data race.

Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>f2fs: write pending bios when cp_error is set</title>
<updated>2015-12-31T21:08:02+00:00</updated>
<author>
<name>Jaegeuk Kim</name>
<email>jaegeuk@kernel.org</email>
</author>
<published>2015-12-31T21:08:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=8d4ea29b6426470456ee9daee64bac55a3b13289'/>
<id>8d4ea29b6426470456ee9daee64bac55a3b13289</id>
<content type='text'>
When testing ioc_shutdown, put_super is able to be hanged by waiting for
writebacking pages as follows.

INFO: task umount:2723 blocked for more than 120 seconds.
      Tainted: G           O    4.4.0-rc3+ #8
"echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs" disables this message.
umount          D ffff88000859f9d8     0  2723   2110 0x00000000
 ffff88000859f9d8 0000000000000000 0000000000000000 ffffffff81e11540
 ffff880078c225c0 ffff8800085a0000 ffff88007fc17440 7fffffffffffffff
 ffffffff818239f0 ffff88000859fb48 ffff88000859f9f0 ffffffff8182310c
Call Trace:
 [&lt;ffffffff818239f0&gt;] ? bit_wait+0x50/0x50
 [&lt;ffffffff8182310c&gt;] schedule+0x3c/0x90
 [&lt;ffffffff81827fb9&gt;] schedule_timeout+0x2d9/0x430
 [&lt;ffffffff810e0f8f&gt;] ? mark_held_locks+0x6f/0xa0
 [&lt;ffffffff8111614d&gt;] ? ktime_get+0x7d/0x140
 [&lt;ffffffff818239f0&gt;] ? bit_wait+0x50/0x50
 [&lt;ffffffff8106a655&gt;] ? kvm_clock_get_cycles+0x25/0x30
 [&lt;ffffffff8111617c&gt;] ? ktime_get+0xac/0x140
 [&lt;ffffffff818239f0&gt;] ? bit_wait+0x50/0x50
 [&lt;ffffffff81822564&gt;] io_schedule_timeout+0xa4/0x110
 [&lt;ffffffff81823a25&gt;] bit_wait_io+0x35/0x50
 [&lt;ffffffff818235bd&gt;] __wait_on_bit+0x5d/0x90
 [&lt;ffffffff811b9e8b&gt;] wait_on_page_bit+0xcb/0xf0
 [&lt;ffffffff810d5f90&gt;] ? autoremove_wake_function+0x40/0x40
 [&lt;ffffffff811cf84c&gt;] truncate_inode_pages_range+0x4bc/0x840
 [&lt;ffffffff811cfc3d&gt;] truncate_inode_pages_final+0x4d/0x60
 [&lt;ffffffffc023ced5&gt;] f2fs_evict_inode+0x75/0x400 [f2fs]
 [&lt;ffffffff812639bc&gt;] evict+0xbc/0x190
 [&lt;ffffffff81263d19&gt;] iput+0x229/0x2c0
 [&lt;ffffffffc0241885&gt;] f2fs_put_super+0x105/0x1a0 [f2fs]
 [&lt;ffffffff8124756a&gt;] generic_shutdown_super+0x6a/0xf0
 [&lt;ffffffff812478f7&gt;] kill_block_super+0x27/0x70
 [&lt;ffffffffc0241290&gt;] kill_f2fs_super+0x20/0x30 [f2fs]
 [&lt;ffffffff81247b03&gt;] deactivate_locked_super+0x43/0x70
 [&lt;ffffffff81247f4c&gt;] deactivate_super+0x5c/0x60
 [&lt;ffffffff81268d2f&gt;] cleanup_mnt+0x3f/0x90
 [&lt;ffffffff81268dc2&gt;] __cleanup_mnt+0x12/0x20
 [&lt;ffffffff810ac463&gt;] task_work_run+0x73/0xa0
 [&lt;ffffffff810032ac&gt;] exit_to_usermode_loop+0xcc/0xd0
 [&lt;ffffffff81003e7c&gt;] syscall_return_slowpath+0xcc/0xe0
 [&lt;ffffffff81829ea2&gt;] int_ret_from_sys_call+0x25/0x9f

Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When testing ioc_shutdown, put_super is able to be hanged by waiting for
writebacking pages as follows.

INFO: task umount:2723 blocked for more than 120 seconds.
      Tainted: G           O    4.4.0-rc3+ #8
"echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs" disables this message.
umount          D ffff88000859f9d8     0  2723   2110 0x00000000
 ffff88000859f9d8 0000000000000000 0000000000000000 ffffffff81e11540
 ffff880078c225c0 ffff8800085a0000 ffff88007fc17440 7fffffffffffffff
 ffffffff818239f0 ffff88000859fb48 ffff88000859f9f0 ffffffff8182310c
Call Trace:
 [&lt;ffffffff818239f0&gt;] ? bit_wait+0x50/0x50
 [&lt;ffffffff8182310c&gt;] schedule+0x3c/0x90
 [&lt;ffffffff81827fb9&gt;] schedule_timeout+0x2d9/0x430
 [&lt;ffffffff810e0f8f&gt;] ? mark_held_locks+0x6f/0xa0
 [&lt;ffffffff8111614d&gt;] ? ktime_get+0x7d/0x140
 [&lt;ffffffff818239f0&gt;] ? bit_wait+0x50/0x50
 [&lt;ffffffff8106a655&gt;] ? kvm_clock_get_cycles+0x25/0x30
 [&lt;ffffffff8111617c&gt;] ? ktime_get+0xac/0x140
 [&lt;ffffffff818239f0&gt;] ? bit_wait+0x50/0x50
 [&lt;ffffffff81822564&gt;] io_schedule_timeout+0xa4/0x110
 [&lt;ffffffff81823a25&gt;] bit_wait_io+0x35/0x50
 [&lt;ffffffff818235bd&gt;] __wait_on_bit+0x5d/0x90
 [&lt;ffffffff811b9e8b&gt;] wait_on_page_bit+0xcb/0xf0
 [&lt;ffffffff810d5f90&gt;] ? autoremove_wake_function+0x40/0x40
 [&lt;ffffffff811cf84c&gt;] truncate_inode_pages_range+0x4bc/0x840
 [&lt;ffffffff811cfc3d&gt;] truncate_inode_pages_final+0x4d/0x60
 [&lt;ffffffffc023ced5&gt;] f2fs_evict_inode+0x75/0x400 [f2fs]
 [&lt;ffffffff812639bc&gt;] evict+0xbc/0x190
 [&lt;ffffffff81263d19&gt;] iput+0x229/0x2c0
 [&lt;ffffffffc0241885&gt;] f2fs_put_super+0x105/0x1a0 [f2fs]
 [&lt;ffffffff8124756a&gt;] generic_shutdown_super+0x6a/0xf0
 [&lt;ffffffff812478f7&gt;] kill_block_super+0x27/0x70
 [&lt;ffffffffc0241290&gt;] kill_f2fs_super+0x20/0x30 [f2fs]
 [&lt;ffffffff81247b03&gt;] deactivate_locked_super+0x43/0x70
 [&lt;ffffffff81247f4c&gt;] deactivate_super+0x5c/0x60
 [&lt;ffffffff81268d2f&gt;] cleanup_mnt+0x3f/0x90
 [&lt;ffffffff81268dc2&gt;] __cleanup_mnt+0x12/0x20
 [&lt;ffffffff810ac463&gt;] task_work_run+0x73/0xa0
 [&lt;ffffffff810032ac&gt;] exit_to_usermode_loop+0xcc/0xd0
 [&lt;ffffffff81003e7c&gt;] syscall_return_slowpath+0xcc/0xe0
 [&lt;ffffffff81829ea2&gt;] int_ret_from_sys_call+0x25/0x9f

Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>f2fs: let user being aware of IO error</title>
<updated>2015-12-30T18:14:15+00:00</updated>
<author>
<name>Chao Yu</name>
<email>chao2.yu@samsung.com</email>
</author>
<published>2015-12-24T10:04:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=6d5a1495eebd441216dc96913a4270100b26e104'/>
<id>6d5a1495eebd441216dc96913a4270100b26e104</id>
<content type='text'>
Sometimes we keep dumb when IO error occur in lower layer device, so user
will not receive any error return value for some operation, but actually,
the operation did not succeed.

This sould be avoided, so this patch reports such kind of error to user.

Signed-off-by: Chao Yu &lt;chao2.yu@samsung.com&gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Sometimes we keep dumb when IO error occur in lower layer device, so user
will not receive any error return value for some operation, but actually,
the operation did not succeed.

This sould be avoided, so this patch reports such kind of error to user.

Signed-off-by: Chao Yu &lt;chao2.yu@samsung.com&gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>f2fs: return early when trying to read null nid</title>
<updated>2015-12-30T18:14:12+00:00</updated>
<author>
<name>Jaegeuk Kim</name>
<email>jaegeuk@kernel.org</email>
</author>
<published>2015-12-23T22:17:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=4aa69d5667914dd0844d98ad84804b79a4845fa3'/>
<id>4aa69d5667914dd0844d98ad84804b79a4845fa3</id>
<content type='text'>
If get_node_page() gets zero nid, we can return early without getting a wrong
page. For example, get_dnode_of_data() can try to do that.

Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If get_node_page() gets zero nid, we can return early without getting a wrong
page. For example, get_dnode_of_data() can try to do that.

Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>f2fs: record node block allocation in dnode_of_data</title>
<updated>2015-12-30T18:14:07+00:00</updated>
<author>
<name>Jaegeuk Kim</name>
<email>jaegeuk@kernel.org</email>
</author>
<published>2015-12-22T20:59:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=93bae099eaa0ae784fbe4d9eddcdc54fb5812466'/>
<id>93bae099eaa0ae784fbe4d9eddcdc54fb5812466</id>
<content type='text'>
This patch introduces recording node block allocation in dnode_of_data.
This information helps to figure out whether any node block is allocated during
specific file operations.

Reviewed-by: Chao Yu &lt;chao2.yu@samsung.com&gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch introduces recording node block allocation in dnode_of_data.
This information helps to figure out whether any node block is allocated during
specific file operations.

Reviewed-by: Chao Yu &lt;chao2.yu@samsung.com&gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
