<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/f2fs/gc.c, branch linux-3.14.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.14.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.14.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2014-01-14T08:45:54Z</updated>
<entry>
<title>f2fs: remove the needless parameter of f2fs_wait_on_page_writeback</title>
<updated>2014-01-14T08:45:54Z</updated>
<author>
<name>Yuan Zhong</name>
</author>
<published>2014-01-10T07:26:14Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5514f0aadddcdfaaaea697b60203f5402552eb7b'/>
<id>urn:sha1:5514f0aadddcdfaaaea697b60203f5402552eb7b</id>
<content type='text'>
"boo sync" parameter is never referenced in f2fs_wait_on_page_writeback.
We should remove this parameter.

Signed-off-by: Yuan Zhong &lt;yuan.mark.zhong@samsung.com&gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk.kim@samsung.com&gt;
</content>
</entry>
<entry>
<title>f2fs: add a sysfs entry to control max_victim_search</title>
<updated>2014-01-08T04:45:08Z</updated>
<author>
<name>Jaegeuk Kim</name>
</author>
<published>2014-01-08T04:45:08Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b1c57c1caa753cec299e62bb4272da0e85a01ef0'/>
<id>urn:sha1:b1c57c1caa753cec299e62bb4272da0e85a01ef0</id>
<content type='text'>
Previously during SSR and GC, the maximum number of retrials to find a victim
segment was hard-coded by MAX_VICTIM_SEARCH, 4096 by default.

This number makes an effect on IO locality, when SSR mode is activated, which
results in performance fluctuation on some low-end devices.

If max_victim_search = 4, the victim will be searched like below.
("D" represents a dirty segment, and "*" indicates a selected victim segment.)

 D1 D2 D3 D4 D5 D6 D7 D8 D9
[   *       ]
      [   *    ]
            [         * ]
	                [ ....]

This patch adds a sysfs entry to control the number dynamically through:
  /sys/fs/f2fs/$dev/max_victim_search

Signed-off-by: Jaegeuk Kim &lt;jaegeuk.kim@samsung.com&gt;
</content>
</entry>
<entry>
<title>f2fs: remove the rw_flag domain from f2fs_io_info</title>
<updated>2013-12-23T01:18:07Z</updated>
<author>
<name>Gu Zheng</name>
</author>
<published>2013-12-20T10:17:49Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=7e8f23081ab3a11de90d7389f2c6fd44676c8df9'/>
<id>urn:sha1:7e8f23081ab3a11de90d7389f2c6fd44676c8df9</id>
<content type='text'>
When using the f2fs_io_info in the low level, we still need to merge the
rw and rw_flag, so use the rw to hold all the io flags directly,
and remove the rw_flag field.

ps.It is based on the previous patch:
f2fs: move all the bio initialization into __bio_alloc

Signed-off-by: Gu Zheng &lt;guz.fnst@cn.fujitsu.com&gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk.kim@samsung.com&gt;
</content>
</entry>
<entry>
<title>f2fs: refactor bio-&gt;rw handling</title>
<updated>2013-12-23T01:18:06Z</updated>
<author>
<name>Jaegeuk Kim</name>
</author>
<published>2013-12-11T04:54:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=458e6197c37de53f7be0a837644daabb900c3036'/>
<id>urn:sha1:458e6197c37de53f7be0a837644daabb900c3036</id>
<content type='text'>
This patch introduces f2fs_io_info to mitigate the complex parameter list.

struct f2fs_io_info {
	enum page_type type;		/* contains DATA/NODE/META/META_FLUSH */
	int rw;				/* contains R/RS/W/WS */
	int rw_flag;			/* contains REQ_META/REQ_PRIO */
}

1. f2fs_write_data_pages
 - DATA
 - WRITE_SYNC is set when wbc-&gt;WB_SYNC_ALL.

2. sync_node_pages
 - NODE
 - WRITE_SYNC all the time

3. sync_meta_pages
 - META
 - WRITE_SYNC all the time
 - REQ_META | REQ_PRIO all the time

 ** f2fs_submit_merged_bio() handles META_FLUSH.

4. ra_nat_pages, ra_sit_pages, ra_sum_pages
 - META
 - READ_SYNC

Cc: Fan Li &lt;fanofcode.li@samsung.com&gt;
Cc: Changman Lee &lt;cm224.lee@samsung.com&gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk.kim@samsung.com&gt;
</content>
</entry>
<entry>
<title>f2fs: merge pages with the same sync_mode flag</title>
<updated>2013-12-23T01:18:06Z</updated>
<author>
<name>Fan Li</name>
</author>
<published>2013-12-09T08:09:00Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=63a0b7cb33d85aeb0df39b984c08e234db4925d1'/>
<id>urn:sha1:63a0b7cb33d85aeb0df39b984c08e234db4925d1</id>
<content type='text'>
Previously f2fs submits most of write requests using WRITE_SYNC, but f2fs_write_data_pages
submits last write requests by sync_mode flags callers pass.

This causes a performance problem since continuous pages with different sync flags
can't be merged in cfq IO scheduler(thanks yu chao for pointing it out), and synchronous
requests often take more time.

This patch makes the following modifies to DATA writebacks:

