lkml.org 
[lkml]   [2016]   [Apr]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 11/42] f2fs: set bi_op to REQ_OP
    Date
    From: Mike Christie <mchristi@redhat.com>

    This patch has f2fs use bio->bi_op for REQ_OPs and rq_flag_bits to bio->bi_rw.

    Signed-off-by: Mike Christie <mchristi@redhat.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    ---
    fs/f2fs/checkpoint.c | 10 ++++++----
    fs/f2fs/data.c | 33 ++++++++++++++++++++-------------
    fs/f2fs/f2fs.h | 5 +++--
    fs/f2fs/gc.c | 9 ++++++---
    fs/f2fs/inline.c | 3 ++-
    fs/f2fs/node.c | 8 +++++---
    fs/f2fs/segment.c | 10 +++++++---
    fs/f2fs/trace.c | 7 ++++---
    include/trace/events/f2fs.h | 34 +++++++++++++++++++++-------------
    9 files changed, 74 insertions(+), 45 deletions(-)

    diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c
    index b92782f..6f9dc16 100644
    --- a/fs/f2fs/checkpoint.c
    +++ b/fs/f2fs/checkpoint.c
    @@ -55,14 +55,15 @@ static struct page *__get_meta_page(struct f2fs_sb_info *sbi, pgoff_t index,
    struct f2fs_io_info fio = {
    .sbi = sbi,
    .type = META,
    - .rw = READ_SYNC | REQ_META | REQ_PRIO,
    + .op = REQ_OP_READ,
    + .op_flags = READ_SYNC | REQ_META | REQ_PRIO,
    .old_blkaddr = index,
    .new_blkaddr = index,
    .encrypted_page = NULL,
    };

    if (unlikely(!is_meta))
    - fio.rw &= ~REQ_META;
    + fio.op_flags &= ~REQ_META;
    repeat:
    page = grab_cache_page(mapping, index);
    if (!page) {
    @@ -149,13 +150,14 @@ int ra_meta_pages(struct f2fs_sb_info *sbi, block_t start, int nrpages,
    struct f2fs_io_info fio = {
    .sbi = sbi,
    .type = META,
    - .rw = sync ? (READ_SYNC | REQ_META | REQ_PRIO) : READA,
    + .op = REQ_OP_READ,
    + .op_flags = sync ? (READ_SYNC | REQ_META | REQ_PRIO) : READA,
    .encrypted_page = NULL,
    };
    struct blk_plug plug;

    if (unlikely(type == META_POR))
    - fio.rw &= ~REQ_META;
    + fio.op_flags &= ~REQ_META;

    blk_start_plug(&plug);
    for (; nrpages-- > 0; blkno++) {
    diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
    index 74cf5cb..03b6362 100644
    --- a/fs/f2fs/data.c
    +++ b/fs/f2fs/data.c
    @@ -105,11 +105,12 @@ static void __submit_merged_bio(struct f2fs_bio_info *io)
    if (!io->bio)
    return;

    - if (is_read_io(fio->rw))
    + if (is_read_io(fio->op))
    trace_f2fs_submit_read_bio(io->sbi->sb, fio, io->bio);
    else
    trace_f2fs_submit_write_bio(io->sbi->sb, fio, io->bio);
    - io->bio->bi_rw = fio->rw;
    + io->bio->bi_op = fio->op;
    + io->bio->bi_rw = fio->op_flags;

    submit_bio(io->bio);
    io->bio = NULL;
    @@ -177,10 +178,12 @@ static void __f2fs_submit_merged_bio(struct f2fs_sb_info *sbi,
    /* change META to META_FLUSH in the checkpoint procedure */
    if (type >= META_FLUSH) {
    io->fio.type = META_FLUSH;
    + io->fio.op = REQ_OP_WRITE;
    if (test_opt(sbi, NOBARRIER))
    - io->fio.rw = WRITE_FLUSH | REQ_META | REQ_PRIO;
    + io->fio.op_flags = WRITE_FLUSH | REQ_META | REQ_PRIO;
    else
    - io->fio.rw = WRITE_FLUSH_FUA | REQ_META | REQ_PRIO;
    + io->fio.op_flags = WRITE_FLUSH_FUA | REQ_META |
    + REQ_PRIO;
    }
    __submit_merged_bio(io);
    out:
    @@ -222,13 +225,14 @@ int f2fs_submit_page_bio(struct f2fs_io_info *fio)
    f2fs_trace_ios(fio, 0);

    /* Allocate a new bio */
    - bio = __bio_alloc(fio->sbi, fio->new_blkaddr, 1, is_read_io(fio->rw));
    + bio = __bio_alloc(fio->sbi, fio->new_blkaddr, 1, is_read_io(fio->op));

    if (bio_add_page(bio, page, PAGE_SIZE, 0) < PAGE_SIZE) {
    bio_put(bio);
    return -EFAULT;
    }
    - bio->bi_rw = fio->rw;
    + bio->bi_op = fio->op;
    + bio->bi_rw = fio->op_flags;

    submit_bio(bio);
    return 0;
    @@ -239,7 +243,7 @@ void f2fs_submit_page_mbio(struct f2fs_io_info *fio)
    struct f2fs_sb_info *sbi = fio->sbi;
    enum page_type btype = PAGE_TYPE_OF_BIO(fio->type);
    struct f2fs_bio_info *io;
    - bool is_read = is_read_io(fio->rw);
    + bool is_read = is_read_io(fio->op);
    struct page *bio_page;

    io = is_read ? &sbi->read_io : &sbi->write_io[btype];
    @@ -254,7 +258,7 @@ void f2fs_submit_page_mbio(struct f2fs_io_info *fio)
    inc_page_count(sbi, F2FS_WRITEBACK);

    if (io->bio && (io->last_block_in_bio != fio->new_blkaddr - 1 ||
    - io->fio.rw != fio->rw))
    + (io->fio.op != fio->op || io->fio.op_flags != fio->op_flags)))
    __submit_merged_bio(io);
    alloc_new:
    if (io->bio == NULL) {
    @@ -359,7 +363,7 @@ int f2fs_get_block(struct dnode_of_data *dn, pgoff_t index)
    }

    struct page *get_read_data_page(struct inode *inode, pgoff_t index,
    - int rw, bool for_write)
    + int op_flags, bool for_write)
    {
    struct address_space *mapping = inode->i_mapping;
    struct dnode_of_data dn;
    @@ -369,7 +373,8 @@ struct page *get_read_data_page(struct inode *inode, pgoff_t index,
    struct f2fs_io_info fio = {
    .sbi = F2FS_I_SB(inode),
    .type = DATA,
    - .rw = rw,
    + .op = REQ_OP_READ,
    + .op_flags = op_flags,
    .encrypted_page = NULL,
    };

    @@ -1014,7 +1019,7 @@ submit_and_realloc:
    bio->bi_iter.bi_sector = SECTOR_FROM_BLOCK(block_nr);
    bio->bi_end_io = f2fs_read_end_io;
    bio->bi_private = ctx;
    - bio->bi_rw = READ;
    + bio->bi_op = REQ_OP_READ;
    }

    if (bio_add_page(bio, page, blocksize, 0) < blocksize)
    @@ -1156,7 +1161,8 @@ static int f2fs_write_data_page(struct page *page,
    struct f2fs_io_info fio = {
    .sbi = sbi,
    .type = DATA,
    - .rw = (wbc->sync_mode == WB_SYNC_ALL) ? WRITE_SYNC : WRITE,
    + .op = REQ_OP_WRITE,
    + .op_flags = (wbc->sync_mode == WB_SYNC_ALL) ? WRITE_SYNC : 0,
    .page = page,
    .encrypted_page = NULL,
    };
    @@ -1594,7 +1600,8 @@ repeat:
    struct f2fs_io_info fio = {
    .sbi = sbi,
    .type = DATA,
    - .rw = READ_SYNC,
    + .op = REQ_OP_READ,
    + .op_flags = READ_SYNC,
    .old_blkaddr = blkaddr,
    .new_blkaddr = blkaddr,
    .page = page,
    diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
    index 3f15513..bc488e2 100644
    --- a/fs/f2fs/f2fs.h
    +++ b/fs/f2fs/f2fs.h
    @@ -636,14 +636,15 @@ enum page_type {
    struct f2fs_io_info {
    struct f2fs_sb_info *sbi; /* f2fs_sb_info pointer */
    enum page_type type; /* contains DATA/NODE/META/META_FLUSH */
    - int rw; /* contains R/RS/W/WS with REQ_META/REQ_PRIO */
    + int op; /* contains REQ_OP_ */
    + int op_flags; /* rq_flag_bits */
    block_t new_blkaddr; /* new block address to be written */
    block_t old_blkaddr; /* old block address before Cow */
    struct page *page; /* page to be written */
    struct page *encrypted_page; /* encrypted page */
    };

    -#define is_read_io(rw) (((rw) & 1) == READ)
    +#define is_read_io(rw) (rw == READ)
    struct f2fs_bio_info {
    struct f2fs_sb_info *sbi; /* f2fs superblock */
    struct bio *bio; /* bios to merge */
    diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
    index b0051a9..fbd4b88 100644
    --- a/fs/f2fs/gc.c
    +++ b/fs/f2fs/gc.c
    @@ -546,7 +546,8 @@ static void move_encrypted_block(struct inode *inode, block_t bidx)
    struct f2fs_io_info fio = {
    .sbi = F2FS_I_SB(inode),
    .type = DATA,
    - .rw = READ_SYNC,
    + .op = REQ_OP_READ,
    + .op_flags = READ_SYNC,
    .encrypted_page = NULL,
    };
    struct dnode_of_data dn;
    @@ -620,7 +621,8 @@ static void move_encrypted_block(struct inode *inode, block_t bidx)
    /* allocate block address */
    f2fs_wait_on_page_writeback(dn.node_page, NODE, true);

    - fio.rw = WRITE_SYNC;
    + fio.op = REQ_OP_WRITE;
    + fio.op_flags = WRITE_SYNC;
    fio.new_blkaddr = newaddr;
    f2fs_submit_page_mbio(&fio);

    @@ -657,7 +659,8 @@ static void move_data_page(struct inode *inode, block_t bidx, int gc_type)
    struct f2fs_io_info fio = {
    .sbi = F2FS_I_SB(inode),
    .type = DATA,
    - .rw = WRITE_SYNC,
    + .op = REQ_OP_WRITE,
    + .op_flags = WRITE_SYNC,
    .page = page,
    .encrypted_page = NULL,
    };
    diff --git a/fs/f2fs/inline.c b/fs/f2fs/inline.c
    index 7720565..d3f7292 100644
    --- a/fs/f2fs/inline.c
    +++ b/fs/f2fs/inline.c
    @@ -108,7 +108,8 @@ int f2fs_convert_inline_page(struct dnode_of_data *dn, struct page *page)
    struct f2fs_io_info fio = {
    .sbi = F2FS_I_SB(dn->inode),
    .type = DATA,
    - .rw = WRITE_SYNC | REQ_PRIO,
    + .op = REQ_OP_WRITE,
    + .op_flags = WRITE_SYNC | REQ_PRIO,
    .page = page,
    .encrypted_page = NULL,
    };
    diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c
    index 095fc2c..c6935c5 100644
    --- a/fs/f2fs/node.c
    +++ b/fs/f2fs/node.c
    @@ -1043,14 +1043,15 @@ fail:
    * 0: f2fs_put_page(page, 0)
    * LOCKED_PAGE or error: f2fs_put_page(page, 1)
    */
    -static int read_node_page(struct page *page, int rw)
    +static int read_node_page(struct page *page, int op_flags)
    {
    struct f2fs_sb_info *sbi = F2FS_P_SB(page);
    struct node_info ni;
    struct f2fs_io_info fio = {
    .sbi = sbi,
    .type = NODE,
    - .rw = rw,
    + .op = REQ_OP_READ,
    + .op_flags = op_flags,
    .page = page,
    .encrypted_page = NULL,
    };
    @@ -1389,7 +1390,8 @@ static int f2fs_write_node_page(struct page *page,
    struct f2fs_io_info fio = {
    .sbi = sbi,
    .type = NODE,
    - .rw = (wbc->sync_mode == WB_SYNC_ALL) ? WRITE_SYNC : WRITE,
    + .op = REQ_OP_WRITE,
    + .op_flags = (wbc->sync_mode == WB_SYNC_ALL) ? WRITE_SYNC : 0,
    .page = page,
    .encrypted_page = NULL,
    };
    diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
    index 0928d57..e271f16 100644
    --- a/fs/f2fs/segment.c
    +++ b/fs/f2fs/segment.c
    @@ -255,7 +255,8 @@ static int __commit_inmem_pages(struct inode *inode,
    struct f2fs_io_info fio = {
    .sbi = sbi,
    .type = DATA,
    - .rw = WRITE_SYNC | REQ_PRIO,
    + .op = REQ_OP_WRITE,
    + .op_flags = WRITE_SYNC | REQ_PRIO,
    .encrypted_page = NULL,
    };
    bool submit_bio = false;
    @@ -404,6 +405,7 @@ repeat:
    fcc->dispatch_list = llist_reverse_order(fcc->dispatch_list);

    bio->bi_bdev = sbi->sb->s_bdev;
    + bio->bi_op = REQ_OP_WRITE;
    bio->bi_rw = WRITE_FLUSH;
    ret = submit_bio_wait(bio);

    @@ -437,6 +439,7 @@ int f2fs_issue_flush(struct f2fs_sb_info *sbi)
    int ret;

    bio->bi_bdev = sbi->sb->s_bdev;
    + bio->bi_op = REQ_OP_WRITE;
    bio->bi_rw = WRITE_FLUSH;
    ret = submit_bio_wait(bio);
    bio_put(bio);
    @@ -1401,7 +1404,8 @@ void write_meta_page(struct f2fs_sb_info *sbi, struct page *page)
    struct f2fs_io_info fio = {
    .sbi = sbi,
    .type = META,
    - .rw = WRITE_SYNC | REQ_META | REQ_PRIO,
    + .op = REQ_OP_WRITE,
    + .op_flags = WRITE_SYNC | REQ_META | REQ_PRIO,
    .old_blkaddr = page->index,
    .new_blkaddr = page->index,
    .page = page,
    @@ -1409,7 +1413,7 @@ void write_meta_page(struct f2fs_sb_info *sbi, struct page *page)
    };

    if (unlikely(page->index >= MAIN_BLKADDR(sbi)))
    - fio.rw &= ~REQ_META;
    + fio.op_flags &= ~REQ_META;

    set_page_writeback(page);
    f2fs_submit_page_mbio(&fio);
    diff --git a/fs/f2fs/trace.c b/fs/f2fs/trace.c
    index 562ce08..73b4e1d 100644
    --- a/fs/f2fs/trace.c
    +++ b/fs/f2fs/trace.c
    @@ -25,11 +25,11 @@ static inline void __print_last_io(void)
    if (!last_io.len)
    return;

    - trace_printk("%3x:%3x %4x %-16s %2x %5x %12x %4x\n",
    + trace_printk("%3x:%3x %4x %-16s %2x %5x %5x %12x %4x\n",
    last_io.major, last_io.minor,
    last_io.pid, "----------------",
    last_io.type,
    - last_io.fio.rw,
    + last_io.fio.op, last_io.fio.op_flags,
    last_io.fio.new_blkaddr,
    last_io.len);
    memset(&last_io, 0, sizeof(last_io));
    @@ -101,7 +101,8 @@ void f2fs_trace_ios(struct f2fs_io_info *fio, int flush)
    if (last_io.major == major && last_io.minor == minor &&
    last_io.pid == pid &&
    last_io.type == __file_type(inode, pid) &&
    - last_io.fio.rw == fio->rw &&
    + last_io.fio.op == fio->op &&
    + last_io.fio.op_flags == fio->op_flags &&
    last_io.fio.new_blkaddr + last_io.len ==
    fio->new_blkaddr) {
    last_io.len++;
    diff --git a/include/trace/events/f2fs.h b/include/trace/events/f2fs.h
    index 0f56584..db75d69 100644
    --- a/include/trace/events/f2fs.h
    +++ b/include/trace/events/f2fs.h
    @@ -56,17 +56,21 @@ TRACE_DEFINE_ENUM(CP_DISCARD);
    { IPU, "IN-PLACE" }, \
    { OPU, "OUT-OF-PLACE" })

    -#define F2FS_BIO_MASK(t) (t & (READA | WRITE_FLUSH_FUA))
    +#define F2FS_BIO_FLAG_MASK(t) (t & (READA | WRITE_FLUSH_FUA))
    #define F2FS_BIO_EXTRA_MASK(t) (t & (REQ_META | REQ_PRIO))

    -#define show_bio_type(type) show_bio_base(type), show_bio_extra(type)
    +#define show_bio_type(op, op_flags) show_bio_op(op), \
    + show_bio_op_flags(op_flags), show_bio_extra(op_flags)

    -#define show_bio_base(type) \
    - __print_symbolic(F2FS_BIO_MASK(type), \
    +#define show_bio_op(op) \
    + __print_symbolic(op, \
    { READ, "READ" }, \
    + { WRITE, "WRITE" })
    +
    +#define show_bio_op_flags(flags) \
    + __print_symbolic(F2FS_BIO_FLAG_MASK(flags), \
    { READA, "READAHEAD" }, \
    { READ_SYNC, "READ_SYNC" }, \
    - { WRITE, "WRITE" }, \
    { WRITE_SYNC, "WRITE_SYNC" }, \
    { WRITE_FLUSH, "WRITE_FLUSH" }, \
    { WRITE_FUA, "WRITE_FUA" }, \
    @@ -730,7 +734,8 @@ DECLARE_EVENT_CLASS(f2fs__submit_page_bio,
    __field(pgoff_t, index)
    __field(block_t, old_blkaddr)
    __field(block_t, new_blkaddr)
    - __field(int, rw)
    + __field(int, op)
    + __field(int, op_flags)
    __field(int, type)
    ),

    @@ -740,17 +745,18 @@ DECLARE_EVENT_CLASS(f2fs__submit_page_bio,
    __entry->index = page->index;
    __entry->old_blkaddr = fio->old_blkaddr;
    __entry->new_blkaddr = fio->new_blkaddr;
    - __entry->rw = fio->rw;
    + __entry->op = fio->op;
    + __entry->op_flags = fio->op_flags;
    __entry->type = fio->type;
    ),

    TP_printk("dev = (%d,%d), ino = %lu, page_index = 0x%lx, "
    - "oldaddr = 0x%llx, newaddr = 0x%llx rw = %s%s, type = %s",
    + "oldaddr = 0x%llx, newaddr = 0x%llx rw = %s%si%s, type = %s",
    show_dev_ino(__entry),
    (unsigned long)__entry->index,
    (unsigned long long)__entry->old_blkaddr,
    (unsigned long long)__entry->new_blkaddr,
    - show_bio_type(__entry->rw),
    + show_bio_type(__entry->op, __entry->op_flags),
    show_block_type(__entry->type))
    );

    @@ -781,7 +787,8 @@ DECLARE_EVENT_CLASS(f2fs__submit_bio,

    TP_STRUCT__entry(
    __field(dev_t, dev)
    - __field(int, rw)
    + __field(int, op)
    + __field(int, op_flags)
    __field(int, type)
    __field(sector_t, sector)
    __field(unsigned int, size)
    @@ -789,15 +796,16 @@ DECLARE_EVENT_CLASS(f2fs__submit_bio,

    TP_fast_assign(
    __entry->dev = sb->s_dev;
    - __entry->rw = fio->rw;
    + __entry->op = fio->op;
    + __entry->op_flags = fio->op_flags;
    __entry->type = fio->type;
    __entry->sector = bio->bi_iter.bi_sector;
    __entry->size = bio->bi_iter.bi_size;
    ),

    - TP_printk("dev = (%d,%d), %s%s, %s, sector = %lld, size = %u",
    + TP_printk("dev = (%d,%d), %s%s%s, %s, sector = %lld, size = %u",
    show_dev(__entry),
    - show_bio_type(__entry->rw),
    + show_bio_type(__entry->op, __entry->op_flags),
    show_block_type(__entry->type),
    (unsigned long long)__entry->sector,
    __entry->size)
    --
    2.7.2
    \
     
     \ /
      Last update: 2016-04-13 22:21    [W:4.941 / U:1.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site