Description of problem: All outstanding I/O that the mirror has generated (recovery traffic) needs to be completed before a return from mirror_postsuspend(). These are the rules of device-mapper suspension, and mirroring is not following it. This has cause problems for other targets, and it is thought that it will cause problems for mirroring during device failure scenarios.
Created attachment 126122 [details] proposed (but not final) patch
Created attachment 127183 [details] better patch We must call log_postsuspend only _after_ all recovery work has been handled and all associated calls to the log have been made. Otherwise, the log can not properly suspend, because it may be given work after the log postsuspend call. The fix involves a counter.
committed in stream U4 build 34.26. A test kernel with this patch is available from http://people.redhat.com/~jbaron/rhel4/
An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on the solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHSA-2006-0575.html