[lkml]   [2002]   [Aug]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    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
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2005-03-22 13:27    [W:0.022 / U:7.364 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site