On Sunday 03 May 2009 17:42:16 Matthew Wilcox wrote: > On Sun, May 03, 2009 at 06:02:51PM +0300, Boaz Harrosh wrote: > > I agree with Hugh. The allocation is done at, too-low in the food chain. > > (And that free of buffer at upper layer allocated by lower layer). > > > > I think you need to separate the: "does lld need buffer, what size" > > from the "here is buffer prepare", so upper layer that can sleep does > > sleep. > > So you want two function pointers in the request queue relating to discard? > > > In all other buffer needing operations the allocation is done before > > submission of request, No? > > It's not true for the flush request (the example I quoted). Obviously, > the solution adopted here by IDE is Bad and Wrong ... When speaking about "the solution" do you mean that quick & ugly hack that I needed to fix the unexpected regression during late -rc cycle? ;) The proper solution would involve adding 'struct ide_cmd flush_cmd' to ide_drive_t but I never got to verify/inquiry that is OK with the block layer (if there can be only one flush rq outstanding or if we can have both q->pre_flush_rq and q->post_flush_rq queued at the same time)... Thanks, Bart -- 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