On Sat, 2016-10-15 at 18:54 +1100, Dave Chinner wrote: > On Fri, Oct 14, 2016 at 11:25:13AM -0600, Toshi Kani wrote: : > > +static void dax_iostat_start(struct gendisk *disk, struct iov_iter > > *iter, > > + unsigned long *start) > > +{ > > + int rw = iov_iter_rw(iter); > > + int sec = iov_iter_count(iter) >> 9; > > + int cpu = part_stat_lock(); > > + > > + *start = jiffies; > > + part_round_stats(cpu, &disk->part0); > > + part_stat_inc(cpu, &disk->part0, ios[rw]); > > + part_stat_add(cpu, &disk->part0, sectors[rw], sec); > > + part_inc_in_flight(&disk->part0, rw); > > + part_stat_unlock(); > > +} > > Why reimplement generic_start_io_acct() and generic_end_io_acct()? It was modeled after __nd_iostat_start() / nd_iostart_end(). I agree that we can use generic_start_io_acct() and generic_end_io_acct() here. Should we also change the nd interface to use the generic version as well? Thanks, -Toshi ps. Sorry I realized this comment after sending out v2...��.n��������+%������w��{.n�����{���)��jg��������ݢj����G�������j:+v���w�m������w�������h�����٥