Messages in this thread Patch in this message | | | Date | Tue, 1 Jul 1997 16:36:07 +0200 (MET DST) | From | Pavel Krauz <> | Subject | Bug in write request flushing !!! |
| |
Hi all
I'm currently working on small extension to monitor kernel activities. I noticed that write disk requests successfully reach to the device driver request queue but if there isn't generated any read request from the time the write requests was put into queue, they stay in the queue and device driver isn't kicked to process them. On my machine I discovered that write requests could stay in device request queue forever, until some read request or sync is made - Ohhh, Ahhh. These write requests are made by bdflush and the sys_bdflush syscall. There is missing the kick to the device driver.
Here is a one line patch which solves this bug for 2.0.30. Probably similar patch should be applied to 2.1.43 too.
Please reply personally
with regards Pavel Krauz <kra@elanor.cz>
--- fs/buffer.c.bak Tue Jul 1 15:29:16 1997 +++ fs/buffer.c Tue Jul 1 15:31:36 1997 @@ -1529,6 +1529,7 @@ bh->b_count--; } } + run_task_queue(&tq_disk); #ifdef DEBUG if (ncount) printk("sync_old_buffers: %d dirty buffers not on dirty list\n", ncount); printk("Wrote %d/%d buffers\n", nwritten, ndirty);
| |