I confirm a robust behaviour now with take 3. Here is a take 4 that move to an appropriate "best effort mode", ie always return success.
The point is, whenever DM start submitting io the an asleep controler, precede with a START command. If it fails ... too bad, the consecutive io will fail and DM will try another PG. Had to do that because take 3 interprets an error where the controler switch have correctly happened.
I guess we could suppress the sense buffer allocation if this "best effort mode" is agreed on.
I also added path->dev->name to DMINFO() calls to make for a more informative output.
ok thanks I will add more output like that to other print statements.