[GIT PULL] f2fs update for 4.11

From: Jaegeuk Kim
Date: Wed Mar 01 2017 - 01:24:14 EST

Hi Linus,

Could you please consider the below pull request for v4.11?


The following changes since commit 53cd1ad1a68fd10f677445e04ed63aa9ce39b36b:

Merge branch 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux (2017-01-28 15:09:23 -0800)

are available in the git repository at:

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

for you to fetch changes up to 900f736251c81886f3064c9d489c85eddee921b7:

f2fs: avoid to flush nat journal entries (2017-02-28 09:57:13 -0800)


This round introduces several interesting features such as on-disk NAT bitmaps,
IO alignment, and a discard thread. And it includes a couple of major bug fixes
as below.

== Enhancement ==
- introduce on-disk bitmaps to avoid scanning NAT blocks when getting free nids
- support IO alignment to prepare open-channel SSD integration in future
- introduce a discard thread to avoid long latency during checkpoint and fstrim
- use SSR for warm node and enable inline_xattr by default
- introduce in-memory bitmaps to check FS consistency for debugging
- improve write_begin by avoiding needless read IO

== Bug fix ==
- fix broken zone_reset behavior for SMR drive
- fix wrong victim selection policy during GC
- fix missing behavior when preparing discard commands
- fix bugs in atomic write support and fiemap
- workaround to handle multiple f2fs_add_link calls having same name

And it includes a bunch of clean-up patches as well.

Bhumika Goyal (1):
f2fs: super: constify fscrypt_operations structure

Chao Yu (19):
f2fs: don't cache nat entry if out of memory
f2fs: clean up with list_{first, last}_entry
f2fs: introduce FI_ATOMIC_COMMIT
f2fs: check in-memory block bitmap
f2fs: check in-memory nat version bitmap
f2fs: check in-memory sit version bitmap
f2fs: enhance lookup xattr
f2fs: fix to avoid overflow when left shifting page offset
f2fs: fix null pointer dereference when issuing flush in ->fsync
f2fs: change recovery policy of xattr node block
f2fs: introduce noinline_xattr mount option
f2fs: enable inline_xattr by default
f2fs: show simple call stack in fault injection message
f2fs: select target segment with closer temperature in SSR mode
f2fs: kill __is_extent_same
f2fs: introduce free nid bitmap
f2fs: fix to update F2FS_{CP_}WB_DATA count correctly
f2fs: fix memory leak of write_io_dummy mempool during umount
f2fs: fix to enlarge size of write_io_dummy mempool

Dan Carpenter (1):
f2fs: remove unneeded condition

DongOh Shin (2):
f2fs: fix 3 coding style errors in f2fs.h
f2fs: fix 446 coding style warnings in f2fs.h

Geliang Tang (1):
f2fs: use rb_entry_safe

Hou Pengyang (7):
f2fs: add ovp valid_blocks check for bg gc victim to fg_gc
f2fs: node segment is prior to data segment selected victim
f2fs: init local extent_info to avoid stale stack info in tp
f2fs: remove unsafe bitmap checking
f2fs: avoid bggc->fggc when enough free segments are avaliable after cp
f2fs: add f2fs_drop_inode tracepoint
f2fs: fix a plint compile warning

Jaegeuk Kim (44):
f2fs: reassign new segment for mode=lfs
f2fs: fix wrong tracepoints for op and op_flags
f2fs: add submit_bio tracepoint
f2fs: support IO alignment for DATA and NODE writes
f2fs: get io size bit from mount option
f2fs: show the max number of atomic operations
f2fs: don't allow encrypted operations without keys
f2fs: drop exist_data for inline_data when truncated to 0
f2fs: relax async discard commands more
f2fs: avoid needless checkpoint in f2fs_trim_fs
f2fs: return fs_trim if there is no candidate
f2fs: clean up flush/discard command namings
f2fs: reorganize stat information
f2fs: factor out discard command info into discard_cmd_control
f2fs: add a kernel thread to issue discard commands asynchronously
f2fs: show # of on-going flush and discard bios
f2fs: do not preallocate blocks which has wrong buffer
f2fs: declare missing static function
f2fs: show # of APPEND and UPDATE inodes
f2fs: move flush tracepoint
f2fs: move write_node_page above fsync_node_pages
f2fs: avoid out-of-order execution of atomic writes
f2fs: call internal __write_data_page directly
f2fs: check io submission more precisely
f2fs: check last page index in cached bio to decide submission
f2fs: remove preflush for nobarrier case
f2fs: show checkpoint version at mount time
f2fs: remove build_free_nids() during checkpoint
f2fs: avoid reading NAT page by get_node_info
f2fs: use SSR for warm node as well
f2fs: show actual device info in tracepoints
f2fs: fix multiple f2fs_add_link() calls having same name
f2fs: trace victim's cost selectecd by f2fs_gc
f2fs: do not wait for writeback in write_begin
f2fs: do SSR in higher priority
f2fs: find data segments across all the types
f2fs: do SSR for node segments more aggresively
f2fs: avoid very large discard command
f2fs: much larger batched trim_fs job
f2fs: wait for discard completion after submission
f2fs: check discard alignment only for SEQWRITE zones
f2fs: add bitmaps for empty or full NAT blocks
f2fs: avoid to issue redundant discard commands
f2fs: avoid to flush nat journal entries

Kaixu Xia (1):
f2fs: show the fault injection mount option

Kinglong Mee (6):
f2fs: avoid m_flags overlay when allocating more data blocks
f2fs: Don't update the xattr data that same as the exist
f2fs: drop the duplicate pval in f2fs_getxattr
f2fs: update the comment of default nr_pages to skipping
f2fs: new helper cur_cp_crc() getting crc in f2fs_checkpoint
f2fs: use MAX_FREE_NIDS for the free nids target

Masanari Iida (1):
Doc: f2fs: Fix typo in Documentation/filesystems/f2fs.txt

Masato Suzuki (1):
f2fs: Fix zoned block device support

Tiezhu Yang (1):
f2fs: fix a typo in f2fs.txt

Wei Fang (1):
f2fs: fix a dead loop in f2fs_fiemap()

Yunlei He (8):
f2fs: remove unused values in recover_fsync_data
f2fs: fix a problem of using memory after free
f2fs: add a case of no need to read a page in write begin
f2fs: fix a missing discard prefree segments
f2fs: replace __get_victim by dirty_segments in FG_GC
f2fs: replace rw semaphore extent_tree_lock with mutex lock
f2fs: no need lock_op in f2fs_write_inline_data
f2fs: remove redundant set_page_dirty()

Yunlong Song (3):
f2fs: put allocate_segment after refresh_sit_entry
f2fs: do SSR for data when there is enough free space
f2fs: remove unnecessary condition check for write_checkpoint in f2fs_gc

Documentation/filesystems/f2fs.txt | 7 +-
fs/f2fs/checkpoint.c | 70 ++--
fs/f2fs/data.c | 191 ++++++++---
fs/f2fs/debug.c | 31 +-
fs/f2fs/dir.c | 38 ++-
fs/f2fs/extent_cache.c | 52 ++-
fs/f2fs/f2fs.h | 644 ++++++++++++++++++++++---------------
fs/f2fs/file.c | 36 ++-
fs/f2fs/gc.c | 79 +++--
fs/f2fs/inode.c | 4 +-
fs/f2fs/namei.c | 18 +-
fs/f2fs/node.c | 560 +++++++++++++++++++++++++-------
fs/f2fs/node.h | 33 +-
fs/f2fs/recovery.c | 17 +-
fs/f2fs/segment.c | 501 +++++++++++++++++++++--------
fs/f2fs/segment.h | 40 ++-
fs/f2fs/super.c | 142 ++++++--
fs/f2fs/xattr.c | 151 +++++++--
fs/f2fs/xattr.h | 7 +-
include/linux/f2fs_fs.h | 8 +
include/trace/events/f2fs.h | 151 +++++----
21 files changed, 1968 insertions(+), 812 deletions(-)