Hello, I warned you : this is too ugly to live ... well, you asked. I left the "if(1) {}" to reverse the patch more easily :) Do you think this is conceptualy correct ? --- dm-mpath.c.orig 2004-01-20 23:05:25.000000000 +0100 +++ dm-mpath.c 2004-01-20 23:15:30.000000000 +0100 @@ -717,7 +717,15 @@ r = __remap_io(m, bio); spin_unlock_irqrestore(&m->path_lock, flags); - if (!r) { + /* + * Queue all errored bio to kmpathd. + * Multipaths can have no valid path for a short + * failover period : process submitting IO should + * not die during the failover. + * FIXME : limit the failed_ios size and/or IO + * buffering duration + */ + if (1) { /* queue for the daemon to resubmit */ spin_lock_irqsave(&m->failed_lock, flags); bio_list_add(&m->failed_ios, bio); regards, cvaroqui