All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jaegeuk Kim <jaegeuk@kernel.org>
To: Chao Yu <chao@kernel.org>
Cc: kernel test robot <lkp@intel.com>,
	linux-f2fs-devel@lists.sourceforge.net,
	Dan Carpenter <error27@gmail.com>,
	linux-kernel@vger.kernel.org, Yangtao Li <frank.li@vivo.com>
Subject: Re: [f2fs-dev] [PATCH v3 2/2] f2fs: use iostat_lat_type directly as a parameter in the iostat_update_and_unbind_ctx()
Date: Tue, 31 Jan 2023 10:53:48 -0800	[thread overview]
Message-ID: <Y9ljvM5aLxgpK3ZF@google.com> (raw)
In-Reply-To: <855c7c54-57f6-dcf8-9218-0dba6e216fd4@kernel.org>

On 01/31, Chao Yu wrote:
> On 2023/1/21 0:16, Yangtao Li wrote:
> > Convert to use iostat_lat_type as parameter instead of raw number.
> > BTW, move NUM_PREALLOC_IOSTAT_CTXS to the header file, and rename
> > iotype to page_type to match the definition.
> > 
> > Reported-by: kernel test robot <lkp@intel.com>
> > Reported-by: Dan Carpenter <error27@gmail.com>
> > Signed-off-by: Yangtao Li <frank.li@vivo.com>
> > ---
> > v3:
> > -convert to f2fs_warn()
> >   fs/f2fs/data.c   |  4 ++--
> >   fs/f2fs/iostat.c | 39 ++++++++++++++++-----------------------
> >   fs/f2fs/iostat.h | 19 ++++++++++---------
> >   3 files changed, 28 insertions(+), 34 deletions(-)
> > 
> > diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
> > index 1645b8a1b904..710d4acde187 100644
> > --- a/fs/f2fs/data.c
> > +++ b/fs/f2fs/data.c
> > @@ -292,7 +292,7 @@ static void f2fs_read_end_io(struct bio *bio)
> >   	struct bio_post_read_ctx *ctx;
> >   	bool intask = in_task();
> > -	iostat_update_and_unbind_ctx(bio, 0);
> > +	iostat_update_and_unbind_ctx(bio, READ_IO);
> >   	ctx = bio->bi_private;
> >   	if (time_to_inject(sbi, FAULT_READ_IO))
> > @@ -330,7 +330,7 @@ static void f2fs_write_end_io(struct bio *bio)
> >   	struct bio_vec *bvec;
> >   	struct bvec_iter_all iter_all;
> > -	iostat_update_and_unbind_ctx(bio, 1);
> > +	iostat_update_and_unbind_ctx(bio, bio->bi_opf & REQ_SYNC ? WRITE_SYNC_IO : WRITE_ASYNC_IO);
> >   	sbi = bio->bi_private;
> >   	if (time_to_inject(sbi, FAULT_WRITE_IO))
> > diff --git a/fs/f2fs/iostat.c b/fs/f2fs/iostat.c
> > index 96637756eae8..c767a2e7d5a9 100644
> > --- a/fs/f2fs/iostat.c
> > +++ b/fs/f2fs/iostat.c
> > @@ -14,7 +14,6 @@
> >   #include "iostat.h"
> >   #include <trace/events/f2fs.h>
> > -#define NUM_PREALLOC_IOSTAT_CTXS	128
> >   static struct kmem_cache *bio_iostat_ctx_cache;
> >   static mempool_t *bio_iostat_ctx_pool;
> > @@ -210,53 +209,47 @@ void f2fs_update_iostat(struct f2fs_sb_info *sbi, struct inode *inode,
> >   }
> >   static inline void __update_iostat_latency(struct bio_iostat_ctx *iostat_ctx,
> > -				int rw, bool is_sync)
> > +				enum iostat_lat_type lat_type)
> >   {
> >   	unsigned long ts_diff;
> > -	unsigned int iotype = iostat_ctx->type;
> > +	unsigned int page_type = iostat_ctx->type;
> >   	struct f2fs_sb_info *sbi = iostat_ctx->sbi;
> >   	struct iostat_lat_info *io_lat = sbi->iostat_io_lat;
> > -	int idx;
> >   	unsigned long flags;
> >   	if (!sbi->iostat_enable)
> >   		return;
> >   	ts_diff = jiffies - iostat_ctx->submit_ts;
> > -	if (iotype == META_FLUSH) {
> > -		iotype = META;
> > -	} else if (iotype >= NR_PAGE_TYPE) {
> > -		f2fs_warn(sbi, "%s: %d over NR_PAGE_TYPE", __func__, iotype);
> > +	if (page_type == META_FLUSH) {
> > +		page_type = META;
> > +	} else if (page_type >= NR_PAGE_TYPE) {
> > +		f2fs_warn(sbi, "%s: %d over NR_PAGE_TYPE", __func__, page_type);
> >   		return;
> >   	}
> > -	if (rw == 0) {
> > -		idx = READ_IO;
> > -	} else {
> > -		if (is_sync)
> > -			idx = WRITE_SYNC_IO;
> > -		else
> > -			idx = WRITE_ASYNC_IO;
> > +	if (lat_type >= MAX_IO_TYPE) {
> > +		f2fs_warn(sbi, "%s: %d over MAX_IO_TYPE", __func__, lat_type);
> > +		return;
> >   	}
> >   	spin_lock_irqsave(&sbi->iostat_lat_lock, flags);
> > -	io_lat->sum_lat[idx][iotype] += ts_diff;
> > -	io_lat->bio_cnt[idx][iotype]++;
> > -	if (ts_diff > io_lat->peak_lat[idx][iotype])
> > -		io_lat->peak_lat[idx][iotype] = ts_diff;
> > +	io_lat->sum_lat[lat_type][page_type] += ts_diff;
> > +	io_lat->bio_cnt[lat_type][page_type]++;
> > +	if (ts_diff > io_lat->peak_lat[lat_type][page_type])
> > +		io_lat->peak_lat[lat_type][page_type] = ts_diff;
> >   	spin_unlock_irqrestore(&sbi->iostat_lat_lock, flags);
> >   }
> > -void iostat_update_and_unbind_ctx(struct bio *bio, int rw)
> > +void iostat_update_and_unbind_ctx(struct bio *bio, enum iostat_lat_type lat_type)
> >   {
> >   	struct bio_iostat_ctx *iostat_ctx = bio->bi_private;
> > -	bool is_sync = bio->bi_opf & REQ_SYNC;
> > -	if (rw == 0)
> > +	if (lat_type == READ_IO)
> >   		bio->bi_private = iostat_ctx->post_read_ctx;
> >   	else
> >   		bio->bi_private = iostat_ctx->sbi;
> > -	__update_iostat_latency(iostat_ctx, rw, is_sync);
> > +	__update_iostat_latency(iostat_ctx, lat_type);
> >   	mempool_free(iostat_ctx, bio_iostat_ctx_pool);
> >   }
> > diff --git a/fs/f2fs/iostat.h b/fs/f2fs/iostat.h
> > index 2c048307b6e0..1f827a2fe6b2 100644
> > --- a/fs/f2fs/iostat.h
> > +++ b/fs/f2fs/iostat.h
> > @@ -8,20 +8,21 @@
> >   struct bio_post_read_ctx;
> > +enum iostat_lat_type {
> > +	READ_IO = 0,
> > +	WRITE_SYNC_IO,
> > +	WRITE_ASYNC_IO,
> > +	MAX_IO_TYPE,
> > +};
> 
> How about adjusting iostat_lat[{0,1,2}] to iostat_lat[{READ_IO,WRITE_SYNC_IO,WRITE_ASYNC_IO}]
> in tracepoint function.
> 
> 	TP_fast_assign(
> 		__entry->dev		= sbi->sb->s_dev;
> 		__entry->d_rd_peak	= iostat_lat[0][DATA].peak_lat;
> 		__entry->d_rd_avg	= iostat_lat[0][DATA].avg_lat;
> 		__entry->d_rd_cnt	= iostat_lat[0][DATA].cnt;
> 		__entry->n_rd_peak	= iostat_lat[0][NODE].peak_lat;
> 		__entry->n_rd_avg	= iostat_lat[0][NODE].avg_lat;
> 		__entry->n_rd_cnt	= iostat_lat[0][NODE].cnt;
> 		__entry->m_rd_peak	= iostat_lat[0][META].peak_lat;
> 		__entry->m_rd_avg	= iostat_lat[0][META].avg_lat;
> 		__entry->m_rd_cnt	= iostat_lat[0][META].cnt;
> 		__entry->d_wr_s_peak	= iostat_lat[1][DATA].peak_lat;
> 		__entry->d_wr_s_avg	= iostat_lat[1][DATA].avg_lat;
> 		__entry->d_wr_s_cnt	= iostat_lat[1][DATA].cnt;
> 		__entry->n_wr_s_peak	= iostat_lat[1][NODE].peak_lat;
> 		__entry->n_wr_s_avg	= iostat_lat[1][NODE].avg_lat;
> 		__entry->n_wr_s_cnt	= iostat_lat[1][NODE].cnt;
> 		__entry->m_wr_s_peak	= iostat_lat[1][META].peak_lat;
> 		__entry->m_wr_s_avg	= iostat_lat[1][META].avg_lat;
> 		__entry->m_wr_s_cnt	= iostat_lat[1][META].cnt;
> 		__entry->d_wr_as_peak	= iostat_lat[2][DATA].peak_lat;
> 		__entry->d_wr_as_avg	= iostat_lat[2][DATA].avg_lat;
> 		__entry->d_wr_as_cnt	= iostat_lat[2][DATA].cnt;
> 		__entry->n_wr_as_peak	= iostat_lat[2][NODE].peak_lat;
> 		__entry->n_wr_as_avg	= iostat_lat[2][NODE].avg_lat;
> 		__entry->n_wr_as_cnt	= iostat_lat[2][NODE].cnt;
> 		__entry->m_wr_as_peak	= iostat_lat[2][META].peak_lat;
> 		__entry->m_wr_as_avg	= iostat_lat[2][META].avg_lat;
> 		__entry->m_wr_as_cnt	= iostat_lat[2][META].cnt;
> 	),

Yangtao,

Could you please send another patch to address the Choa's suggestion?

Thanks,

> 
> Thanks,
> 
> > +
> >   #ifdef CONFIG_F2FS_IOSTAT
> > +#define NUM_PREALLOC_IOSTAT_CTXS	128
> >   #define DEFAULT_IOSTAT_PERIOD_MS	3000
> >   #define MIN_IOSTAT_PERIOD_MS		100
> >   /* maximum period of iostat tracing is 1 day */
> >   #define MAX_IOSTAT_PERIOD_MS		8640000
> > -enum {
> > -	READ_IO,
> > -	WRITE_SYNC_IO,
> > -	WRITE_ASYNC_IO,
> > -	MAX_IO_TYPE,
> > -};
> > -
> >   struct iostat_lat_info {
> >   	unsigned long sum_lat[MAX_IO_TYPE][NR_PAGE_TYPE];	/* sum of io latencies */
> >   	unsigned long peak_lat[MAX_IO_TYPE][NR_PAGE_TYPE];	/* peak io latency */
> > @@ -57,7 +58,7 @@ static inline struct bio_post_read_ctx *get_post_read_ctx(struct bio *bio)
> >   	return iostat_ctx->post_read_ctx;
> >   }
> > -extern void iostat_update_and_unbind_ctx(struct bio *bio, int rw);
> > +extern void iostat_update_and_unbind_ctx(struct bio *bio, enum iostat_lat_type type);
> >   extern void iostat_alloc_and_bind_ctx(struct f2fs_sb_info *sbi,
> >   		struct bio *bio, struct bio_post_read_ctx *ctx);
> >   extern int f2fs_init_iostat_processing(void);
> > @@ -67,7 +68,7 @@ extern void f2fs_destroy_iostat(struct f2fs_sb_info *sbi);
> >   #else
> >   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_update_and_unbind_ctx(struct bio *bio, enum iostat_lat_type type) {}
> >   static inline void iostat_alloc_and_bind_ctx(struct f2fs_sb_info *sbi,
> >   		struct bio *bio, struct bio_post_read_ctx *ctx) {}
> >   static inline void iostat_update_submit_ctx(struct bio *bio,


_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

WARNING: multiple messages have this Message-ID (diff)
From: Jaegeuk Kim <jaegeuk@kernel.org>
To: Chao Yu <chao@kernel.org>
Cc: Yangtao Li <frank.li@vivo.com>,
	linux-f2fs-devel@lists.sourceforge.net,
	linux-kernel@vger.kernel.org, kernel test robot <lkp@intel.com>,
	Dan Carpenter <error27@gmail.com>
Subject: Re: [PATCH v3 2/2] f2fs: use iostat_lat_type directly as a parameter in the iostat_update_and_unbind_ctx()
Date: Tue, 31 Jan 2023 10:53:48 -0800	[thread overview]
Message-ID: <Y9ljvM5aLxgpK3ZF@google.com> (raw)
In-Reply-To: <855c7c54-57f6-dcf8-9218-0dba6e216fd4@kernel.org>

On 01/31, Chao Yu wrote:
> On 2023/1/21 0:16, Yangtao Li wrote:
> > Convert to use iostat_lat_type as parameter instead of raw number.
> > BTW, move NUM_PREALLOC_IOSTAT_CTXS to the header file, and rename
> > iotype to page_type to match the definition.
> > 
> > Reported-by: kernel test robot <lkp@intel.com>
> > Reported-by: Dan Carpenter <error27@gmail.com>
> > Signed-off-by: Yangtao Li <frank.li@vivo.com>
> > ---
> > v3:
> > -convert to f2fs_warn()
> >   fs/f2fs/data.c   |  4 ++--
> >   fs/f2fs/iostat.c | 39 ++++++++++++++++-----------------------
> >   fs/f2fs/iostat.h | 19 ++++++++++---------
> >   3 files changed, 28 insertions(+), 34 deletions(-)
> > 
> > diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
> > index 1645b8a1b904..710d4acde187 100644
> > --- a/fs/f2fs/data.c
> > +++ b/fs/f2fs/data.c
> > @@ -292,7 +292,7 @@ static void f2fs_read_end_io(struct bio *bio)
> >   	struct bio_post_read_ctx *ctx;
> >   	bool intask = in_task();
> > -	iostat_update_and_unbind_ctx(bio, 0);
> > +	iostat_update_and_unbind_ctx(bio, READ_IO);
> >   	ctx = bio->bi_private;
> >   	if (time_to_inject(sbi, FAULT_READ_IO))
> > @@ -330,7 +330,7 @@ static void f2fs_write_end_io(struct bio *bio)
> >   	struct bio_vec *bvec;
> >   	struct bvec_iter_all iter_all;
> > -	iostat_update_and_unbind_ctx(bio, 1);
> > +	iostat_update_and_unbind_ctx(bio, bio->bi_opf & REQ_SYNC ? WRITE_SYNC_IO : WRITE_ASYNC_IO);
> >   	sbi = bio->bi_private;
> >   	if (time_to_inject(sbi, FAULT_WRITE_IO))
> > diff --git a/fs/f2fs/iostat.c b/fs/f2fs/iostat.c
> > index 96637756eae8..c767a2e7d5a9 100644
> > --- a/fs/f2fs/iostat.c
> > +++ b/fs/f2fs/iostat.c
> > @@ -14,7 +14,6 @@
> >   #include "iostat.h"
> >   #include <trace/events/f2fs.h>
> > -#define NUM_PREALLOC_IOSTAT_CTXS	128
> >   static struct kmem_cache *bio_iostat_ctx_cache;
> >   static mempool_t *bio_iostat_ctx_pool;
> > @@ -210,53 +209,47 @@ void f2fs_update_iostat(struct f2fs_sb_info *sbi, struct inode *inode,
> >   }
> >   static inline void __update_iostat_latency(struct bio_iostat_ctx *iostat_ctx,
> > -				int rw, bool is_sync)
> > +				enum iostat_lat_type lat_type)
> >   {
> >   	unsigned long ts_diff;
> > -	unsigned int iotype = iostat_ctx->type;
> > +	unsigned int page_type = iostat_ctx->type;
> >   	struct f2fs_sb_info *sbi = iostat_ctx->sbi;
> >   	struct iostat_lat_info *io_lat = sbi->iostat_io_lat;
> > -	int idx;
> >   	unsigned long flags;
> >   	if (!sbi->iostat_enable)
> >   		return;
> >   	ts_diff = jiffies - iostat_ctx->submit_ts;
> > -	if (iotype == META_FLUSH) {
> > -		iotype = META;
> > -	} else if (iotype >= NR_PAGE_TYPE) {
> > -		f2fs_warn(sbi, "%s: %d over NR_PAGE_TYPE", __func__, iotype);
> > +	if (page_type == META_FLUSH) {
> > +		page_type = META;
> > +	} else if (page_type >= NR_PAGE_TYPE) {
> > +		f2fs_warn(sbi, "%s: %d over NR_PAGE_TYPE", __func__, page_type);
> >   		return;
> >   	}
> > -	if (rw == 0) {
> > -		idx = READ_IO;
> > -	} else {
> > -		if (is_sync)
> > -			idx = WRITE_SYNC_IO;
> > -		else
> > -			idx = WRITE_ASYNC_IO;
> > +	if (lat_type >= MAX_IO_TYPE) {
> > +		f2fs_warn(sbi, "%s: %d over MAX_IO_TYPE", __func__, lat_type);
> > +		return;
> >   	}
> >   	spin_lock_irqsave(&sbi->iostat_lat_lock, flags);
> > -	io_lat->sum_lat[idx][iotype] += ts_diff;
> > -	io_lat->bio_cnt[idx][iotype]++;
> > -	if (ts_diff > io_lat->peak_lat[idx][iotype])
> > -		io_lat->peak_lat[idx][iotype] = ts_diff;
> > +	io_lat->sum_lat[lat_type][page_type] += ts_diff;
> > +	io_lat->bio_cnt[lat_type][page_type]++;
> > +	if (ts_diff > io_lat->peak_lat[lat_type][page_type])
> > +		io_lat->peak_lat[lat_type][page_type] = ts_diff;
> >   	spin_unlock_irqrestore(&sbi->iostat_lat_lock, flags);
> >   }
> > -void iostat_update_and_unbind_ctx(struct bio *bio, int rw)
> > +void iostat_update_and_unbind_ctx(struct bio *bio, enum iostat_lat_type lat_type)
> >   {
> >   	struct bio_iostat_ctx *iostat_ctx = bio->bi_private;
> > -	bool is_sync = bio->bi_opf & REQ_SYNC;
> > -	if (rw == 0)
> > +	if (lat_type == READ_IO)
> >   		bio->bi_private = iostat_ctx->post_read_ctx;
> >   	else
> >   		bio->bi_private = iostat_ctx->sbi;
> > -	__update_iostat_latency(iostat_ctx, rw, is_sync);
> > +	__update_iostat_latency(iostat_ctx, lat_type);
> >   	mempool_free(iostat_ctx, bio_iostat_ctx_pool);
> >   }
> > diff --git a/fs/f2fs/iostat.h b/fs/f2fs/iostat.h
> > index 2c048307b6e0..1f827a2fe6b2 100644
> > --- a/fs/f2fs/iostat.h
> > +++ b/fs/f2fs/iostat.h
> > @@ -8,20 +8,21 @@
> >   struct bio_post_read_ctx;
> > +enum iostat_lat_type {
> > +	READ_IO = 0,
> > +	WRITE_SYNC_IO,
> > +	WRITE_ASYNC_IO,
> > +	MAX_IO_TYPE,
> > +};
> 
> How about adjusting iostat_lat[{0,1,2}] to iostat_lat[{READ_IO,WRITE_SYNC_IO,WRITE_ASYNC_IO}]
> in tracepoint function.
> 
> 	TP_fast_assign(
> 		__entry->dev		= sbi->sb->s_dev;
> 		__entry->d_rd_peak	= iostat_lat[0][DATA].peak_lat;
> 		__entry->d_rd_avg	= iostat_lat[0][DATA].avg_lat;
> 		__entry->d_rd_cnt	= iostat_lat[0][DATA].cnt;
> 		__entry->n_rd_peak	= iostat_lat[0][NODE].peak_lat;
> 		__entry->n_rd_avg	= iostat_lat[0][NODE].avg_lat;
> 		__entry->n_rd_cnt	= iostat_lat[0][NODE].cnt;
> 		__entry->m_rd_peak	= iostat_lat[0][META].peak_lat;
> 		__entry->m_rd_avg	= iostat_lat[0][META].avg_lat;
> 		__entry->m_rd_cnt	= iostat_lat[0][META].cnt;
> 		__entry->d_wr_s_peak	= iostat_lat[1][DATA].peak_lat;
> 		__entry->d_wr_s_avg	= iostat_lat[1][DATA].avg_lat;
> 		__entry->d_wr_s_cnt	= iostat_lat[1][DATA].cnt;
> 		__entry->n_wr_s_peak	= iostat_lat[1][NODE].peak_lat;
> 		__entry->n_wr_s_avg	= iostat_lat[1][NODE].avg_lat;
> 		__entry->n_wr_s_cnt	= iostat_lat[1][NODE].cnt;
> 		__entry->m_wr_s_peak	= iostat_lat[1][META].peak_lat;
> 		__entry->m_wr_s_avg	= iostat_lat[1][META].avg_lat;
> 		__entry->m_wr_s_cnt	= iostat_lat[1][META].cnt;
> 		__entry->d_wr_as_peak	= iostat_lat[2][DATA].peak_lat;
> 		__entry->d_wr_as_avg	= iostat_lat[2][DATA].avg_lat;
> 		__entry->d_wr_as_cnt	= iostat_lat[2][DATA].cnt;
> 		__entry->n_wr_as_peak	= iostat_lat[2][NODE].peak_lat;
> 		__entry->n_wr_as_avg	= iostat_lat[2][NODE].avg_lat;
> 		__entry->n_wr_as_cnt	= iostat_lat[2][NODE].cnt;
> 		__entry->m_wr_as_peak	= iostat_lat[2][META].peak_lat;
> 		__entry->m_wr_as_avg	= iostat_lat[2][META].avg_lat;
> 		__entry->m_wr_as_cnt	= iostat_lat[2][META].cnt;
> 	),

Yangtao,

Could you please send another patch to address the Choa's suggestion?

Thanks,

> 
> Thanks,
> 
> > +
> >   #ifdef CONFIG_F2FS_IOSTAT
> > +#define NUM_PREALLOC_IOSTAT_CTXS	128
> >   #define DEFAULT_IOSTAT_PERIOD_MS	3000
> >   #define MIN_IOSTAT_PERIOD_MS		100
> >   /* maximum period of iostat tracing is 1 day */
> >   #define MAX_IOSTAT_PERIOD_MS		8640000
> > -enum {
> > -	READ_IO,
> > -	WRITE_SYNC_IO,
> > -	WRITE_ASYNC_IO,
> > -	MAX_IO_TYPE,
> > -};
> > -
> >   struct iostat_lat_info {
> >   	unsigned long sum_lat[MAX_IO_TYPE][NR_PAGE_TYPE];	/* sum of io latencies */
> >   	unsigned long peak_lat[MAX_IO_TYPE][NR_PAGE_TYPE];	/* peak io latency */
> > @@ -57,7 +58,7 @@ static inline struct bio_post_read_ctx *get_post_read_ctx(struct bio *bio)
> >   	return iostat_ctx->post_read_ctx;
> >   }
> > -extern void iostat_update_and_unbind_ctx(struct bio *bio, int rw);
> > +extern void iostat_update_and_unbind_ctx(struct bio *bio, enum iostat_lat_type type);
> >   extern void iostat_alloc_and_bind_ctx(struct f2fs_sb_info *sbi,
> >   		struct bio *bio, struct bio_post_read_ctx *ctx);
> >   extern int f2fs_init_iostat_processing(void);
> > @@ -67,7 +68,7 @@ extern void f2fs_destroy_iostat(struct f2fs_sb_info *sbi);
> >   #else
> >   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_update_and_unbind_ctx(struct bio *bio, enum iostat_lat_type type) {}
> >   static inline void iostat_alloc_and_bind_ctx(struct f2fs_sb_info *sbi,
> >   		struct bio *bio, struct bio_post_read_ctx *ctx) {}
> >   static inline void iostat_update_submit_ctx(struct bio *bio,

  reply	other threads:[~2023-01-31 18:54 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-20 16:16 [f2fs-dev] [PATCH v3 1/2] f2fs: fix to avoid potential memory corruption in __update_iostat_latency() Yangtao Li via Linux-f2fs-devel
2023-01-20 16:16 ` Yangtao Li
2023-01-20 16:16 ` [f2fs-dev] [PATCH v3 2/2] f2fs: use iostat_lat_type directly as a parameter in the iostat_update_and_unbind_ctx() Yangtao Li via Linux-f2fs-devel
2023-01-20 16:16   ` Yangtao Li
2023-01-31  1:55   ` [f2fs-dev] " Chao Yu
2023-01-31  1:55     ` Chao Yu
2023-01-31 18:53     ` Jaegeuk Kim [this message]
2023-01-31 18:53       ` Jaegeuk Kim
2023-01-31  1:40 ` [f2fs-dev] [PATCH v3 1/2] f2fs: fix to avoid potential memory corruption in __update_iostat_latency() Chao Yu
2023-01-31  1:40   ` Chao Yu
2023-01-31 19:10 ` [f2fs-dev] " patchwork-bot+f2fs
2023-01-31 19:10   ` patchwork-bot+f2fs

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Y9ljvM5aLxgpK3ZF@google.com \
    --to=jaegeuk@kernel.org \
    --cc=chao@kernel.org \
    --cc=error27@gmail.com \
    --cc=frank.li@vivo.com \
    --cc=linux-f2fs-devel@lists.sourceforge.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lkp@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.