On Wed, 24 Feb 2010, Jens Axboe wrote: > > How about plugging the request queue instead of freezing the writeback > > task? Would that work? It should be easy enough for a driver to > > unplug the queue before unregistering its device from within a resume > > method. > > We have specific methods for either freezing of stopping or starting the > queue, perhaps those would be appropriate for suspend/resume actions. It > effectively prevents the queueing function from being called. If there > are dirty pages for the device, then it would not help though, as you > would still get stuck waiting for that IO to complete. If the resume method would restart the queue before unregistering the device, pending dirty pages wouldn't cause any problems. They'd get sent down to the driver and rejected immediately because the device was dead or done. The difficulty with this approach is that it requires individual attention for each block device driver. Either the driver has to freeze/stop/plug the queue during suspend (and restart it during resume) or else the device's writeback task has to be frozen. Can this be encapsulated by a function in the block layer? For example, drivers could call blk_set_hot_unpluggable(bdev) for devices that might need to be unregistered during resume. Then they would become responsible for managing the device's queue. Alan Stern _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm