[dm-devel] [PATCH v2] dm table: do not allow queue limits that will exceed hardware limits
Mike Snitzer
snitzer at redhat.com
Tue Sep 18 13:02:26 UTC 2012
On Tue, Sep 18 2012 at 7:40am -0400,
Alasdair G Kergon <agk at redhat.com> wrote:
> On Mon, Sep 17, 2012 at 03:44:29PM -0400, David Jeffery wrote:
> > @@ -2425,6 +2425,15 @@ struct dm_table *dm_swap_table(struct mapped_device *md, struct dm_table *table)
>
> > + if (limits.max_sectors == UINT_MAX)
>
> Specifically, I don't want dm.c to be peering directly into limits.
That's fine. I agree, it is wrong to have DM code be so fragile
relative to potential block layer changes.
> It just called calculate_queue_limits() above that.
> Why is calculate_queue_limits getting the limits wrong?
Because, in the mpath case David reported, there are no longer any
devices in the table. So .iterate_devices doesn't have anything to work
with; which means the blk_set_stacking_limits()' limits are left
unchanged (e.g. limits.max_sectors is UINT_MAX).
I'll try to think of a way to get dm_calculate_queue_limits() to detect:
1) that there are no devices in the table
2) that there is a live table that already has established limits
3) if 1 && 2, then use existing limits (should address David's request)
More information about the dm-devel
mailing list