1
0
Fork 0
alistair23-linux/fs/f2fs
Chao Yu 969d1b180d f2fs: introduce discard_granularity sysfs entry
Commit d618ebaf0a ("f2fs: enable small discard by default") enables
f2fs to issue 4K size discard in real-time discard mode. However, issuing
smaller discard may cost more lifetime but releasing less free space in
flash device. Since f2fs has ability of separating hot/cold data and
garbage collection, we can expect that small-sized invalid region would
expand soon with OPU, deletion or garbage collection on valid datas, so
it's better to delay or skip issuing smaller size discards, it could help
to reduce overmuch consumption of IO bandwidth and lifetime of flash
storage.

This patch makes f2fs selectng 64K size as its default minimal
granularity, and issue discard with the size which is not smaller than
minimal granularity. Also it exposes discard granularity as sysfs entry
for configuration in different scenario.

Jaegeuk Kim:
 We must issue all the accumulated discard commands when fstrim is called.
 So, I've added pend_list_tag[] to indicate whether we should issue the
 commands or not. If tag sets P_ACTIVE or P_TRIM, we have to issue them.
 P_TRIM is set once at a time, given fstrim trigger.
 In addition, issue_discard_thread is calling too much due to the number of
 discard commands remaining in the pending list. I added a timer to control
 it likewise gc_thread.

Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2017-08-21 15:55:07 -07:00
..
Kconfig f2fs: add mount option to select fault injection ratio 2016-05-07 10:32:22 -07:00
Makefile f2fs: move sysfs code from super.c to fs/f2fs/sysfs.c 2017-07-04 02:11:45 -07:00
acl.c f2fs: preserve i_mode if __f2fs_set_acl() fails 2017-07-28 17:48:54 -07:00
acl.h f2fs: remove dead code f2fs_check_acl 2016-09-14 16:52:36 -07:00
checkpoint.c f2fs: support journalled quota 2017-08-21 15:54:48 -07:00
data.c f2fs: merge equivalent flags F2FS_GET_BLOCK_[READ|DIO] 2017-08-21 15:55:02 -07:00
debug.c f2fs: show available_nids in f2fs/status 2017-05-03 10:04:57 -07:00
dir.c f2fs: do not set LOST_PINO for newly created dir 2017-07-07 10:34:45 -07:00
extent_cache.c f2fs: fix a bug caused by NULL extent tree 2017-05-23 21:07:18 -07:00
f2fs.h f2fs: introduce discard_granularity sysfs entry 2017-08-21 15:55:07 -07:00
file.c f2fs: merge equivalent flags F2FS_GET_BLOCK_[READ|DIO] 2017-08-21 15:55:02 -07:00
gc.c f2fs: add tracepoint for f2fs_gc 2017-08-21 15:55:05 -07:00
gc.h f2fs: fix potential overflow when adjusting GC cycle 2017-08-15 10:40:14 -07:00
hash.c f2fs: check entire encrypted bigname when finding a dentry 2017-05-04 11:44:35 -04:00
inline.c f2fs: add app/fs io stat 2017-08-09 21:43:58 -07:00
inode.c f2fs: support inode checksum 2017-08-03 19:09:26 -07:00
namei.c f2fs: support project quota 2017-07-31 16:48:32 -07:00
node.c f2fs: add app/fs io stat 2017-08-09 21:43:58 -07:00
node.h f2fs: simplify the way of calulating next nat address 2017-07-04 02:11:34 -07:00
recovery.c f2fs: check hot_data for roll-forward recovery 2017-08-21 15:55:06 -07:00
segment.c f2fs: introduce discard_granularity sysfs entry 2017-08-21 15:55:07 -07:00
segment.h f2fs: remove unused function overprovision_sections 2017-08-21 15:55:07 -07:00
shrinker.c f2fs: avoid casted negative value as shrink count 2016-11-23 12:11:03 -08:00
super.c f2fs: support journalled quota 2017-08-21 15:54:48 -07:00
sysfs.c f2fs: introduce discard_granularity sysfs entry 2017-08-21 15:55:07 -07:00
trace.c f2fs: use set_page_private marcro in f2fs_trace_pid 2017-03-24 15:10:49 -04:00
trace.h f2fs: add sbi and page pointer in f2fs_io_info 2015-05-28 15:41:32 -07:00
xattr.c f2fs: remove unused input parameter 2017-07-26 19:34:30 -07:00
xattr.h f2fs: guard macro variables with braces 2017-04-10 19:48:10 -07:00