Re: 答复: [PREVIEW] [PATCH] staging: erofs: add trace points for reading zipped data
Chao Yu
yuchao0 at huawei.com
Mon Aug 20 16:13:53 AEST 2018
Hi Chen,
On 2018/8/20 10:52, gongchen (E) wrote:
> Hi Xiang,
>
> Thanks, I will change the "Z" flag to "NULL".
>
> Hi Chao,
>
> Do you have any other suggestions? Thanks.
It needs to do cleanup as Xiang's suggestion, otherwise it looks good to me. ;)
You can add my Reviewed-by tag in v2.
Thanks,
>
>
> -----邮件原件-----
> 主题: Re: [PREVIEW] [PATCH] staging: erofs: add trace points for reading zipped data
>
> Hi Chen,
>
> On 2018/8/16 19:33, Chen Gong wrote:
>> This patch adds trace points for reading zipped data.
>>
>> Signed-off-by: Chen Gong <gongchen4 at huawei.com>
>> ---
>> drivers/staging/erofs/include/trace/events/erofs.h | 20 ++++++++++++++++++--
>> drivers/staging/erofs/unzip_vle.c | 10 ++++++++++
>> 2 files changed, 28 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/staging/erofs/include/trace/events/erofs.h
>> b/drivers/staging/erofs/include/trace/events/erofs.h
>> index 5aead93..53045de 100644
>> --- a/drivers/staging/erofs/include/trace/events/erofs.h
>> +++ b/drivers/staging/erofs/include/trace/events/erofs.h
>> @@ -162,7 +162,8 @@
>>
>> TP_printk("dev = (%d,%d), nid = %llu, la %llu llen %llu flags %s",
>> show_dev_nid(__entry),
>> - __entry->la, __entry->llen, show_map_flags(__entry->flags))
>> + __entry->la, __entry->llen,
>> + __entry->flags ? show_map_flags(__entry->flags) : "Z")
>
> I personally tend to use
> __entry->flags ? show_map_flags(__entry->flags) : "(default)"
> or
> __entry->flags ? show_map_flags(__entry->flags) : "(null)"
> here, since no flag doesn't only mean ZIPPED or something else.
>
>> );
>>
>> DEFINE_EVENT(erofs__map_blocks_enter,
>> erofs_map_blocks_flatmode_enter, @@ -172,6 +173,13 @@
>> TP_ARGS(inode, map, flags)
>> );
>>
>> +DEFINE_EVENT(erofs__map_blocks_enter, z_erofs_map_blocks_iter_enter,
>> + TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,
>> + unsigned flags),
>> +
>> + TP_ARGS(inode, map, flags)
>> +);
>> +
>> DECLARE_EVENT_CLASS(erofs__map_blocks_exit,
>> TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,
>> unsigned int flags, int ret),
>> @@ -204,7 +212,8 @@
>>
>> TP_printk("dev = (%d,%d), nid = %llu, flags %s "
>> "la %llu pa %llu llen %llu plen %llu mflags %s ret %d",
>> - show_dev_nid(__entry), show_map_flags(__entry->flags),
>> + show_dev_nid(__entry),
>> + __entry->flags ? show_map_flags(__entry->flags) : "Z",
>
> ditto.
>
> Thanks,
> Gao Xiang
>
>> __entry->la, __entry->pa, __entry->llen, __entry->plen,
>> show_mflags(__entry->mflags), __entry->ret) ); @@ -216,6 +225,13
>> @@
>> TP_ARGS(inode, map, flags, ret)
>> );
>>
>> +DEFINE_EVENT(erofs__map_blocks_exit, z_erofs_map_blocks_iter_exit,
>> + TP_PROTO(struct inode *inode, struct erofs_map_blocks *map,
>> + unsigned flags, int ret),
>> +
>> + TP_ARGS(inode, map, flags, ret)
>> +);
>> +
>> TRACE_EVENT(erofs_destroy_inode,
>> TP_PROTO(struct inode *inode),
>>
>> diff --git a/drivers/staging/erofs/unzip_vle.c
>> b/drivers/staging/erofs/unzip_vle.c
>> index 6e5c24d..3a87eee 100644
>> --- a/drivers/staging/erofs/unzip_vle.c
>> +++ b/drivers/staging/erofs/unzip_vle.c
>> @@ -13,6 +13,8 @@
>> #include "unzip_vle.h"
>> #include <linux/prefetch.h>
>>
>> +#include <trace/events/erofs.h>
>> +
>> static struct workqueue_struct *z_erofs_workqueue __read_mostly;
>> static struct kmem_cache *z_erofs_workgroup_cachep __read_mostly;
>>
>> @@ -613,6 +615,8 @@ static int z_erofs_do_read_page(struct z_erofs_vle_frontend *fe,
>> unsigned cur, end, spiltted, index;
>> int err = 0;
>>
>> + trace_erofs_readpage(page, false);
>> +
>> /* register locked file pages as online pages in pack */
>> z_erofs_onlinepage_init(page);
>>
>> @@ -1347,6 +1351,8 @@ static inline int __z_erofs_vle_normalaccess_readpages(
>> struct page *head = NULL;
>> LIST_HEAD(pagepool);
>>
>> + trace_erofs_readpages(mapping->host, lru_to_page(pages), nr_pages,
>> +false);
>> +
>> #if (EROFS_FS_ZIP_CACHE_LVL >= 2)
>> f.cachedzone_la = lru_to_page(pages)->index << PAGE_SHIFT; #endif
>> @@ -1569,6 +1575,8 @@ int z_erofs_map_blocks_iter(struct inode *inode,
>> unsigned int cluster_type, logical_cluster_ofs;
>> int err = 0;
>>
>> + trace_z_erofs_map_blocks_iter_enter(inode, map, flags);
>> +
>> /* when trying to read beyond EOF, leave it unmapped */
>> if (unlikely(map->m_la >= inode->i_size)) {
>> DBG_BUGON(!initial);
>> @@ -1687,6 +1695,8 @@ int z_erofs_map_blocks_iter(struct inode *inode,
>> __func__, map->m_la, map->m_pa,
>> map->m_llen, map->m_plen, map->m_flags);
>>
>> + trace_z_erofs_map_blocks_iter_exit(inode, map, flags, err);
>> +
>> /* aggressively BUG_ON iff CONFIG_EROFS_FS_DEBUG is on */
>> DBG_BUGON(err < 0 && err != -ENOMEM);
>> return err;
>>
More information about the Linux-erofs
mailing list