lkml.org 
[lkml]   [2016]   [Sep]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5/6] f2fs: support IO error injection
    Date
    From: Chao Yu <yuchao0@huawei.com>

    This patch adds to support IO error injection for testing IO error
    tolerance of f2fs.

    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    ---
    fs/f2fs/data.c | 5 +++++
    fs/f2fs/f2fs.h | 3 +++
    fs/f2fs/super.c | 1 +
    3 files changed, 9 insertions(+)

    diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
    index 120a995..251cc33 100644
    --- a/fs/f2fs/data.c
    +++ b/fs/f2fs/data.c
    @@ -34,6 +34,11 @@ static void f2fs_read_end_io(struct bio *bio)
    struct bio_vec *bvec;
    int i;

    +#ifdef CONFIG_F2FS_FAULT_INJECTION
    + if (time_to_inject(FAULT_IO))
    + bio->bi_error = -EIO;
    +#endif
    +
    if (f2fs_bio_encrypted(bio)) {
    if (bio->bi_error) {
    fscrypt_release_ctx(bio->bi_private);
    diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
    index b615f3f..a1a68bf 100644
    --- a/fs/f2fs/f2fs.h
    +++ b/fs/f2fs/f2fs.h
    @@ -46,6 +46,7 @@ enum {
    FAULT_BLOCK,
    FAULT_DIR_DEPTH,
    FAULT_EVICT_INODE,
    + FAULT_IO,
    FAULT_MAX,
    };

    @@ -77,6 +78,8 @@ static inline bool time_to_inject(int type)
    return false;
    else if (type == FAULT_EVICT_INODE && !IS_FAULT_SET(type))
    return false;
    + else if (type == FAULT_IO && !IS_FAULT_SET(type))
    + return false;

    atomic_inc(&f2fs_fault.inject_ops);
    if (atomic_read(&f2fs_fault.inject_ops) >= f2fs_fault.inject_rate) {
    diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
    index f809729..fafa34e 100644
    --- a/fs/f2fs/super.c
    +++ b/fs/f2fs/super.c
    @@ -50,6 +50,7 @@ char *fault_name[FAULT_MAX] = {
    [FAULT_BLOCK] = "no more block",
    [FAULT_DIR_DEPTH] = "too big dir depth",
    [FAULT_EVICT_INODE] = "evict_inode fail",
    + [FAULT_IO] = "IO error",
    };

    static void f2fs_build_fault_attr(unsigned int rate)
    --
    2.7.2
    \
     
     \ /
      Last update: 2016-09-18 17:33    [W:4.247 / U:0.552 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site