> -----Original Message----- > From: Mikulas Patocka <mpatocka@xxxxxxxxxx> > Sent: Wednesday, September 4, 2019 4:49 PM > On Mon, 2 Sep 2019, Huaisheng Ye wrote: > > > From: Huaisheng Ye <yehs1@xxxxxxxxxx> > > > > The array bio_in_progress[2] only have chance to be increased and > > decreased with ssd mode. For pmem mode, they are not involved at all. > > So skip writecache_wait_for_ios in writecache_flush for pmem. > > > > Suggested-by: Doris Yu <tyu1@xxxxxxxxxx> > > Signed-off-by: Huaisheng Ye <yehs1@xxxxxxxxxx> > > --- > > drivers/md/dm-writecache.c | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/md/dm-writecache.c b/drivers/md/dm-writecache.c > > index c481947..d06b8aa 100644 > > --- a/drivers/md/dm-writecache.c > > +++ b/drivers/md/dm-writecache.c > > @@ -726,7 +726,8 @@ static void writecache_flush(struct dm_writecache *wc) > > } > > writecache_commit_flushed(wc); > > > > - writecache_wait_for_ios(wc, WRITE); > > + if (!WC_MODE_PMEM(wc)) > > + writecache_wait_for_ios(wc, WRITE); > > > > wc->seq_count++; > > pmem_assign(sb(wc)->seq_count, cpu_to_le64(wc->seq_count)); > > -- > > 1.8.3.1 > > I think this is not needed - wait_event in writecache_wait_for_ios exits > immediatelly if the condition is true. > > This code path is not so hot that we would need microoptimizations like this to > avoid function calls. Hi Mikulas, Thanks for your reply, I see what you mean, but I can't agree with you. For pmem mode, this code path (writecache_flush) is much more hot than SSD mode. Because in the code, the AUTOCOMMIT_BLOCKS_PMEM has been defined to 64, which means if more than 64 blocks have been inserted to cache device, also called uncommitted, writecache_flush would be called. Otherwise, there is a timer callback function will be called every 1000 milliseconds. #define AUTOCOMMIT_BLOCKS_SSD 65536 #define AUTOCOMMIT_BLOCKS_PMEM 64 #define AUTOCOMMIT_MSEC 1000 So when dm-writecache running in working mode, there are continuous WRITE operations has been mapped to writecache_map, writecache_flush will be used much more often than SSD mode. Cheers, Huaisheng Ye -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel