Something I've run into while working on the locking stuff: what happens if the
above ide_lock_hwgroup(hwgroup) sleeps for long enough to trigger the request
timer?
I'll think about the ramifications of your patch in the context of what I tested
WRT unlocking whenever hwgroup->busy is cleared, and get back to you.
Michael
--