1. every page will be written back using the sync mode caller pass.
2. only pages with the same sync mode can be merged in one bio request.

These changes are restricted to DATA pages.Other types of writebacks are modified
To remain synchronous.

In my test with tiotest, f2fs sequence write performance is improved by about 7%-10% ,
and this patch has no obvious impact on other performance tests.

Signed-off-by: Fan Li &lt;fanofcode.li@samsung.com&gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk.kim@samsung.com&gt;
</content>
</entry>
<entry>
<title>f2fs: add unlikely() macro for compiler more aggressively</title>
<updated>2013-12-23T01:18:06Z</updated>
<author>
<name>Jaegeuk Kim</name>
</author>
<published>2013-12-06T06:00:58Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6bacf52fb58aeb3e89d9a62970b85a5570aa8ace'/>
<id>urn:sha1:6bacf52fb58aeb3e89d9a62970b85a5570aa8ace</id>
<content type='text'>
This patch adds unlikely() macro into the most of codes.
The basic rule is to add that when:
- checking unusual errors,
- checking page mappings,
- and the other unlikely conditions.

Change log from v1:
 - Don't add unlikely for the NULL test and error test: advised by Andi Kleen.

Cc: Chao Yu &lt;chao2.yu@samsung.com&gt;
Cc: Andi Kleen &lt;andi@firstfloor.org&gt;
Reviewed-by: Chao Yu &lt;chao2.yu@samsung.com&gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk.kim@samsung.com&gt;
</content>
</entry>
<entry>
<title>f2fs: refactor bio-related operations</title>
<updated>2013-12-23T01:18:05Z</updated>
<author>
<name>Jaegeuk Kim</name>
</author>
<published>2013-11-30T03:51:14Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=93dfe2ac516250755f7d5edd438b0ce67c0e3aa6'/>
<id>urn:sha1:93dfe2ac516250755f7d5edd438b0ce67c0e3aa6</id>
<content type='text'>
This patch integrates redundant bio operations on read and write IOs.

1. Move bio-related codes to the top of data.c.
2. Replace f2fs_submit_bio with f2fs_submit_merged_bio, which handles read
   bios additionally.
3. Introduce __submit_merged_bio to submit the merged bio.
4. Change f2fs_readpage to f2fs_submit_page_bio.
5. Introduce f2fs_submit_page_mbio to integrate previous submit_read_page and
   submit_write_page.

Reviewed-by: Gu Zheng &lt;guz.fnst@cn.fujitsu.com&gt;
Reviewed-by: Chao Yu &lt;chao2.yu@samsung.com &gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk.kim@samsung.com&gt;
</content>
</entry>
<entry>
<title>f2fs: remove unnecessary condition checks</title>
<updated>2013-12-23T01:18:04Z</updated>
<author>
<name>Jaegeuk Kim</name>
</author>
<published>2013-11-28T03:55:13Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=031fa8cc9ba45c14f440b9cf71d09950fbe5eb9b'/>
<id>urn:sha1:031fa8cc9ba45c14f440b9cf71d09950fbe5eb9b</id>
<content type='text'>
This patch removes the unnecessary condition checks on:

fs/f2fs/gc.c:667 do_garbage_collect() warn: 'sum_page' isn't an ERR_PTR
fs/f2fs/f2fs.h:795 f2fs_put_page() warn: 'page' isn't an ERR_PTR

Reported-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk.kim@samsung.com&gt;
</content>
</entry>
<entry>
<title>f2fs: introduce f2fs_balance_fs_bg for some background jobs</title>
<updated>2013-10-25T07:54:38Z</updated>
<author>
<name>Jaegeuk Kim</name>
</author>
<published>2013-10-24T05:19:18Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4660f9c0fe484353b17a4b9d1cc2b036fa895f76'/>
<id>urn:sha1:4660f9c0fe484353b17a4b9d1cc2b036fa895f76</id>
<content type='text'>
This patch merges some background jobs into this new function.

Signed-off-by: Changman Lee &lt;cm224.lee@samsung.com&gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk.kim@samsung.com&gt;
</content>
</entry>
<entry>
<title>f2fs: reclaim prefree segments periodically</title>
<updated>2013-10-25T07:54:37Z</updated>
<author>
<name>Jaegeuk Kim</name>
</author>
<published>2013-10-24T04:31:34Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=81eb8d6e2869b119d4a7b8c02091c3779733a3ac'/>
<id>urn:sha1:81eb8d6e2869b119d4a7b8c02091c3779733a3ac</id>
<content type='text'>
Previously, f2fs postpones reclaiming prefree segments into free segments
as much as possible.
However, if user writes and deletes a bunch of data without any sync or fsync
calls, some flash storages can suffer from garbage collections.

So, this patch adds the reclaiming codes to f2fs_write_node_pages and background
GC thread.

If there are a lot of prefree segments, let's do checkpoint so that f2fs
submits discard commands for the prefree regions to the flash storage.

Signed-off-by: Changman Lee &lt;cm224.lee@samsung.com&gt;
Signed-off-by: Jaegeuk Kim &lt;jaegeuk.kim@samsung.com&gt;
</content>
</entry>
</feed>
