nvme-pci: Rate limit the nvme timeout warnings
authorKeith Busch <keith.busch@intel.com>
Thu, 24 May 2018 20:34:55 +0000 (14:34 -0600)
committerChristoph Hellwig <hch@lst.de>
Wed, 30 May 2018 06:04:25 +0000 (08:04 +0200)
The block layer's timeout handling currently prevents drivers from
completing commands outside the timeout callback once blk-mq decides
they've expired. If a device breaks, this could potentially create many
thousands of timed out commands. There's nothing of value to be gleaned
from observing each of those messages, so this patch adds a rate limit
on them.

Signed-off-by: Keith Busch <keith.busch@intel.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
drivers/nvme/host/pci.c

index bca8f52..9cd62a1 100644 (file)
@@ -1227,7 +1227,7 @@ static enum blk_eh_timer_return nvme_timeout(struct request *req, bool reserved)
        switch (dev->ctrl.state) {
        case NVME_CTRL_CONNECTING:
        case NVME_CTRL_RESETTING:
-               dev_warn(dev->ctrl.device,
+               dev_warn_ratelimited(dev->ctrl.device,
                         "I/O %d QID %d timeout, disable controller\n",
                         req->tag, nvmeq->qid);
                nvme_dev_disable(dev, false);