Hi, On Thu, May 01, 2008 at 09:27:57PM +0900, FUJITA Tomonori wrote: > This is an updated version of the patchset to clean up the asymmetry > of blk_get/put_request usage: > > http://marc.info/?l=linux-ide&m=120882410712466&w=2 > > This patchset removes the code calling blk_put_request against the > requests that are not allocated via blk_get_request. They can use > __GFP_WAIT allocation so we can easily convert them to > use blk_get/put_request properly. > > This patchset enables us to remove the following hack in > blk_put_request: > > /* > * Gee, IDE calls in w/ NULL q. Fix IDE and remove the > * following if (q) test. > */ > if (q) { > spin_lock_irqsave(q->queue_lock, flags); > __blk_put_request(q, req); > spin_unlock_irqrestore(q->queue_lock, flags); > } > > The major changes are: > > - I remove the ide_wait/head_wait path in ide_do_drive_cmd(). It does > the same thing that blk_execute_rq() does. Are you sure about that? Not that I'm that familiar with the blk layer internals but at a glance blk_execute_rq() calls blk_execute_rq_nowait() and in it, the rq is added to the elevator and the device queue is being plugged (4th arg to __elv_add_request(...,1)) and after the last returns the device is being unplugged again: __generic_unplug_device(q). This way no rq's are getting merged and it might hurt performance, IMHO. -- Regards/Gruß, Boris. -- 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