]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
f2fs: enable small discard by default
authorChao Yu <yuchao0@huawei.com>
Mon, 24 Apr 2017 16:21:35 +0000 (00:21 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Tue, 25 Apr 2017 21:18:45 +0000 (14:18 -0700)
This patch start to enable 4K granularity small discard by default
when realtime discard is on, so, in seriously fragmented space,
small size discard can be issued in time to avoid useless storage
space occupying of invalid filesystem's data, then performance of
flash storage can be recovered.

Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/f2fs.h
fs/f2fs/segment.c

index b590c0a6cfa776fdba543f3353aa757b5e8b2a48..9228a36ded4112139896fc39828169a2f998bbfc 100644 (file)
@@ -230,8 +230,8 @@ struct discard_cmd_control {
        struct list_head wait_list;             /* store on-flushing entries */
        wait_queue_head_t discard_wait_queue;   /* waiting queue for wake-up */
        struct mutex cmd_lock;
-       int nr_discards;                        /* # of discards in the list */
-       int max_discards;                       /* max. discards to be issued */
+       unsigned int nr_discards;               /* # of discards in the list */
+       unsigned int max_discards;              /* max. discards to be issued */
        unsigned int undiscard_blks;            /* # of undiscard blocks */
        atomic_t issued_discard;                /* # of issued discard */
        atomic_t issing_discard;                /* # of issing discard */
index b27ae5f6a87f1f2ee857f1026dbdaa9738c11013..7ded7da5b7cbea71be9c2eebd493a00e3a36ede5 100644 (file)
@@ -1362,7 +1362,7 @@ static int create_discard_cmd_control(struct f2fs_sb_info *sbi)
        atomic_set(&dcc->issing_discard, 0);
        atomic_set(&dcc->discard_cmd_cnt, 0);
        dcc->nr_discards = 0;
-       dcc->max_discards = 0;
+       dcc->max_discards = MAIN_SEGS(sbi) << sbi->log_blocks_per_seg;
        dcc->undiscard_blks = 0;
        dcc->root = RB_ROOT;