f2fs: fix to search whole dirty segmap when get_victim
authorChao Yu <chao2.yu@samsung.com>
Mon, 15 Sep 2014 10:05:44 +0000 (18:05 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Tue, 23 Sep 2014 18:10:23 +0000 (11:10 -0700)
commit210f41bc048263d572515e1e0edc28d362ce673e
tree63f13e141529262c19db28156fc46933f9a24ccf
parent26666c8a4366debae30ae37d0688b2bec92d196a
f2fs: fix to search whole dirty segmap when get_victim

In ->get_victim we get max_search value from dirty_i->nr_dirty without
protection of seglist_lock, after that, nr_dirty can be increased/decreased
before we hold seglist_lock lock.
Then in main loop we attempt to traverse all dirty section one time to find
victim section, but it's not accurate to use max_search as the total loop count,
because we might lose checking several sections or check sections redundantly
for the case of nr_dirty are increased or decreased previously.

Signed-off-by: Chao Yu <chao2.yu@samsung.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/gc.c