Re: todays git regression (2.6.32-04008.g3ff6a46): lot of device mapper warnings

Mike Snitzer
2009-12-10T00:56:47Z

On Wed, Dec 9, 2009 at 5:07 PM, Jens Axboe <jens.axboe@oracle.com> wrote:
> On Wed, Dec 09 2009, Jens Axboe wrote:
>> On Wed, Dec 09 2009, Heinz Diehl wrote:
>> > On 09.12.2009, Christian Borntraeger wrote:
>> >
>> > > with todays git I got a huge amount of warnings for device mapper:
>> > > device-mapper: uevent: version 1.0.3
>> > > device-mapper: ioctl: 4.15.0-ioctl (2009-04-01) initialised: dm-devel@redhat.com
>> > > device-mapper: table: 252:0: target device dasdf1 is misaligned: physical_block_size=4096, logical_block_size=4096, alignment_offset=0, start=196608
>> > [...]
>> >
>> > > The same devices produce no warning with a 2.6.32 vanilla kernel.
>> >
>> > I have exactly the same here...
>>
>> Can either one of you try and bisect it? I've cc'ed Martin, it's likely
>> one of the io stacking patches that causes this.
>
> Does this work?
>
> diff --git a/block/blk-settings.c b/block/blk-settings.c
> index dd1f1e0..0116d29 100644
> --- a/block/blk-settings.c
> +++ b/block/blk-settings.c
> @@ -554,11 +554,13 @@ int blk_stack_limits(struct queue_limits *t, struct queue_limits *b,
>                ret = -1;
>        }
>
> +#if 0
>        if (offset &&
>            (offset & (b->discard_granularity - 1)) != b->discard_alignment) {
>                t->discard_misaligned = 1;
>                ret = -1;
>        }
> +#endif
>
>        /* If top has no alignment offset, inherit from bottom */
>        if (!t->alignment_offset)

Jens,

It should be noted that Christian (original poster but cc's got
dropped) is using striped LVs.

Striped LVs use blk_limits_io_opt() via drivers/md/dm-stripe.c:stripe_io_hints()

Martin's change for discard alignment (commit: 86b37281) also splits
out the least common multiple code, that was exclusively used for
io_opt, to a new lcm() function in block/blk-settings.c

On the surface I thought this might be the reason for the warnings,
but Martin's lcm() looks perfectly fine; can't see why it would cause
these warnings to appear all of a sudden... but I figured I'd share.

It'll be interesting to see if the discard_granularity block you
#ifdef'd out helps either Christian or Heinz.

Mike