patch: fix 30 second hang while resuming

Anish Mistry mistry.7 at osu.edu
Fri Mar 4 13:51:28 PST 2005


On Sunday 27 February 2005 06:12 pm, Nate Lawson wrote:
> Nate Lawson wrote:
> > My system hangs a long time in ata_generic_reset() while
> > resuming.  I did some hunting and found that the loop was running
> > for the full 310 * 100 ms (31 seconds).  The bug is that the loop
> > never exits when mask goes to 0 even though this is a termination
> > condition (see end of the loop where the code masks off 1 and 2).
> >
> > The attached patch fixes this by exiting when the mask is set to
> > 0 instead of looping the full 31 seconds.  This is correct since
> > setting the mask to 0 is how the loop marks master/slave "done". 
> > It also has a minor whitespace fix.
>
> Apologies, the last patch was not quite right.  You need to check
> that both status values are not "busy" as well as the mask.  This
> check could be merged in elsewhere as well.  This was just a
> convenient place to put it.
>
> Please use the attached patch instead.
This works well for me.  Is this going to be committed?

-- 
Anish Mistry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-current/attachments/20050304/c9ff650b/attachment-0001.bin


More information about the freebsd-current mailing list