Nick Piggin <piggin@cyberone.com.au> wrote: > > > > Andrew Morton wrote: > > >Nick Piggin <piggin@cyberone.com.au> wrote: > > > >>Even with this patch, it might still be a good idea to allow > >>pdflush to disregard the limits... > >> > > > >Has it been confirmed that pdflush is blocking in get_request_wait()? I > >guess that can happen very occasionally because we don't bother with any > >locking around there but if it's happening a lot then something is bust. > > > > > > Miquel's analysis is pretty plausible, but I'm not sure if > he's confirmed it or not, Miquel? Even if it isn't happening > a lot, and something isn't bust it might be a good idea to > do this. Seems OK from a quick check. pdflush will block in get_request_wait() occasionally, but not at all often. Perhaps we could move the write_congested test into the mpage_writepages() inner loop but it hardly seems worth the risk. Maybe things are different on Miquel's clockwork controller. drivers/block/ll_rw_blk.c | 2 ++ fs/fs-writeback.c | 2 ++ 2 files changed, 4 insertions(+) diff -puN drivers/block/ll_rw_blk.c~pdflush-blockage-check drivers/block/ll_rw_blk.c --- 25/drivers/block/ll_rw_blk.c~pdflush-blockage-check 2004-02-19 18:16:33.000000000 -0800 +++ 25-akpm/drivers/block/ll_rw_blk.c 2004-02-19 18:16:33.000000000 -0800 @@ -1651,6 +1651,8 @@ static struct request *get_request_wait( if (!rq) { struct io_context *ioc; + WARN_ON(current_is_pdflush()); + io_schedule(); /* diff -puN fs/fs-writeback.c~pdflush-blockage-check fs/fs-writeback.c --- 25/fs/fs-writeback.c~pdflush-blockage-check 2004-02-19 18:22:25.000000000 -0800 +++ 25-akpm/fs/fs-writeback.c 2004-02-19 18:22:43.000000000 -0800 @@ -279,6 +279,8 @@ sync_sb_inodes(struct super_block *sb, s } if (wbc->nonblocking && bdi_write_congested(bdi)) { + if (current_is_pdflush()) + printk("saved pdflush\n"); wbc->encountered_congestion = 1; if (sb != blockdev_superblock) break; /* Skip a congested fs */ _ _______________________________________________ linux-lvm mailing list linux-lvm@redhat.com https://www.redhat.com/mailman/listinfo/linux-lvm read the LVM HOW-TO at http://tldp.org/HOWTO/LVM-HOWTO/