Hello, On Fri, Feb 18, 2011 at 10:28:51PM +0530, viresh kumar wrote: > > Hmmm... so, now there's a work item which requeues itself. That can't > > be reliably stopped from freeze() as it's called with host lock held > > without process context. I think you should override > > ->error_handler() which looks like the following, > > actually i am disabling controller in freeze. After which we will > surely get timeout here and > so finally we will get an error in this work. Wouldn't that be enough? Hmmm... libata usually invokes EH right away after freeze(). It'll abort everything in flight and wake up the EH. freeze()'s job is to _try_ to quiesce the controller until reset and used when libata isn't sure which state the port is in, so I think you would still need to kill the work items on entry to EH. BTW, have you tested the EH paths? Inducing fake failures from interrupt handler and let things just slide so that timeout happens should do the trick. Thanks. -- tejun -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html