On 2022/05/16 8:36, Christoph Hellwig wrote: > submit_bio uses some extremely convoluted checks and confusing comments > to only account REQ_OP_READ/REQ_OP_WRITE comments. Just switch to the > plain obvious checks instead. > > Signed-off-by: Christoph Hellwig <hch@xxxxxx> > --- > block/blk-core.c | 18 +++++------------- > 1 file changed, 5 insertions(+), 13 deletions(-) > > diff --git a/block/blk-core.c b/block/blk-core.c > index ee18b6a699bdf..48a58c24d452e 100644 > --- a/block/blk-core.c > +++ b/block/blk-core.c > @@ -893,19 +893,11 @@ void submit_bio(struct bio *bio) > if (blkcg_punt_bio_submit(bio)) > return; > > - /* > - * If it's a regular read/write or a barrier with data attached, > - * go through the normal accounting stuff before submission. > - */ > - if (bio_has_data(bio)) { > - unsigned int count = bio_sectors(bio); > - > - if (op_is_write(bio_op(bio))) { > - count_vm_events(PGPGOUT, count); > - } else { > - task_io_account_read(bio->bi_iter.bi_size); > - count_vm_events(PGPGIN, count); > - } > + if (bio_op(bio) == REQ_OP_READ) { > + task_io_account_read(bio->bi_iter.bi_size); > + count_vm_events(PGPGIN, bio_sectors(bio)); > + } else if (bio_op(bio) == WRITE) { I know it is the same value, but for consistency, wouldn't it be better to use REQ_OP_WRITE here ? > + count_vm_events(PGPGOUT, bio_sectors(bio)); > } > > /* -- Damien Le Moal Western Digital Research