<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/fs/f2fs/data.c, branch v4.0</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>f2fs: allocate data blocks in advance for f2fs_direct_IO</title>
<updated>2015-02-12T01:04:49+00:00</updated>
<author>
<name>Jaegeuk Kim</name>
<email>jaegeuk@kernel.org</email>
</author>
<published>2015-02-09T20:09:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=59b802e5a453d413e7222d179be405cbadca3a8e'/>
<id>59b802e5a453d413e7222d179be405cbadca3a8e</id>
<content type='text'>
This patch adds preallocation for data blocks to prepare f2fs_direct_IO.

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 adds preallocation for data blocks to prepare f2fs_direct_IO.

Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>f2fs: call set_buffer_new for get_block</title>
<updated>2015-02-12T01:04:47+00:00</updated>
<author>
<name>Jaegeuk Kim</name>
<email>jaegeuk@kernel.org</email>
</author>
<published>2015-02-09T18:34:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=da17eece035d72cb50d48529744a490784f29d2f'/>
<id>da17eece035d72cb50d48529744a490784f29d2f</id>
<content type='text'>
This patch fixes wrong handling of buffer_new flag in get_block.
If f2fs allocates new blocks and mapped buffer_head, it needs to set buffer_new
for the bh_result.

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 handling of buffer_new flag in get_block.
If f2fs allocates new blocks and mapped buffer_head, it needs to set buffer_new
for the bh_result.

Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>f2fs: merge {invalidate,release}page for meta/node/data pages</title>
<updated>2015-02-12T01:04:44+00:00</updated>
<author>
<name>Chao Yu</name>
<email>chao2.yu@samsung.com</email>
</author>
<published>2015-02-05T09:44:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=487261f39bcd8983f55c611e299f70f34659674b'/>
<id>487261f39bcd8983f55c611e299f70f34659674b</id>
<content type='text'>
This patch merges -&gt;{invalidate,release}page function for meta/node/data pages.

After this, duplication of codes could be removed.

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>
This patch merges -&gt;{invalidate,release}page function for meta/node/data pages.

After this, duplication of codes could be removed.

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: keep PagePrivate during releasepage</title>
<updated>2015-02-12T01:04:42+00:00</updated>
<author>
<name>Jaegeuk Kim</name>
<email>jaegeuk@kernel.org</email>
</author>
<published>2015-01-30T19:39:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=f68daeebba5a697f31f64c07b8693fa678981819'/>
<id>f68daeebba5a697f31f64c07b8693fa678981819</id>
<content type='text'>
If PagePrivate is removed by releasepage, f2fs loses counting dirty pages.

e.g., try_to_release_page will not release page when the page is dirty,
but our releasepage removes PagePrivate.

    [&lt;ffffffff81188d75&gt;] try_to_release_page+0x35/0x50
    [&lt;ffffffff811996f9&gt;] invalidate_inode_pages2_range+0x2f9/0x3b0
    [&lt;ffffffffa02a7f54&gt;] ? truncate_blocks+0x384/0x4d0 [f2fs]
    [&lt;ffffffffa02b7583&gt;] ? f2fs_direct_IO+0x283/0x290 [f2fs]
    [&lt;ffffffffa02b7fb0&gt;] ? get_data_block_fiemap+0x20/0x20 [f2fs]
    [&lt;ffffffff8118aa53&gt;] generic_file_direct_write+0x163/0x170
    [&lt;ffffffff8118ad06&gt;] __generic_file_write_iter+0x2a6/0x350
    [&lt;ffffffff8118adef&gt;] generic_file_write_iter+0x3f/0xb0
    [&lt;ffffffff81203081&gt;] new_sync_write+0x81/0xb0
    [&lt;ffffffff81203837&gt;] vfs_write+0xb7/0x1f0
    [&lt;ffffffff81204459&gt;] SyS_write+0x49/0xb0
    [&lt;ffffffff817c286d&gt;] system_call_fastpath+0x16/0x1b

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>
If PagePrivate is removed by releasepage, f2fs loses counting dirty pages.

e.g., try_to_release_page will not release page when the page is dirty,
but our releasepage removes PagePrivate.

    [&lt;ffffffff81188d75&gt;] try_to_release_page+0x35/0x50
    [&lt;ffffffff811996f9&gt;] invalidate_inode_pages2_range+0x2f9/0x3b0
    [&lt;ffffffffa02a7f54&gt;] ? truncate_blocks+0x384/0x4d0 [f2fs]
    [&lt;ffffffffa02b7583&gt;] ? f2fs_direct_IO+0x283/0x290 [f2fs]
    [&lt;ffffffffa02b7fb0&gt;] ? get_data_block_fiemap+0x20/0x20 [f2fs]
    [&lt;ffffffff8118aa53&gt;] generic_file_direct_write+0x163/0x170
    [&lt;ffffffff8118ad06&gt;] __generic_file_write_iter+0x2a6/0x350
    [&lt;ffffffff8118adef&gt;] generic_file_write_iter+0x3f/0xb0
    [&lt;ffffffff81203081&gt;] new_sync_write+0x81/0xb0
    [&lt;ffffffff81203837&gt;] vfs_write+0xb7/0x1f0
    [&lt;ffffffff81204459&gt;] SyS_write+0x49/0xb0
    [&lt;ffffffff817c286d&gt;] system_call_fastpath+0x16/0x1b

Reviewed-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: merge flags in struct f2fs_sb_info</title>
<updated>2015-02-12T01:04:38+00:00</updated>
<author>
<name>Chao Yu</name>
<email>chao2.yu@samsung.com</email>
</author>
<published>2015-01-28T09:48:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=caf0047e7e1e60a7ad1d655d3b81b32e2dfb6095'/>
<id>caf0047e7e1e60a7ad1d655d3b81b32e2dfb6095</id>
<content type='text'>
Currently, there are several variables with Boolean type as below:

struct f2fs_sb_info {
...
	int s_dirty;
	bool need_fsck;
	bool s_closing;
...
	bool por_doing;
...
}

For this there are some issues:
1. there are some space of f2fs_sb_info is wasted due to aligning after Boolean
   type variables by compiler.
2. if we continuously add new flag into f2fs_sb_info, structure will be messed
   up.

So in this patch, we try to:
1. switch s_dirty to Boolean type variable since it has two status 0/1.
2. merge s_dirty/need_fsck/s_closing/por_doing variables into s_flag.
3. introduce an enum type which can indicate different states of sbi.
4. use new introduced universal interfaces is_sbi_flag_set/{set,clear}_sbi_flag
   to operate flags for sbi.

After that, above issues will be fixed.

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>
Currently, there are several variables with Boolean type as below:

struct f2fs_sb_info {
...
	int s_dirty;
	bool need_fsck;
	bool s_closing;
...
	bool por_doing;
...
}

For this there are some issues:
1. there are some space of f2fs_sb_info is wasted due to aligning after Boolean
   type variables by compiler.
2. if we continuously add new flag into f2fs_sb_info, structure will be messed
   up.

So in this patch, we try to:
1. switch s_dirty to Boolean type variable since it has two status 0/1.
2. merge s_dirty/need_fsck/s_closing/por_doing variables into s_flag.
3. introduce an enum type which can indicate different states of sbi.
4. use new introduced universal interfaces is_sbi_flag_set/{set,clear}_sbi_flag
   to operate flags for sbi.

After that, above issues will be fixed.

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: fix wrong unlock_page call</title>
<updated>2015-01-10T01:02:27+00:00</updated>
<author>
<name>Jaegeuk Kim</name>
<email>jaegeuk@kernel.org</email>
</author>
<published>2015-01-07T00:00:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=df1991391f9301efbd5e46fb776bf5103d4c59f8'/>
<id>df1991391f9301efbd5e46fb776bf5103d4c59f8</id>
<content type='text'>
This patch removes wrongly called unlock_page.

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 removes wrongly called unlock_page.

Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>f2fs: align direct_io'ed data to section</title>
<updated>2015-01-10T01:02:27+00:00</updated>
<author>
<name>Jaegeuk Kim</name>
<email>jaegeuk@kernel.org</email>
</author>
<published>2015-01-06T00:02:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=38aa0889b2504bbe68e47f51cf73bf7f0a7246bd'/>
<id>38aa0889b2504bbe68e47f51cf73bf7f0a7246bd</id>
<content type='text'>
This patch aligns the start block address of a file for direct io to the f2fs's
section size.

Some flash devices manage an over 4KB-sized page as a write unit, and if the
direct_io'ed data are written but not aligned to that unit, the performance can
be degraded due to the partial page copies.

Thus, since f2fs has a section that is well aligned to FTL units, we can align
the block address to the section size so that f2fs avoids this misalignment.

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 aligns the start block address of a file for direct io to the f2fs's
section size.

Some flash devices manage an over 4KB-sized page as a write unit, and if the
direct_io'ed data are written but not aligned to that unit, the performance can
be degraded due to the partial page copies.

Thus, since f2fs has a section that is well aligned to FTL units, we can align
the block address to the section size so that f2fs avoids this misalignment.

Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>f2fs: remove uncovered code path</title>
<updated>2015-01-10T01:02:27+00:00</updated>
<author>
<name>Jaegeuk Kim</name>
<email>jaegeuk@kernel.org</email>
</author>
<published>2014-12-31T07:12:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=41ef94b35c8df8e01780b4a3362246c51f3aa79b'/>
<id>41ef94b35c8df8e01780b4a3362246c51f3aa79b</id>
<content type='text'>
This patch removes unnecessary function calls.

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 removes unnecessary function calls.

Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>f2fs: avoid potential unnecessary codes</title>
<updated>2015-01-10T01:02:26+00:00</updated>
<author>
<name>Jaegeuk Kim</name>
<email>jaegeuk@kernel.org</email>
</author>
<published>2014-12-31T07:08:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=3547ea961dd66a474c6f709c4f5e8a2472289df9'/>
<id>3547ea961dd66a474c6f709c4f5e8a2472289df9</id>
<content type='text'>
This patch relocates some operations to avoid unnecessary execution.

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 relocates some operations to avoid unnecessary execution.

Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>f2fs: clean up to remove parameter</title>
<updated>2015-01-10T01:02:26+00:00</updated>
<author>
<name>Jaegeuk Kim</name>
<email>jaegeuk@kernel.org</email>
</author>
<published>2014-12-31T06:57:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=e1509cf294cc670cda1fedd430f0ff175c42b591'/>
<id>e1509cf294cc670cda1fedd430f0ff175c42b591</id>
<content type='text'>
This patch uses dn-&gt;data_blkaddr as a parameter for the destination block
address.

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 uses dn-&gt;data_blkaddr as a parameter for the destination block
address.

Signed-off-by: Jaegeuk Kim &lt;jaegeuk@kernel.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
