summaryrefslogtreecommitdiffstats
path: root/fs/f2fs/f2fs.h
diff options
context:
space:
mode:
authorJaegeuk Kim <jaegeuk@kernel.org>2017-01-09 20:32:07 -0800
committerJaegeuk Kim <jaegeuk@kernel.org>2017-02-22 20:24:45 -0800
commit1546996348b33dc44dff829bc86fea8a8536164d (patch)
tree74eaafcc5d28e0ae0b96deec0244e9f3ce382c29 /fs/f2fs/f2fs.h
parent0b54fb8458199dbed409abb06933c27439ea0911 (diff)
downloadop-kernel-dev-1546996348b33dc44dff829bc86fea8a8536164d.zip
op-kernel-dev-1546996348b33dc44dff829bc86fea8a8536164d.tar.gz
f2fs: add a kernel thread to issue discard commands asynchronously
This patch adds a kernel thread to issue discard commands. It proposes three states, D_PREP, D_SUBMIT, and D_DONE to identify current bio status. Reviewed-by: Chao Yu <yuchao0@huawei.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/f2fs/f2fs.h')
-rw-r--r--fs/f2fs/f2fs.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index 90eb2b3..3a57d97 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -133,6 +133,8 @@ enum {
(SM_I(sbi)->trim_sections * (sbi)->segs_per_sec)
#define BATCHED_TRIM_BLOCKS(sbi) \
(BATCHED_TRIM_SEGMENTS(sbi) << (sbi)->log_blocks_per_seg)
+
+#define DISCARD_ISSUE_RATE 8
#define DEF_CP_INTERVAL 60 /* 60 secs */
#define DEF_IDLE_INTERVAL 5 /* 5 secs */
@@ -181,18 +183,28 @@ struct discard_entry {
int len; /* # of consecutive blocks of the discard */
};
+enum {
+ D_PREP,
+ D_SUBMIT,
+ D_DONE,
+};
+
struct discard_cmd {
struct list_head list; /* command list */
struct completion wait; /* compleation */
block_t lstart; /* logical start address */
block_t len; /* length */
struct bio *bio; /* bio */
+ int state; /* state */
};
struct discard_cmd_control {
+ struct task_struct *f2fs_issue_discard; /* discard thread */
struct list_head discard_entry_list; /* 4KB discard entry list */
int nr_discards; /* # of discards in the list */
struct list_head discard_cmd_list; /* discard cmd list */
+ wait_queue_head_t discard_wait_queue; /* waiting queue for wake-up */
+ struct mutex cmd_lock;
int max_discards; /* max. discards to be issued */
};
OpenPOWER on IntegriCloud