[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Pine.LNX.4.64.0811100914500.14825@hs20-bc2-1.build.redhat.com>
Date: Mon, 10 Nov 2008 09:19:21 -0500 (EST)
From: Mikulas Patocka <mpatocka@...hat.com>
To: Christoph Hellwig <hch@...radead.org>
cc: Chandra Seetharaman <sekharan@...ibm.com>,
Alasdair G Kergon <agk@...hat.com>,
dm-devel <dm-devel@...hat.com>, linux-kernel@...r.kernel.org,
axboe@...nel.dk
Subject: Re: Queue upcall locking (was: [dm-devel] [RFC][PATCH] fix
dm_any_congested() to properly sync up with suspend code path)
On Mon, 10 Nov 2008, Christoph Hellwig wrote:
> On Mon, Nov 10, 2008 at 08:11:51AM -0500, Mikulas Patocka wrote:
> > For upstream Linux developers: you are holding a spinlock and calling
> > bdi*_congested functions that can take indefinite amount of time (there
> > are even users reporting having 50 disks in one logical volume or so). I
> > think it would be good to move these calls out of spinlocks.
>
> Umm, they shouldn't block that long, as that completely defeats their
> purpose. These functions are mostly used to avoid throwing more I/O at
> a congested device if pdflush could do more useful things instead. But
> if it blocks in those functions anyway we wouldn't have to bother using
> them. Do you have more details about the uses cases when this happens
> and where the routines spend so much time?
For device mapper, congested_fn asks every device in the tree and make OR
of their bits --- so if the user has 50 devices, it asks them all.
For md-linear, md-raid0, md-raid1, md-raid10 and md-multipath it does the
same --- asking every device.
If you have a better idea how to implement congested_fn, say it.
Mikulas
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists