Messages in this thread | | | Date | Sun, 2 Jul 2000 18:53:53 -0300 (BRT) | From | Marcelo Tosatti <> | Subject | Re: [PATCH] 2.2.17pre9 interactiveness under high IO |
| |
On Mon, 3 Jul 2000, Jens Axboe wrote:
> On Sat, Jul 01 2000, Marcelo Tosatti wrote: > > Hi, > > > > This silly patch avoids that by making ll_rw_block() ignore the IO if the > > request queue is full, causing the process to search for more freeable > > pages instead blocking. > > > > --- fs/buffer.c.orig Sat Jul 1 20:49:19 2000 > > +++ fs/buffer.c Sat Jul 1 20:28:36 2000 > > @@ -1517,7 +1517,7 @@ > > if (wait) > > __wait_on_buffer(p); > > } else if (buffer_dirty(p)) > > - ll_rw_block(WRITE, 1, &p); > > + ll_rw_block(WRITEA, 1, &p); > > } while (tmp != bh); > > > > do { > > This is wrong -- if the buffer is not queued because we are out of > free request slots, it has still already been locked at this point > (and _Req).
if (!req) { if (rw_ahead) goto end_io; req = __get_request_wait(max_req, bh->b_rdev); }
In case we fail to find a free request, bh->b_end_io is called, and it unlocks the buffer.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |