f2fs: iostat: support accounting compressed IO
authorChao Yu <chao.yu@oppo.com>
Sat, 20 Aug 2022 03:04:41 +0000 (11:04 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Tue, 30 Aug 2022 04:15:51 +0000 (21:15 -0700)
Previously, we supported to account FS_CDATA_READ_IO type IO only,
in this patch, it adds to account more type IO for compressed file:
- APP_BUFFERED_CDATA_IO
- APP_MAPPED_CDATA_IO
- FS_CDATA_IO
- APP_BUFFERED_CDATA_READ_IO
- APP_MAPPED_CDATA_READ_IO

Signed-off-by: Chao Yu <chao.yu@oppo.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/checkpoint.c
fs/f2fs/data.c
fs/f2fs/f2fs.h
fs/f2fs/file.c
fs/f2fs/gc.c
fs/f2fs/iostat.c
fs/f2fs/iostat.h
fs/f2fs/node.c
fs/f2fs/segment.c
include/trace/events/f2fs.h

index 8259e0f..7de48e7 100644 (file)
@@ -89,7 +89,7 @@ repeat:
                return ERR_PTR(err);
        }
 
-       f2fs_update_iostat(sbi, FS_META_READ_IO, F2FS_BLKSIZE);
+       f2fs_update_iostat(sbi, NULL, FS_META_READ_IO, F2FS_BLKSIZE);
 
        lock_page(page);
        if (unlikely(page->mapping != mapping)) {
@@ -276,7 +276,8 @@ int f2fs_ra_meta_pages(struct f2fs_sb_info *sbi, block_t start, int nrpages,
                f2fs_put_page(page, err ? 1 : 0);
 
                if (!err)
-                       f2fs_update_iostat(sbi, FS_META_READ_IO, F2FS_BLKSIZE);
+                       f2fs_update_iostat(sbi, NULL, FS_META_READ_IO,
+                                                       F2FS_BLKSIZE);
        }
 out:
        blk_finish_plug(&plug);
index aa3ccdd..0869fbb 100644 (file)
@@ -1083,7 +1083,7 @@ static int f2fs_submit_page_read(struct inode *inode, struct page *page,
        }
        ClearPageError(page);
        inc_page_count(sbi, F2FS_RD_DATA);
-       f2fs_update_iostat(sbi, FS_DATA_READ_IO, F2FS_BLKSIZE);
+       f2fs_update_iostat(sbi, NULL, FS_DATA_READ_IO, F2FS_BLKSIZE);
        __submit_bio(sbi, bio, DATA);
        return 0;
 }
@@ -2122,7 +2122,8 @@ submit_and_realloc:
                goto submit_and_realloc;
 
        inc_page_count(F2FS_I_SB(inode), F2FS_RD_DATA);
-       f2fs_update_iostat(F2FS_I_SB(inode), FS_DATA_READ_IO, F2FS_BLKSIZE);
+       f2fs_update_iostat(F2FS_I_SB(inode), NULL, FS_DATA_READ_IO,
+                                                       F2FS_BLKSIZE);
        ClearPageError(page);
        *last_block_in_bio = block_nr;
        goto out;
@@ -2270,8 +2271,7 @@ submit_and_realloc:
                refcount_inc(&dic->refcnt);
 
                inc_page_count(sbi, F2FS_RD_DATA);
-               f2fs_update_iostat(sbi, FS_DATA_READ_IO, F2FS_BLKSIZE);
-               f2fs_update_iostat(sbi, FS_CDATA_READ_IO, F2FS_BLKSIZE);
+               f2fs_update_iostat(sbi, inode, FS_DATA_READ_IO, F2FS_BLKSIZE);
                ClearPageError(page);
                *last_block_in_bio = blkaddr;
        }
