It appears that there is no stopping condition for retrying i/os failed via bio_endio() in dispatch_queued_ios(). The bio_endio() initiated callback to multipath_end_io() ends up __always__ requeuing the failed bio in do_end_io(). The pre-requisites seem to be (1) a storage system class configured with the "queue_if_no_path" feature, (2) an "all-paths-to-LU-down" use case causing the i/o to be queued on the LU multipath queue to begin with, and (3) a dm suspend issued on the mapped device which will Invoke dispatch_queued_ios() to clear out this queue. I haven't had time to work up a patch but it seems like setting a flag in the mpath_io structure the first time an i/o has been queued due to a "no paths" condition would be a sufficient stopping condition from allowing the i/o to be queued again in this manner. While failing these i/os in this manner is not all that desirable in the first place, it is at least a better solution than recursing ad infinitum.