On Mon, Mar 06, 2023 at 03:34:29PM +0100, Klaus Jensen wrote: > From: Joel Granados <[email protected]> > > Move the rounding of bytes read/written into nvme_smart_log which > reports in units of 512 bytes, rounded up in thousands. This is in > preparation for adding the Endurance Group Information log page which > reports in units of billions, rounded up. Awesome. the message now makes more sense. I see that it already has my signed off tag :)
Joel > > Reviewed-by: Keith Busch <[email protected]> > Reviewed-by: Klaus Jensen <[email protected]> > Signed-off-by: Joel Granados <[email protected]> > Signed-off-by: Klaus Jensen <[email protected]> > --- > hw/nvme/ctrl.c | 14 ++++++++------ > 1 file changed, 8 insertions(+), 6 deletions(-) > > diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c > index f25cc2c235e9..99b92ff20b9a 100644 > --- a/hw/nvme/ctrl.c > +++ b/hw/nvme/ctrl.c > @@ -4386,8 +4386,8 @@ static void nvme_set_blk_stats(NvmeNamespace *ns, > struct nvme_stats *stats) > { > BlockAcctStats *s = blk_get_stats(ns->blkconf.blk); > > - stats->units_read += s->nr_bytes[BLOCK_ACCT_READ] >> BDRV_SECTOR_BITS; > - stats->units_written += s->nr_bytes[BLOCK_ACCT_WRITE] >> > BDRV_SECTOR_BITS; > + stats->units_read += s->nr_bytes[BLOCK_ACCT_READ]; > + stats->units_written += s->nr_bytes[BLOCK_ACCT_WRITE]; > stats->read_commands += s->nr_ops[BLOCK_ACCT_READ]; > stats->write_commands += s->nr_ops[BLOCK_ACCT_WRITE]; > } > @@ -4401,6 +4401,7 @@ static uint16_t nvme_smart_info(NvmeCtrl *n, uint8_t > rae, uint32_t buf_len, > uint32_t trans_len; > NvmeNamespace *ns; > time_t current_ms; > + uint64_t u_read, u_written; > > if (off >= sizeof(smart)) { > return NVME_INVALID_FIELD | NVME_DNR; > @@ -4427,10 +4428,11 @@ static uint16_t nvme_smart_info(NvmeCtrl *n, uint8_t > rae, uint32_t buf_len, > trans_len = MIN(sizeof(smart) - off, buf_len); > smart.critical_warning = n->smart_critical_warning; > > - smart.data_units_read[0] = cpu_to_le64(DIV_ROUND_UP(stats.units_read, > - 1000)); > - smart.data_units_written[0] = > cpu_to_le64(DIV_ROUND_UP(stats.units_written, > - 1000)); > + u_read = DIV_ROUND_UP(stats.units_read >> BDRV_SECTOR_BITS, 1000); > + u_written = DIV_ROUND_UP(stats.units_written >> BDRV_SECTOR_BITS, 1000); > + > + smart.data_units_read[0] = cpu_to_le64(u_read); > + smart.data_units_written[0] = cpu_to_le64(u_written); > smart.host_read_commands[0] = cpu_to_le64(stats.read_commands); > smart.host_write_commands[0] = cpu_to_le64(stats.write_commands); > > -- > 2.39.2 >
signature.asc
Description: PGP signature
