android_kernel_samsung_msm8976/fs/f2fs
Chao Yu 104a44ed24 f2fs: split journal cache from curseg cache
In curseg cache, f2fs caches two different parts:
 - datas of current summay block, i.e. summary entries, footer info.
 - journal info, i.e. sparse nat/sit entries or io stat info.

With this approach, 1) it may cause higher lock contention when we access
or update both of the parts of cache since we use the same mutex lock
curseg_mutex to protect the cache. 2) current summary block with last
journal info will be writebacked into device as a normal summary block
when flushing, however, we treat journal info as valid one only in current
summary, so most normal summary blocks contain junk journal data, it wastes
remaining space of summary block.

So, in order to fix above issues, we split curseg cache into two parts:
a) current summary block, protected by original mutex lock curseg_mutex
b) journal cache, protected by newly introduced r/w semaphore journal_rwsem

When loading curseg cache during ->mount, we store summary info and
journal info into different caches; When doing checkpoint, we combine
datas of two cache into current summary block for persisting.

Signed-off-by: Chao Yu <chao2.yu@samsung.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2016-03-01 16:58:52 -08:00
..
acl.c f2fs: catch up to v4.4-rc1 2015-11-29 00:05:40 -08:00
acl.h f2fs: catch up to v4.4-rc1 2015-11-29 00:05:40 -08:00
checkpoint.c f2fs: split journal cache from curseg cache 2016-03-01 16:58:52 -08:00
crypto.c f2fs crypto: f2fs_page_crypto() doesn't need a encryption context 2016-03-01 16:58:44 -08:00
crypto_fname.c f2fs crypto: avoid unneeded memory allocation when {en/de}crypting symlink 2016-03-01 16:58:50 -08:00
crypto_key.c f2fs crypto: add missing locking for keyring_key access 2016-03-01 16:58:45 -08:00
crypto_policy.c f2fs crypto: handle unexpected lack of encryption keys 2016-03-01 16:58:49 -08:00
data.c f2fs: support revoking atomic written pages 2016-03-01 16:58:48 -08:00
debug.c f2fs: monitor the number of background checkpoint 2016-01-12 17:43:56 -08:00
dir.c f2fs crypto: make sure the encryption info is initialized on opendir(2) 2016-03-01 16:58:49 -08:00
extent_cache.c f2fs: remove unneeded pointer conversion 2016-03-01 11:55:17 -08:00
f2fs.h f2fs: introduce f2fs_journal struct to wrap journal info 2016-03-01 16:58:50 -08:00
f2fs_crypto.h f2fs: catch up to v4.4-rc1 2015-11-29 00:05:40 -08:00
file.c f2fs crypto: handle unexpected lack of encryption keys 2016-03-01 16:58:49 -08:00
gc.c f2fs: remove unneeded pointer conversion 2016-03-01 11:55:17 -08:00
gc.h f2fs: detect idle time depending on user behavior 2016-01-12 17:43:36 -08:00
hash.c f2fs: catch up to v4.4-rc1 2015-11-29 00:05:40 -08:00
inline.c f2fs: delete unnecessary wait for page writeback 2016-03-01 11:55:10 -08:00
inode.c f2fs: split drop_inmem_pages from commit_inmem_pages 2016-03-01 16:58:47 -08:00
Kconfig f2fs: catch up to v4.4-rc1 2015-11-29 00:05:40 -08:00
Makefile f2fs: catch up to v4.4-rc1 2015-11-29 00:05:40 -08:00
namei.c f2fs crypto: avoid unneeded memory allocation when {en/de}crypting symlink 2016-03-01 16:58:50 -08:00
node.c f2fs: split journal cache from curseg cache 2016-03-01 16:58:52 -08:00
node.h f2fs: use wait_for_stable_page to avoid contention 2016-03-01 11:55:09 -08:00
recovery.c f2fs: support revoking atomic written pages 2016-03-01 16:58:48 -08:00
segment.c f2fs: split journal cache from curseg cache 2016-03-01 16:58:52 -08:00
segment.h f2fs: split journal cache from curseg cache 2016-03-01 16:58:52 -08:00
shrinker.c f2fs: speed up shrinking extent tree entries 2016-01-07 19:15:11 -08:00
super.c f2fs: introduce f2fs_journal struct to wrap journal info 2016-03-01 16:58:50 -08:00
trace.c f2fs: catch up to v4.4-rc1 2015-11-29 00:05:40 -08:00
trace.h f2fs: catch up to v4.4-rc1 2015-11-29 00:05:40 -08:00
xattr.c f2fs: use wait_for_stable_page to avoid contention 2016-03-01 11:55:09 -08:00
xattr.h f2fs: catch up to v4.4-rc1 2015-11-29 00:05:40 -08:00