On 8/29/13 10:24 PM, Chris Murphy wrote:
>
> On Aug 29, 2013, at 9:19 PM, Eric Sandeen <sandeen@xxxxxxxxxxx> wrote:
>>
>> Argh sorry, how did I type THAT?
>>
>> # blockdev --getiomin --getioopt /dev/mapper/vg1-data
>
> conventional LV:
> [root@f19s ~]# blockdev --getiomin --getioopt /dev/mapper/vg1-data
> 512
> 0
>
> thinp LV:
>
> [root@f19s ~]# blockdev --getiomin --getioopt /dev/mapper/vg1-data
> 512
> 262144
>
> (Now I see two ways to get the same info.)
:)
ok so it says the stripe unit (minimum IO size) is 512...
Around line 2240, it does:
if (dsunit && !(BBTOB(dsunit) % blocksize) &&
dswidth && !(BBTOB(dswidth) % blocksize)) {
...
} else {
if (nodsflag)
dsunit = dswidth = 0;
essentially saying: If we autodetected a stripe unit or stripe width
which is not a multiple of the block size, silently set it to 0.
So we do that.
However, _just_ before this, we did:
calc_default_ag_geometry(blocklog, dblocks,
dsunit | dswidth, &agsize, &agcount);
when dsunit & dswidth were still set (to invalid values).
So we calculated it w/ stripe geom set, got more AGs, then zeroed
out the stripe geom.
I'm ... not sure how many bugs are here. ;) We shouldn't calculate
AG geometry until we've validated sunit/swidth, I think. But I'm not
convinced that dm-thinp's exported values make a lot of sense either.
-Eric
>
> Chris Murphy
>
|