From 2931d638e76688c6b3fb0a286c5070f50c26efae Mon Sep 17 00:00:00 2001 From: Ben Walker Date: Tue, 10 Apr 2018 15:01:55 -0700 Subject: [PATCH] bdev: Configure max_ios_per_timeslice when QoS is initialized This value was recalculated on each time slice. Instead, just set it up right away. Right now QoS is statically configured at creation time for bdevs, which means we can get away with this. Once dynamic configuration is added, events will need to be sent to the QoS thread. Change-Id: I8bde4170f2d882d2c0f5e57a6aa7713d045beb7d Signed-off-by: Ben Walker Reviewed-on: https://review.gerrithub.io/407355 Reviewed-by: Daniel Verkamp Tested-by: SPDK Automated Test System Reviewed-by: Jim Harris --- lib/bdev/bdev.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/bdev/bdev.c b/lib/bdev/bdev.c index c47ad67d4..4cdef03e5 100644 --- a/lib/bdev/bdev.c +++ b/lib/bdev/bdev.c @@ -1007,7 +1007,7 @@ spdk_bdev_config_json(struct spdk_bdev *bdev, struct spdk_json_write_ctx *w) } static void -spdk_bdev_qos_get_max_ios_per_timeslice(struct spdk_bdev_channel *qos_ch) +spdk_bdev_qos_update_max_ios_per_timeslice(struct spdk_bdev_channel *qos_ch) { uint64_t qos_max_ios_per_timeslice = 0; struct spdk_bdev *bdev = qos_ch->bdev; @@ -1025,7 +1025,6 @@ spdk_bdev_channel_poll_qos(void *arg) /* Reset for next round of rate limiting */ ch->io_submitted_this_timeslice = 0; - spdk_bdev_qos_get_max_ios_per_timeslice(ch); _spdk_bdev_qos_io_submit(ch); @@ -1100,7 +1099,8 @@ spdk_bdev_qos_channel_create(struct spdk_bdev *bdev) } bdev->qos_channel->flags |= BDEV_CH_QOS_ENABLED; - spdk_bdev_qos_get_max_ios_per_timeslice(bdev->qos_channel); + spdk_bdev_qos_update_max_ios_per_timeslice(bdev->qos_channel); + bdev->qos_channel->qos_poller = spdk_poller_register( spdk_bdev_channel_poll_qos, bdev->qos_channel,