![]() | |||||||||||||
Messages in this thread |
On Tue, Aug 06 2002, Marcin Dalecki wrote: > Uz.ytkownik Jens Axboe napisa?: > > >Agrh god no. So you'll spin waiting for the ioctl to complete? > > > >>From ide_raw_taskfile(), the right way to do it is: > > > > struct request *rq = blk_get_request(...); > > > >This gets _everything_ right. > > > >BTW, _glad to see you got rid of the horrible insert-and-execute stuff > >in ide_raw_taskfile(). That was a layering violation. > > > > > >>OK? > > > > > >Not likely :-) > > Argh. Yes. Thank's for the back-head slap. > I was looking too much at the SCSI code again and got it wrong. > But some time ago I was already thinking about blk_get_request(). > How could I maintain that the blk_get_request() really returns? > blk_get_request() does only drain up to maximum queue depth as > far as I can read the code and then bad things wil happen :-). > Or should I just not worry? You can make it do what you want. From ioctl etc context (or basically anyone calling ide_raw_taskfile() since that will block too), you can use a blocking call to blk_get_request(). So rq = blk_get_request(q, WRITE, __GFP_WAIT); will _never_ return NULL. You are basically throttling on the freelist of the queue, just like any other submitter of I/O. And that, is a Good Thing :-) -- Jens Axboe - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ | ||||||||||||
| Last update: 2005-03-22 12:27 [W:0.087 / U:0.020 seconds] ©2003-2008 Jasper Spaans | |||||||||||||