index 3c7cdb7..809419a 100644 (file)
@@ -1158,7 +1158,10 @@ enum iostat_type {
        APP_BUFFERED_IO,                /* app buffered write IOs */
        APP_WRITE_IO,                   /* app write IOs */
        APP_MAPPED_IO,                  /* app mapped IOs */
+       APP_BUFFERED_CDATA_IO,          /* app buffered write IOs on compressed file */
+       APP_MAPPED_CDATA_IO,            /* app mapped write IOs on compressed file */
        FS_DATA_IO,                     /* data IOs from kworker/fsync/reclaimer */
+       FS_CDATA_IO,                    /* data IOs from kworker/fsync/reclaimer on compressed file */
        FS_NODE_IO,                     /* node IOs from kworker/fsync/reclaimer */
        FS_META_IO,                     /* meta IOs from kworker/reclaimer */
        FS_GC_DATA_IO,                  /* data IOs from forground gc */
@@ -1172,6 +1175,8 @@ enum iostat_type {
        APP_BUFFERED_READ_IO,           /* app buffered read IOs */
        APP_READ_IO,                    /* app read IOs */
        APP_MAPPED_READ_IO,             /* app mapped read IOs */
+       APP_BUFFERED_CDATA_READ_IO,     /* app buffered read IOs on compressed file  */
+       APP_MAPPED_CDATA_READ_IO,       /* app mapped read IOs on compressed file  */
        FS_DATA_READ_IO,                /* data read IOs */
        FS_GDATA_READ_IO,               /* data read IOs from background gc */
        FS_CDATA_READ_IO,               /* compressed data read IOs */
index ce4905a..771f1f7 100644 (file)
@@ -43,8 +43,8 @@ static vm_fault_t f2fs_filemap_fault(struct vm_fault *vmf)
 
        ret = filemap_fault(vmf);
        if (!ret)
-               f2fs_update_iostat(F2FS_I_SB(inode), APP_MAPPED_READ_IO,
-                                                       F2FS_BLKSIZE);
+               f2fs_update_iostat(F2FS_I_SB(inode), inode,
+                                       APP_MAPPED_READ_IO, F2FS_BLKSIZE);
 
        trace_f2fs_filemap_fault(inode, vmf->pgoff, (unsigned long)ret);
 
@@ -154,7 +154,7 @@ static vm_fault_t f2fs_vm_page_mkwrite(struct vm_fault *vmf)
        if (!PageUptodate(page))
                SetPageUptodate(page);
 
-       f2fs_update_iostat(sbi, APP_MAPPED_IO, F2FS_BLKSIZE);
+       f2fs_update_iostat(sbi, inode, APP_MAPPED_IO, F2FS_BLKSIZE);
        f2fs_update_time(sbi, REQ_TIME);
 
        trace_f2fs_vm_page_mkwrite(page, DATA);
@@ -4212,7 +4212,7 @@ static int f2fs_dio_read_end_io(struct kiocb *iocb, ssize_t size, int error,
        dec_page_count(sbi, F2FS_DIO_READ);
        if (error)
                return error;
-       f2fs_update_iostat(sbi, APP_DIRECT_READ_IO, size);
+       f2fs_update_iostat(sbi, NULL, APP_DIRECT_READ_IO, size);
        return 0;
 }
 
@@ -4301,7 +4301,8 @@ skip_read_trace:
        } else {
                ret = filemap_read(iocb, to, 0);
                if (ret > 0)
-                       f2fs_update_iostat(F2FS_I_SB(inode), APP_BUFFERED_READ_IO, ret);
+                       f2fs_update_iostat(F2FS_I_SB(inode), inode,
+                                               APP_BUFFERED_READ_IO, ret);
        }
        if (trace_f2fs_dataread_end_enabled())
                trace_f2fs_dataread_end(inode, pos, ret);
@@ -4418,7 +4419,8 @@ static ssize_t f2fs_buffered_write_iter(struct kiocb *iocb,
 
        if (ret > 0) {
                iocb->ki_pos += ret;
-               f2fs_update_iostat(F2FS_I_SB(inode), APP_BUFFERED_IO, ret);
+               f2fs_update_iostat(F2FS_I_SB(inode), inode,
+                                               APP_BUFFERED_IO, ret);
        }
        return ret;
 }
@@ -4431,7 +4433,7 @@ static int f2fs_dio_write_end_io(struct kiocb *iocb, ssize_t size, int error,
        dec_page_count(sbi, F2FS_DIO_WRITE);
        if (error)
                return error;
-       f2fs_update_iostat(sbi, APP_DIRECT_IO, size);
+       f2fs_update_iostat(sbi, NULL, APP_DIRECT_IO, size);
        return 0;
 }
 
index 45f90e3..2a3816c 100644 (file)
@@ -1202,8 +1202,8 @@ got_it:
        f2fs_put_page(fio.encrypted_page, 0);
        f2fs_put_page(page, 1);
 
-       f2fs_update_iostat(sbi, FS_DATA_READ_IO, F2FS_BLKSIZE);
-       f2fs_update_iostat(sbi, FS_GDATA_READ_IO, F2FS_BLKSIZE);
+       f2fs_update_iostat(sbi, inode, FS_DATA_READ_IO, F2FS_BLKSIZE);
+       f2fs_update_iostat(sbi, NULL, FS_GDATA_READ_IO, F2FS_BLKSIZE);
 
        return 0;
 put_encrypted_page:
@@ -1303,8 +1303,10 @@ static int move_data_block(struct inode *inode, block_t bidx,
                        goto up_out;
                }
 
-               f2fs_update_iostat(fio.sbi, FS_DATA_READ_IO, F2FS_BLKSIZE);
-               f2fs_update_iostat(fio.sbi, FS_GDATA_READ_IO, F2FS_BLKSIZE);
+               f2fs_update_iostat(fio.sbi, inode, FS_DATA_READ_IO,
+                                                       F2FS_BLKSIZE);
+               f2fs_update_iostat(fio.sbi, NULL, FS_GDATA_READ_IO,
+                                                       F2FS_BLKSIZE);
 
                lock_page(mpage);
                if (unlikely(mpage->mapping != META_MAPPING(fio.sbi) ||
@@ -1356,7 +1358,7 @@ static int move_data_block(struct inode *inode, block_t bidx,
                goto put_page_out;
        }
 
-       f2fs_update_iostat(fio.sbi, FS_GC_DATA_IO, F2FS_BLKSIZE);
+       f2fs_update_iostat(fio.sbi, NULL, FS_GC_DATA_IO, F2FS_BLKSIZE);
 
        f2fs_update_data_blkaddr(&dn, newaddr);
        set_inode_flag(inode, FI_APPEND_WRITE);
index d84c5f6..3166a89 100644 (file)
@@ -31,55 +31,65 @@ int __maybe_unused iostat_info_seq_show(struct seq_file *seq, void *offset)
 
        /* print app write IOs */
        seq_puts(seq, "[WRITE]\n");
-       seq_printf(seq, "app buffered:  %-16llu\n",
+       seq_printf(seq, "app buffered data:     %-16llu\n",
                                sbi->rw_iostat[APP_BUFFERED_IO]);
-       seq_printf(seq, "app direct:    %-16llu\n",
+       seq_printf(seq, "app direct data:       %-16llu\n",
                                sbi->rw_iostat[APP_DIRECT_IO]);
-       seq_printf(seq, "app mapped:    %-16llu\n",
+       seq_printf(seq, "app mapped data:       %-16llu\n",
                                sbi->rw_iostat[APP_MAPPED_IO]);
+       seq_printf(seq, "app buffered cdata:    %-16llu\n",
+                               sbi->rw_iostat[APP_BUFFERED_CDATA_IO]);
+       seq_printf(seq, "app mapped cdata:      %-16llu\n",
+                               sbi->rw_iostat[APP_MAPPED_CDATA_IO]);
 
        /* print fs write IOs */
-       seq_printf(seq, "fs data:       %-16llu\n",
+       seq_printf(seq, "fs data:               %-16llu\n",
                                sbi->rw_iostat[FS_DATA_IO]);
-       seq_printf(seq, "fs node:       %-16llu\n",
+       seq_printf(seq, "fs cdata:              %-16llu\n",
+                               sbi->rw_iostat[FS_CDATA_IO]);
+       seq_printf(seq, "fs node:               %-16llu\n",
                                sbi->rw_iostat[FS_NODE_IO]);
-       seq_printf(seq, "fs meta:       %-16llu\n",
+       seq_printf(seq, "fs meta:               %-16llu\n",
                                sbi->rw_iostat[FS_META_IO]);
-       seq_printf(seq, "fs gc data:    %-16llu\n",
+       seq_printf(seq, "fs gc data:            %-16llu\n",
                                sbi->rw_iostat[FS_GC_DATA_IO]);
-       seq_printf(seq, "fs gc node:    %-16llu\n",
+       seq_printf(seq, "fs gc node:            %-16llu\n",
                                sbi->rw_iostat[FS_GC_NODE_IO]);
-       seq_printf(seq, "fs cp data:    %-16llu\n",
+       seq_printf(seq, "fs cp data:            %-16llu\n",
                                sbi->rw_iostat[FS_CP_DATA_IO]);
-       seq_printf(seq, "fs cp node:    %-16llu\n",
+       seq_printf(seq, "fs cp node:            %-16llu\n",
                                sbi->rw_iostat[FS_CP_NODE_IO]);
-       seq_printf(seq, "fs cp meta:    %-16llu\n",
+       seq_printf(seq, "fs cp meta:            %-16llu\n",
                                sbi->rw_iostat[FS_CP_META_IO]);
 
        /* print app read IOs */
        seq_puts(seq, "[READ]\n");
-       seq_printf(seq, "app buffered:  %-16llu\n",
+       seq_printf(seq, "app buffered data:     %-16llu\n",
                                sbi->rw_iostat[APP_BUFFERED_READ_IO]);
-       seq_printf(seq, "app direct:    %-16llu\n",
+       seq_printf(seq, "app direct data:       %-16llu\n",
                                sbi->rw_iostat[APP_DIRECT_READ_IO]);
-       seq_printf(seq, "app mapped:    %-16llu\n",
+       seq_printf(seq, "app mapped data:       %-16llu\n",
                                sbi->rw_iostat[APP_MAPPED_READ_IO]);
+       seq_printf(seq, "app buffered cdata:    %-16llu\n",
+                               sbi->rw_iostat[APP_BUFFERED_CDATA_READ_IO]);
+       seq_printf(seq, "app mapped cdata:      %-16llu\n",
+                               sbi->rw_iostat[APP_MAPPED_CDATA_READ_IO]);
 
        /* print fs read IOs */
-       seq_printf(seq, "fs data:       %-16llu\n",
+       seq_printf(seq, "fs data:               %-16llu\n",
                                sbi->rw_iostat[FS_DATA_READ_IO]);
-       seq_printf(seq, "fs gc data:    %-16llu\n",
+       seq_printf(seq, "fs gc data:            %-16llu\n",
                                sbi->rw_iostat[FS_GDATA_READ_IO]);
-       seq_printf(seq, "fs compr_data: %-16llu\n",
+       seq_printf(seq, "fs cdata:              %-16llu\n",
                                sbi->rw_iostat[FS_CDATA_READ_IO]);
-       seq_printf(seq, "fs node:       %-16llu\n",
+       seq_printf(seq, "fs node:               %-16llu\n",
                                sbi->rw_iostat[FS_NODE_READ_IO]);
-       seq_printf(seq, "fs meta:       %-16llu\n",
+       seq_printf(seq, "fs meta:               %-16llu\n",
                                sbi->rw_iostat[FS_META_READ_IO]);
 
        /* print other IOs */
        seq_puts(seq, "[OTHER]\n");
-       seq_printf(seq, "fs discard:    %-16llu\n",
+       seq_printf(seq, "fs discard:            %-16llu\n",
                                sbi->rw_iostat[FS_DISCARD]);
 
        return 0;
@@ -159,7 +169,7 @@ void f2fs_reset_iostat(struct f2fs_sb_info *sbi)
        spin_unlock_irq(&sbi->iostat_lat_lock);
 }
 
-void f2fs_update_iostat(struct f2fs_sb_info *sbi,
+void f2fs_update_iostat(struct f2fs_sb_info *sbi, struct inode *inode,
                        enum iostat_type type, unsigned long long io_bytes)
 {
        unsigned long flags;
@@ -176,6 +186,28 @@ void f2fs_update_iostat(struct f2fs_sb_info *sbi,
        if (type == APP_BUFFERED_READ_IO || type == APP_DIRECT_READ_IO)
                sbi->rw_iostat[APP_READ_IO] += io_bytes;
 
+#ifdef CONFIG_F2FS_FS_COMPRESSION
+       if (inode && f2fs_compressed_file(inode)) {
+               if (type == APP_BUFFERED_IO)
+                       sbi->rw_iostat[APP_BUFFERED_CDATA_IO] += io_bytes;
+
+               if (type == APP_BUFFERED_READ_IO)
+                       sbi->rw_iostat[APP_BUFFERED_CDATA_READ_IO] += io_bytes;
+
+               if (type == APP_MAPPED_READ_IO)
+                       sbi->rw_iostat[APP_MAPPED_CDATA_READ_IO] += io_bytes;
+
+               if (type == APP_MAPPED_IO)
+                       sbi->rw_iostat[APP_MAPPED_CDATA_IO] += io_bytes;
+
+               if (type == FS_DATA_READ_IO)
+                       sbi->rw_iostat[FS_CDATA_READ_IO] += io_bytes;
+
+               if (type == FS_DATA_IO)
+                       sbi->rw_iostat[FS_CDATA_IO] += io_bytes;
+       }
+#endif
+
        spin_unlock_irqrestore(&sbi->iostat_lock, flags);
 
        f2fs_record_iostat(sbi);
index 22a2d01..2c04830 100644 (file)
@@ -31,7 +31,7 @@ struct iostat_lat_info {
 extern int __maybe_unused iostat_info_seq_show(struct seq_file *seq,
                        void *offset);
 extern void f2fs_reset_iostat(struct f2fs_sb_info *sbi);
-extern void f2fs_update_iostat(struct f2fs_sb_info *sbi,
+extern void f2fs_update_iostat(struct f2fs_sb_info *sbi, struct inode *inode,
                        enum iostat_type type, unsigned long long io_bytes);
 
 struct bio_iostat_ctx {
@@ -65,7 +65,7 @@ extern void f2fs_destroy_iostat_processing(void);
 extern int f2fs_init_iostat(struct f2fs_sb_info *sbi);
 extern void f2fs_destroy_iostat(struct f2fs_sb_info *sbi);
 #else
-static inline void f2fs_update_iostat(struct f2fs_sb_info *sbi,
+static inline void f2fs_update_iostat(struct f2fs_sb_info *sbi, struct inode *inode,
                enum iostat_type type, unsigned long long io_bytes) {}
 static inline void iostat_update_and_unbind_ctx(struct bio *bio, int rw) {}
 static inline void iostat_alloc_and_bind_ctx(struct f2fs_sb_info *sbi,
index e06a0c4..2484285 100644 (file)
@@ -1369,7 +1369,7 @@ static int read_node_page(struct page *page, blk_opf_t op_flags)
        err = f2fs_submit_page_bio(&fio);
 
        if (!err)
-               f2fs_update_iostat(sbi, FS_NODE_READ_IO, F2FS_BLKSIZE);
+               f2fs_update_iostat(sbi, NULL, FS_NODE_READ_IO, F2FS_BLKSIZE);
 
        return err;
 }
index 0de21f8..a505472 100644 (file)
@@ -1171,7 +1171,7 @@ submit:
 
                atomic_inc(&dcc->issued_discard);
 
-               f2fs_update_iostat(sbi, FS_DISCARD, 1);
+               f2fs_update_iostat(sbi, NULL, FS_DISCARD, 1);
 
                lstart += len;
                start += len;
@@ -3388,7 +3388,7 @@ void f2fs_do_write_meta_page(struct f2fs_sb_info *sbi, struct page *page,
        f2fs_submit_page_write(&fio);
 
        stat_inc_meta_count(sbi, page->index);
-       f2fs_update_iostat(sbi, io_type, F2FS_BLKSIZE);
+       f2fs_update_iostat(sbi, NULL, io_type, F2FS_BLKSIZE);
 }
 
 void f2fs_do_write_node_page(unsigned int nid, struct f2fs_io_info *fio)
@@ -3398,7 +3398,7 @@ void f2fs_do_write_node_page(unsigned int nid, struct f2fs_io_info *fio)
        set_summary(&sum, nid, 0, 0);
        do_write_page(&sum, fio);
 
-       f2fs_update_iostat(fio->sbi, fio->io_type, F2FS_BLKSIZE);
+       f2fs_update_iostat(fio->sbi, NULL, fio->io_type, F2FS_BLKSIZE);
 }
 
 void f2fs_outplace_write_data(struct dnode_of_data *dn,
@@ -3412,7 +3412,7 @@ void f2fs_outplace_write_data(struct dnode_of_data *dn,
        do_write_page(&sum, fio);
        f2fs_update_data_blkaddr(dn, fio->new_blkaddr);
 
-       f2fs_update_iostat(sbi, fio->io_type, F2FS_BLKSIZE);
+       f2fs_update_iostat(sbi, dn->inode, fio->io_type, F2FS_BLKSIZE);
 }
 
 int f2fs_inplace_write_data(struct f2fs_io_info *fio)
@@ -3453,7 +3453,8 @@ int f2fs_inplace_write_data(struct f2fs_io_info *fio)
        if (!err) {
                f2fs_update_device_state(fio->sbi, fio->ino,
                                                fio->new_blkaddr, 1);
-               f2fs_update_iostat(fio->sbi, fio->io_type, F2FS_BLKSIZE);
+               f2fs_update_iostat(fio->sbi, fio->page->mapping->host,
+                                               fio->io_type, F2FS_BLKSIZE);
        }
 
        return err;
index f1e9222..b262985 100644 (file)
@@ -1823,7 +1823,10 @@ TRACE_EVENT(f2fs_iostat,
                __field(unsigned long long,     app_bio)
                __field(unsigned long long,     app_wio)
                __field(unsigned long long,     app_mio)
+               __field(unsigned long long,     app_bcdio)
+               __field(unsigned long long,     app_mcdio)
                __field(unsigned long long,     fs_dio)
+               __field(unsigned long long,     fs_cdio)
                __field(unsigned long long,     fs_nio)
                __field(unsigned long long,     fs_mio)
                __field(unsigned long long,     fs_gc_dio)
@@ -1835,6 +1838,8 @@ TRACE_EVENT(f2fs_iostat,
                __field(unsigned long long,     app_brio)
                __field(unsigned long long,     app_rio)
                __field(unsigned long long,     app_mrio)
+               __field(unsigned long long,     app_bcrio)
+               __field(unsigned long long,     app_mcrio)
                __field(unsigned long long,     fs_drio)
                __field(unsigned long long,     fs_gdrio)
                __field(unsigned long long,     fs_cdrio)
@@ -1849,7 +1854,10 @@ TRACE_EVENT(f2fs_iostat,
                __entry->app_bio        = iostat[APP_BUFFERED_IO];
                __entry->app_wio        = iostat[APP_WRITE_IO];
                __entry->app_mio        = iostat[APP_MAPPED_IO];
+               __entry->app_bcdio      = iostat[APP_BUFFERED_CDATA_IO];
+               __entry->app_mcdio      = iostat[APP_MAPPED_CDATA_IO];
                __entry->fs_dio         = iostat[FS_DATA_IO];
+               __entry->fs_cdio        = iostat[FS_CDATA_IO];
                __entry->fs_nio         = iostat[FS_NODE_IO];
                __entry->fs_mio         = iostat[FS_META_IO];
                __entry->fs_gc_dio      = iostat[FS_GC_DATA_IO];
@@ -1861,6 +1869,8 @@ TRACE_EVENT(f2fs_iostat,
                __entry->app_brio       = iostat[APP_BUFFERED_READ_IO];
                __entry->app_rio        = iostat[APP_READ_IO];
                __entry->app_mrio       = iostat[APP_MAPPED_READ_IO];
+               __entry->app_bcrio      = iostat[APP_BUFFERED_CDATA_READ_IO];
+               __entry->app_mcrio      = iostat[APP_MAPPED_CDATA_READ_IO];
                __entry->fs_drio        = iostat[FS_DATA_READ_IO];
                __entry->fs_gdrio       = iostat[FS_GDATA_READ_IO];
                __entry->fs_cdrio       = iostat[FS_CDATA_READ_IO];
@@ -1870,20 +1880,24 @@ TRACE_EVENT(f2fs_iostat,
        ),
 
        TP_printk("dev = (%d,%d), "
-               "app [write=%llu (direct=%llu, buffered=%llu), mapped=%llu], "
-               "fs [data=%llu, node=%llu, meta=%llu, discard=%llu], "
+               "app [write=%llu (direct=%llu, buffered=%llu), mapped=%llu, "
+               "compr(buffered=%llu, mapped=%llu)], "
+               "fs [data=%llu, cdata=%llu, node=%llu, meta=%llu, discard=%llu], "
                "gc [data=%llu, node=%llu], "
                "cp [data=%llu, node=%llu, meta=%llu], "
                "app [read=%llu (direct=%llu, buffered=%llu), mapped=%llu], "
-               "fs [data=%llu, (gc_data=%llu, compr_data=%llu), "
+               "compr(buffered=%llu, mapped=%llu)], "
+               "fs [data=%llu, (gc_data=%llu, cdata=%llu), "
                "node=%llu, meta=%llu]",
                show_dev(__entry->dev), __entry->app_wio, __entry->app_dio,
-               __entry->app_bio, __entry->app_mio, __entry->fs_dio,
+               __entry->app_bio, __entry->app_mio, __entry->app_bcdio,
+               __entry->app_mcdio, __entry->fs_dio, __entry->fs_cdio,
                __entry->fs_nio, __entry->fs_mio, __entry->fs_discard,
                __entry->fs_gc_dio, __entry->fs_gc_nio, __entry->fs_cp_dio,
                __entry->fs_cp_nio, __entry->fs_cp_mio,
                __entry->app_rio, __entry->app_drio, __entry->app_brio,
-               __entry->app_mrio, __entry->fs_drio, __entry->fs_gdrio,
+               __entry->app_mrio, __entry->app_bcrio, __entry->app_mcrio,
+               __entry->fs_drio, __entry->fs_gdrio,
                __entry->fs_cdrio, __entry->fs_nrio, __entry->fs_mrio)
 );