On Mon, Mar 28, 2016 at 7:40 AM, Elliott, Robert (Persistent Memory)
<elliott(a)hpe.com> wrote:
> -----Original Message-----
> From: Linux-nvdimm [mailto:linux-nvdimm-bounces@lists.01.org] On Behalf Of
> Dan Williams
> Sent: Friday, March 25, 2016 5:00 PM
> To: linux-nvdimm(a)lists.01.org
> Subject: [PATCH] libnvdimm, blk: quiet i/o error reporting
>
> I/O errors events have the potential to be a high frequency and a log
> message for each event can swamp the system. This message is also
> redundant with upper layer error reporting.
...
> diff --git a/drivers/nvdimm/blk.c b/drivers/nvdimm/blk.c
> index c8635b3d88a8..26d039879ba2 100644
> --- a/drivers/nvdimm/blk.c
> +++ b/drivers/nvdimm/blk.c
> @@ -189,7 +189,7 @@ static blk_qc_t nd_blk_make_request(struct
> request_queue *q, struct bio *bio)
> err = nd_blk_do_bvec(blk_dev, bip, bvec.bv_page, len,
> bvec.bv_offset, rw, iter.bi_sector);
> if (err) {
> - dev_info(&blk_dev->nsblk->common.dev,
> + dev_dbg(&blk_dev->nsblk->common.dev,
> "io error in %s sector %lld, len
%d,\n",
> (rw == READ) ? "READ" :
"WRITE",
> (unsigned long long) iter.bi_sector, len);
>
The block layer's blk_update_request uses printk_ratelimited to
avoids swamping the output buffers. Since this driver doesn't
call blk_update_request, it might be appropriate to do the same.
printk_ratelimited(KERN_ERR "%s: %s error, dev %s, sector %llu\n",
__func__, error_type, req->rq_disk ?
req->rq_disk->disk_name : "?",
(unsigned long long)blk_rq_pos(req));
I'm aware of printk_ratelimited, I just don't think bio-based drivers
like ndblk should implement their own error reporting for something
block-layer-generic like this.