[GIT PULL] f2fs for 4.8

From: Jaegeuk Kim
Date: Wed Jul 27 2016 - 00:08:19 EST

Hi Linus,

Could you please consider this pull request?


The following changes since commit 4340fa55298d17049e71c7a34e04647379c269f3:

Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm (2016-06-02 15:08:06 -0700)

are available in the git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git tags/for-f2fs-4.8

for you to fetch changes up to 5302fb000def84100740a84d7f176c0e167b2141:

f2fs: clean up coding style and redundancy (2016-07-25 12:58:12 -0700)

The major change in this version is mitigating cpu overheads on write paths by
replacing redundant inode page updates with mark_inode_dirty calls. And we tried
to reduce lock contentions as well to improve filesystem scalability.
Other feature is setting F2FS automatically when detecting host-managed SMR.

= Enhancement =
- ioctl to move a range of data between files
- inject orphan inode errors
- avoid flush commands congestion
- support lazytime

= Bug fixes =
- return proper results for some dentry operations
- fix deadlock in add_link failure
- disable extent_cache for fcollapse/finsert

Chao Yu (9):
f2fs: fix to avoid reading out encrypted data in page cache
f2fs: fix to detect truncation prior rather than EIO during read
f2fs: fix to redirty page if fail to gc data page
f2fs: add nodiscard mount option
f2fs: fix incorrect f_bfree calculation in ->statfs
f2fs: fix to avoid redundant discard during fstrim
f2fs: fix to avoid data update racing between GC and DIO
f2fs: reset default idle interval value
f2fs: fix to report error number of f2fs_find_entry

Jaegeuk Kim (54):
Revert "f2fs: no need inc dirty pages under inode lock"
f2fs: use inode pointer for {set, clear}_inode_flag
f2fs: introduce f2fs_i_size_write with mark_inode_dirty_sync
f2fs: introduce f2fs_i_blocks_write with mark_inode_dirty_sync
f2fs: introduce f2fs_i_links_write with mark_inode_dirty_sync
f2fs: call mark_inode_dirty_sync for i_field changes
f2fs: flush inode metadata when checkpoint is doing
f2fs: remove syncing inode page in all the cases
f2fs: avoid unnecessary updating inode during fsync
f2fs: add lazytime mount option
f2fs: detect congestion of flush command issues
f2fs: set flush_merge by default
f2fs: remove writepages lock
f2fs: propagate error given by f2fs_find_entry
f2fs: inject to produce some orphan inodes
f2fs: do not skip writing data pages
f2fs: remove two steps to flush dirty data pages
f2fs: return error of f2fs_lookup
f2fs: handle writepage correctly
f2fs: remove deprecated parameter
f2fs: avoid wrong count on dirty inodes
f2fs: remove obsolete parameter in f2fs_truncate
f2fs: avoid data race between FI_DIRTY_INODE flag and update_inode
f2fs: fix wrong percentage
f2fs: control not to exceed # of cached nat entries
f2fs: set mapping error for EIO
f2fs: avoid reverse IO order for NODE and DATA
f2fs: drop any block plugging
f2fs: skip clean segment for gc
f2fs: introduce mode=lfs mount option
f2fs: fix deadlock in add_link failure
f2fs: report error for f2fs_parent_dir
f2fs: call update_inode_page for orphan inodes
f2fs: detect host-managed SMR by feature flag
f2fs: produce more nids and reduce readahead nats
f2fs: avoid writing node/metapages during writes
f2fs: avoid latency-critical readahead of node pages
f2fs: introduce f2fs_set_page_dirty_nobuffer
f2fs: call SetPageUptodate if needed
f2fs: shrink critical region in spin_lock
f2fs: skip to check the block address of node page
f2fs: use percpu_rw_semaphore
f2fs: move i_size_write in f2fs_write_end
f2fs: avoid mark_inode_dirty
f2fs: fix ERR_PTR returned by bio
f2fs: refactor __exchange_data_block for speed up
f2fs: disable extent_cache for fcollapse/finsert inodes
f2fs: add maximum prefree segments
f2fs: use blk_plug in all the possible paths
f2fs: avoid memory allocation failure due to a long length
f2fs: support an ioctl to move a range of data blocks
f2fs: avoid data race when deciding checkpoin in f2fs_sync_file
f2fs: handle error case with f2fs_bug_on
f2fs: clean up coding style and redundancy

Sheng Yong (1):
f2fs: find parent dentry correctly

Tiezhu Yang (1):
f2fs: remove unnecessary goto statement

Yunlei He (2):
f2fs: avoid mismatching block range for discard
f2fs: get victim segment again after new cp

Yunlong Song (1):
f2fs: return the errno to the caller to avoid using a wrong page

Documentation/filesystems/f2fs.txt | 7 +-
fs/f2fs/acl.c | 9 +-
fs/f2fs/acl.h | 2 +-
fs/f2fs/checkpoint.c | 80 ++++--
fs/f2fs/data.c | 307 ++++++++++++-----------
fs/f2fs/debug.c | 5 +-
fs/f2fs/dir.c | 123 ++++-----
fs/f2fs/extent_cache.c | 50 ++--
fs/f2fs/f2fs.h | 286 +++++++++++++++------
fs/f2fs/file.c | 499 +++++++++++++++++++++++++++----------
fs/f2fs/gc.c | 52 +++-
fs/f2fs/inline.c | 92 +++----
fs/f2fs/inode.c | 53 ++--
fs/f2fs/namei.c | 147 ++++++-----
fs/f2fs/node.c | 144 ++++++-----
fs/f2fs/node.h | 14 +-
fs/f2fs/recovery.c | 23 +-
fs/f2fs/segment.c | 59 ++++-
fs/f2fs/segment.h | 22 +-
fs/f2fs/shrinker.c | 5 +-
fs/f2fs/super.c | 134 +++++++++-
fs/f2fs/xattr.c | 20 +-
22 files changed, 1385 insertions(+), 748 deletions(-)