[dm-devel] dm-mq and end_clone_request()
Bart Van Assche
bart.vanassche at sandisk.com
Mon Jul 25 22:00:55 UTC 2016
On 07/25/2016 02:23 PM, Mike Snitzer wrote:
> So I'd be curious to know if your debugging has enabled you to identify
> exactly where in the dm-mapth.c code the -EIO return is being
> established. do_end_io() is the likely candidate -- but again the
> __must_push_back() check should prevent it and DM_ENDIO_REQUEUE should
> be returned.
Hello Mike,
Thanks for looking further into this. The pr_info() statement that I had
added in the following code block in __multipath_map() fired what told
me that the following code block triggered the -EIO return:
if (!pgpath) {
if (!must_push_back(m))
r = -EIO; /* Failed */
pr_info("%s(): (a) returning %d\n", __func__, r);
return r;
}
From the system log:
kernel: mpath 254:0: queue_if_no_path 1 -> 0
kernel: __multipath_map(): (a) returning -5
The code that I had added in queue_if_no_path() is as follows:
old = test_bit(MPATHF_QUEUE_IF_NO_PATH, &m->flags);
[ ... ]
pr_info("mpath %s: queue_if_no_path %d -> %d\n",
dm_device_name(dm_table_get_md(m->ti->table)), old,
queue_if_no_path);
Bart.
More information about the dm-devel
mailing list