lkml.org 
[lkml]   [2002]   [Aug]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH] 2.5.30 IDE 113
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 13:27    [W:0.144 / U:1.044 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site