On Mon, 08 Mar 2004 14:43:14, Joe Thornber wrote: > The patch below (applies to 2.6.4-rc2-mm1) is larger than your patch > but I think the locking semantics are more intuitive. > > Thoughts ? Ah, one more minor thing: > @@ -563,15 +584,16 @@ static int dm_request(request_queue_t *q > static int dm_any_congested(void *congested_data, int bdi_bits) > { > int r; > - struct mapped_device *md = congested_data; > + struct mapped_device *md = (struct mapped_device *) congested_data; > + struct dm_table *map = dm_get_table(md); > > - read_lock(&md->maplock); > - if (md->map == NULL || test_bit(DMF_BLOCK_IO, &md->flags)) > + if (!map || test_bit(DMF_BLOCK_IO, &md->flags)) > + /* FIXME: shouldn't suspended count a congested ? */ > r = bdi_bits; I didn't test for DMF_SUSPENDED since it is only set when DMF_BLOCK_IO is set too. And "r = bdi_bits" is the return value for "congested". So I think that FIXME can be removed ? Mike.