From 503be9865ab6bb195f2c53b591cf0eb5b75708f3 Mon Sep 17 00:00:00 2001 From: Jonathan Corbet Date: Sun, 23 Mar 2003 09:24:21 -0800 Subject: [PATCH] [PATCH] Request queue micropatch FYI, I have gotten some most strange results with the equivalent of: request_queue_t *q = kmalloc(...); blk_init_queue(q, ...) The problem turns out to be that q->backing_dev_info.memory_backed is not initialized, leaving it to be whatever was there before. The end result is that my "driver" never saw write requests, but reads came through fine. Took a while to figure out that one... Here's the fix, for what it's worth. (I had, BTW, tried just zeroing the whole structure in blk_init_queue(), but that makes IDE oops at boot - it sets q->queuedata early). --- drivers/block/ll_rw_blk.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/block/ll_rw_blk.c b/drivers/block/ll_rw_blk.c index 221ef195885c0..fb68973cb4274 100644 --- a/drivers/block/ll_rw_blk.c +++ b/drivers/block/ll_rw_blk.c @@ -201,6 +201,7 @@ void blk_queue_make_request(request_queue_t * q, make_request_fn * mfn) q->make_request_fn = mfn; q->backing_dev_info.ra_pages = (VM_MAX_READAHEAD * 1024) / PAGE_CACHE_SIZE; q->backing_dev_info.state = 0; + q->backing_dev_info.memory_backed = 0; blk_queue_max_sectors(q, MAX_SECTORS); blk_queue_hardsect_size(q, 512); blk_queue_dma_alignment(q, 511); -- 2.53.0